メインコンテンツまでスキップ

Webhook

WebhookにはFeedbackPulseテナントでイベントが発生したときにリアルタイムのHTTP通知を受け取ることができます。


セットアップ

ダッシュボード経由

  1. 設定 > インテグレーション に移動
  2. Webhook URL を入力
  3. サブスクライブするイベントを選択
  4. オプションでHMAC署名検証用のシークレットを設定
  5. 保存

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パターン形式
Slackhooks.slack.com/*Slack Block Kit形式
Discorddiscord.com/api/webhooks/*Discordエンベッド形式
カスタム任意のHTTPS URL生のJSONペイロード

SSRF保護

WebhookURLはサーバーサイドリクエストフォージェリを防ぐために検証されます:

  • localhost127.0.0.10.0.0.0 はブロック
  • プライベートIPレンジ(10.x、172.16-31.x、192.168.x)はブロック
  • 公開HTTPSのURLのみ許可

Webhookログ

配信履歴を表示します:

ダッシュボード経由

設定 > インテグレーション > Webhookログ

専用のWebhookログページは /webhooks/logs でも利用可能で、レスポンス詳細とフィルタリングオプションを含む完全な配信履歴を提供します。イベントタイプ、ステータスコード、日付範囲でフィルタリングでき、各配信試行の完全なリクエストペイロードとレスポンスボディを確認できます。

管理者Webhookログビューア

スーパー管理者は /admin/webhook-logs でプラットフォーム全体のWebhookログビューアにアクセスできます。これにより全テナントのWebhook配信を確認でき、インテグレーション問題の診断やプラットフォームの健全性監視に役立ちます。

API経由

GET /api/v2/webhooks/logs

各ログエントリには以下が表示されます:

  • イベントタイプ
  • URL
  • レスポンスコード
  • 送信したペイロード
  • レスポンスボディ
  • タイムスタンプ

次のステップ