アウトバウンド 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_…)を使用します。偽造リクエストを拒否するため、処理前に必ず検証してください。
リプレイ対策
署名は真正性を証明しますが、新しさは証明しません。次も併せて強制してください:- 処理した各イベントの
event_idを保存し、24 時間以内の重複を拒否します(再送は同じevent_idを再利用するため、ハンドラーの冪等性も担保されます)。 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 内のフィールドを使って自社側で絞り込んでください。