Skip to main content
Webhook は、イベント発生と同時にあなたの HTTPS エンドポイントへイベントを送信します。ポーリングは不要です。登録と管理は Webhook API で行います。
アウトバウンド Webhook は open_api_advanced ライセンスと、webhooks:manage スコープを持つキーが必要です。

イベント

call.failed と ivr.trigger は Webhook の登録時に受け付けられますが、まだ発生元がありません — 現時点では購読しても何も配信されません。webhook.test は Webhook API の「Webhook のテスト」エンドポイントからのみ送信され、購読することはできません。 文字起こしや要約の全文は GET /calls/{callId} で取得してください。

ペイロードの形

各配信は Content-Type: application/json の POST で、次のエンベロープを持ちます:

リクエストヘッダー

署名を検証する

X-Comdesk-Signature は、sha256= に続けて、生のリクエストボディの HMAC-SHA256 を 16 進数で表したものです。鍵には、Webhook 作成時に一度だけ返される Webhook シークレット(whsec_…)を使用します。偽造リクエストを拒否するため、処理前に必ず検証してください。

リプレイ対策

署名は真正性を証明しますが、新しさは証明しません。次も併せて強制してください:
  1. 処理した各イベントの event_id を保存し、24 時間以内の重複を拒否します(再送は同じ event_id を再利用するため、ハンドラーの冪等性も担保されます)。
  2. timestamp が自社の再送許容範囲よりはるかに古い古いイベントを拒否します。再送は元の timestamp を保持し、最大で約 27 時間後に届くことがあるため、再送された配信を破棄してもよい場合を除き、短い(例:5 分の)ウィンドウは適用しないでください。

配信と再送

Comdesk は https:// の URL にのみ配信し、リダイレクトには従いません。エンドポイントが 10 秒以内に応答しない、または 2xx 以外のステータスを返した場合、配信は再送されます。各イベントの試行回数は合計で最大 6 回です: イベントを受理したら(キューに永続化したら)すぐに 2xx を返し、その後に非同期で処理してください。

自動無効化

失敗した試行は再送も含めてすべて Webhook の consecutive_failures カウンターを増やし、配信が 1 回でも成功すると 0 にリセットされます。10 回連続で失敗すると、Webhook は is_active: false に設定され、イベントを受信しなくなります。エンドポイントを修正した後、PUT /webhooks/{webhookId} に {"is_active": true} を送って再度有効化してください。
配信フィルター(filters.project_ids、filters.call_status)は登録できますが、まだ適用されていません — 購読したイベントはすべて配信されます。当面は data 内のフィールドを使って自社側で絞り込んでください。