通話後Webhook
通話後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ステータスコードを返す必要があります。Webhookは、連続して10回以上失敗し、最後の 配信成功から7日以上経過している場合、または一度も正常に配信されていない場合に自動で無効になります。
通話後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オブジェクトの構造
dataオブジェクトには以下が含まれます。
オーディオWebhook(post_call_audio)
base64エンコードされたMP3形式の完全な会話オーディオを含む、最小限のデータです。
トップレベルのフィールド
dataオブジェクトの構造
dataオブジェクトには、以下のみが含まれます。
オーディオWebhookには、上記の3つのフィールドのみが含まれます。文字起こしデータ、 メタデータ、分析結果、その他の会話の詳細は含まれません。
通話開始失敗Webhook(call_initiation_failure)
失敗理由や電話プロバイダーのメタデータなど、電話通話の開始試行に関する情報が含まれます。
通話開始失敗Webhookイベントは、接続エラー、ユーザーによる通話の拒否、またはユーザーが 応答しなかったために通話を開始できなかった場合に送信されます。通話がボイスメールにつながった場合や 自動応答サービスが応答した場合、通話は正常に開始されているため、通話開始失敗Webhookは送信されません。
トップレベルのフィールド
dataオブジェクトの構造
dataオブジェクトには以下が含まれます。
metadataオブジェクトの構造
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リクエストとして配信されます。
オーディオWebhookの処理
オーディオWebhookはチャンク転送エンコーディングで配信されるため、ストリーミングデータを適切に処理する必要があります。
オーディオWebhookは大きなファイルになる場合があるため、Webhookエンドポイントがストリーミングリクエストを処理でき、十分なメモリとストレージ容量を備えていることを確認してください。オーディオはMP3形式で配信されます。
ユースケース
通話後の自動フォローアップ
通話後Webhookを使うと、通話終了直後にトリガーされる自動ワークフローを構築できます。実用的な活用例をいくつか紹介します。
CRMインテグレーション
通話が完了したらすぐに、会話データで顧客関係管理システムを更新します。
ステートフルな会話
状態を保存・取得して、複数回のやり取りにわたり会話コンテキストを維持します。
- 通話の開始時に、動的変数としてユーザーIDを渡します。
- 通話の終了時に、dynamic_variablesから抽出したユーザーIDに基づき、会話データをデータベースに保存するようWebhookエンドポイントを設定します。
- ユーザーが再度電話をかけた際は、このコンテキストを取得し、新しい会話の{{previous_topics}}動的変数に渡せます。
- これにより、エージェントが以前のやり取りを「記憶」しているようなシームレスな体験を実現できます。