Webhook 概要
Webhook は、Wipple CPaaS からお客様のアプリケーションへ送信される HTTP リクエストです。プラットフォームは Webhook を通じて、新規通話の通知、次に何をすべきかの問い合わせ、発生した事象の報告を行います。お客様のアプリケーションは Function の JSON 配列で応答するか、追加の指示が不要な場合は空のボディで応答します。
Webhook の種類
| Webhook | 設定場所 | 送信タイミング |
|---|---|---|
| 新規通話 (POST) / 新規通話 (GET) | アプリケーション (コールフック) | 新しい着信通話が到着したとき、または REST API で作成した発信通話が応答されたとき |
| コールステータスフック | アプリケーション (コールステータスフック) | 通話のステータスが変化したとき (ringing、in-progress、completed など) |
| アクションフック | 個々の Function (actionHook、dtmfHook、eventHook など) |
Function が完了したとき、またはイベントを生成したとき。ペイロードについては各 Function のページを参照してください |
| クライアント認証 | アカウント (登録フック) | SIP または WebRTC クライアントが登録を試みたとき |
| クライアントツール要求 | agent または llm Function (toolHook) |
AI エージェントが、お客様のアプリケーションが実装するクライアント側ツールを呼び出したとき |
共通プロパティ
通話に関連するすべての Webhook には、お客様自身のレコードと関連付けるために必要な識別子が含まれます。
call_sid: 通話レグの一意の識別子です。REST API で通話を更新または終了する際に使用します。account_sidとapplication_sid: 通話が属するアカウントとアプリケーションです。direction、from、to、caller_name: 誰が誰に発信しているかを示します。call_statusとsip_status: 通話の現在の状態と最新の SIP ステータスコードです。
アクションフックには Function 固有のプロパティが追加されます。たとえば、gather Function で収集した digits や speech の結果、dial Function 実行後の発信先レグの call_status と duration などです。
HTTP メソッドと URL
フック URL は絶対 URL (https://{yourserver}/menu) でも相対 URL (/menu) でも構いません。相対 URL は、アプリケーションのコールフック URL を基準に解決されます。デフォルトのメソッドは JSON ボディを伴う POST です。フックを GET で設定した場合、同じプロパティが代わりにクエリパラメータとして送信されます。
認証
フックにユーザー名とパスワードを設定すると、Wipple CPaaS はそのフックへのすべてのリクエストに Authorization: Basic <base64(username:password)> ヘッダーを含めます。お客様のアプリケーションはこのヘッダーを検証し、有効な認証情報を持たないリクエストを拒否してください。
応答
- できるだけ速やかに HTTP
200で応答してください。時間のかかる処理は非同期で実行してください。 - プラットフォームに新しい指示を与えるには、Function の JSON 配列を返します。前回の応答でまだキューに残っている Function は破棄され、置き換えられます。
- 現在のアプリケーションをそのまま継続させるには、空のボディまたは空の配列
[]を返します。 - ステータス専用のフック (コールステータスフック、
dtmfHook、eventHookなど) では、応答内の Function は無視されます。空のボディを伴う200応答で十分です。
WebSocket による代替
HTTP の代わりに、アプリケーション URL を wss:// で始めると、Wipple CPaaS はお客様のサーバーへ WebSocket 接続を開き、その単一の接続上でメッセージとして同じ JSON ペイロードをやり取りします。プロパティ名と Function の定義は同一です。