通話後Webhook
通話の終了と分析完了をWebhookで通知します。
概要
通話後Webhookを使用すると、分析完了後に通話に関する詳細情報を受け取れます。有効にすると、ElevenLabsは包括的な通話データを含むPOSTリクエストを指定したエンドポイントに送信します。
ElevenLabsは、次の3種類の通話後Webhookに対応しています。
- 文字起こしWebhook(
post_call_transcription):文字起こし、分析結果、メタデータを含む完全な会話データ - オーディオWebhook(
post_call_audio):会話全体のbase64エンコードされたオーディオを含む最小限のデータ - 通話開始失敗Webhook(
call_initiation_failure):失敗理由やメタデータを含む、通話開始に失敗した試行に関する情報
通話後Webhookを有効にする
通話後Webhookは、ElevenAgentsの設定ページからワークスペース内のすべてのエージェントに対して有効にできます。

通話後Webhookは、成功とみなされるために200ステータスコードを返す必要があります。連続して10回以上失敗し、最後の正常な配信から7日以上経過している場合、または正常に配信されたことが一度もない場合、繰り返し失敗するWebhookは自動的に無効になります。
通話後Webhookは失敗時に自動で再試行できます。Webhookの再試行を参照してください。
認証
受信側は、すべての受信Webhookを検証することが重要です。Webhookは現在、HMAC署名による認証に対応しています。HMAC認証は次の手順で設定します。
- Webhookの作成時に生成された共有シークレットを安全に保存する
- SDKを使用してエンドポイントでElevenLabs-Signatureヘッダーを検証する
JavaScript SDKではconstructEventを、Python SDKでは**rawBody、sig_header、secret**を指定するconstruct_eventを利用できます(Pythonではpayload/signatureという名前ではありません)。どちらも署名の検証、タイムスタンプの検証、JSONペイロードの解析を行います。
Python
JavaScript
FastAPIを使用したWebhookハンドラーの例:
IP許可リスト
セキュリティを強化するために、ElevenLabsの静的送信IPを許可リストに追加できます。IPアドレスの完全な一覧は、IP許可リストを参照してください。
IP許可リストとHMAC署名検証を組み合わせることで、多層的なセキュリティを実現できます。
Webhookレスポンスの構造
ElevenLabsは、データ構造がそれぞれ異なる3種類の通話後Webhookを送信します:
文字起こしWebhook(post_call_transcription)
完全な文字起こし、分析結果、メタデータを含む包括的な会話データです。
トップレベルのフィールド
データオブジェクトの構造
dataオブジェクトには以下が含まれます:
オーディオWebhook(post_call_audio)
会話全体のオーディオをBase64エンコードしたMP3を含む、最小限のデータです。
トップレベルのフィールド
データオブジェクトの構造
dataオブジェクトには次の項目のみが含まれます:
オーディオWebhookには、上記の3つのフィールドのみが含まれます。文字起こしデータ、 メタデータ、分析結果、その他の会話の詳細は含まれません。
通話開始失敗Webhook(call_initiation_failure)
失敗の理由や通信プロバイダーのメタデータなど、電話通話の開始試行に関する情報が含まれます。
通話開始失敗Webhookイベントは、接続エラー、ユーザーによる通話の拒否、またはユーザーが通話に応答しなかったために 通話を開始できなかった場合に送信されます。通話が留守番電話につながった場合、または自動サービスが 応答した場合は、通話は正常に開始されているため、通話開始失敗Webhookは送信されません。
トップレベルのフィールド
データオブジェクトの構造
dataオブジェクトには以下が含まれます:
メタデータオブジェクトの構造
metadataオブジェクトの構造は、発信通話がTwilio経由かSIPトランキング経由かによって異なります。このオブジェクトには、両者を区別するtypeフィールドと、プロバイダー固有の詳細を含むbodyフィールドがあります。
SIPメタデータ(type: "sip"):
SIPメタデータのbodyオブジェクトには以下が含まれます:
Twilioメタデータ(type: "twilio"):
Webhookペイロードの例
文字起こしWebhookの例
オーディオWebhookの例
通話開始失敗Webhookの例
Twilioメタデータの例
SIPメタデータの例
オーディオWebhookの配信
オーディオWebhookは文字起こしWebhookとは別に配信され、会話を識別するために必要な基本フィールドと、Base64エンコードされたオーディオデータのみを含みます。
オーディオWebhookは、Webhook設定の「オーディオデータを送信」トグルで有効または無効にできます。 この設定は、ワークスペースレベル(ElevenAgents設定内)と、エージェントレベル(個々のエージェントのWebhook上書き設定内)の 両方で構成できます。
ストリーミング配信
大きなオーディオファイルを効率的に処理するため、オーディオWebhookはtransfer-encoding: chunkedヘッダーを使用するストリーミングHTTPリクエストとして配信されます。各リクエストは5分後にタイムアウトします。
再試行
Webhookで再試行を有効にすると、失敗したオーディオ配信は文字起こしWebhookと同じスケジュールで再試行されます。再試行では完全なオーディオペイロードが再送されるため、conversation_idで重複を除外してください。スケジュール、再試行可能なエラー、オーディオサイズの上限については、Webhookの再試行を参照してください。
オーディオWebhookの処理
オーディオWebhookはチャンク転送エンコーディングで配信されるため、ストリーミングデータを適切に処理する必要があります:
オーディオWebhookは大きなファイルになる場合があるため、Webhookエンドポイントがストリーミングリクエストを処理でき、 十分なメモリ/ストレージ容量を備えていることを確認してください。オーディオはMP3形式で配信されます。
ユースケース
通話後の自動フォローアップ
通話後Webhookを使用すると、通話終了直後にトリガーされる自動ワークフローを構築できます。実用的な活用例をいくつか紹介します:
CRMインテグレーション
通話が完了するとすぐに、会話データで顧客関係管理システムを更新します:
ステートフルな会話
状態を保存・取得することで、複数回のやり取りにわたって会話コンテキストを維持します:
- 通話開始時に、ユーザーIDを動的変数として渡します。
- 通話終了時に、dynamic_variablesから抽出したユーザーIDに基づいて会話データをデータベースに保存するよう、Webhookエンドポイントを設定します。
- ユーザーが再度通話した際に、このコンテキストを取得し、{{previous_topics}}動的変数として新しい会話に渡すことができます。
- これにより、エージェントが以前のやり取りを「記憶」しているようなシームレスな体験を実現できます。