Webhook
WebhookにはFeedbackPulseテナントでイベントが発生したときにリアルタイムのHTTP通知を受け取ることができます。
セットアップ
ダッシュボード経由
- 設定 > インテグレーション に移動
- Webhook URL を入力
- サブスクライブするイベントを選択
- オプションでHMAC署名検証用のシークレットを設定
- 保存
API経由
PUT /api/v2/webhooks/config
{
"url": "https://your-app.com/webhooks/feedbackpulse",
"events": ["submission.created", "submission.status_changed"],
"secret": "your_shared_secret"
}
Webhookペイロード
イベントが発生すると、FeedbackPulseはあなたのURLにPOSTリクエストを送信します:
{
"event": "submission.created",
"timestamp": "2024-03-15T10:30:00Z",
"data": {
"id": 42,
"campaign_id": 1,
"star_rating": 5,
"text_feedback": "Love this product!",
"customer_name": "Jane Doe",
"status": "pending"
}
}
ヘッダー
Content-Type: application/json
X-FeedbackPulse-Signature: sha256=abc123...
X-FeedbackPulse-Event: submission.created
署名の検証
Webhookシークレットを設定した場合、署名を検証します:
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_FEEDBACKPULSE_SIGNATURE'];
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(403);
exit('Invalid signature');
}
対応エンドポイント
FeedbackPulseは以下に対してペイロードを自動検出・フォーマットします:
| サービス | URLパターン | 形式 |
|---|---|---|
| Slack | hooks.slack.com/* | Slack Block Kit形式 |
| Discord | discord.com/api/webhooks/* | Discordエンベッド形式 |
| カスタム | 任意のHTTPS URL | 生のJSONペイロード |
SSRF保護
WebhookURLはサーバーサイドリクエストフォージェリを防ぐために検証されます:
localhost、127.0.0.1、0.0.0.0はブロック- プライベートIPレンジ(10.x、172.16-31.x、192.168.x)はブロック
- 公開HTTPSのURLのみ許可
Webhookログ
配信履歴を表示します: