OpenTelemetryトレース
OpenTelemetryトレース
OpenTelemetryトレースをOTLP JSONとしてオブザーバビリティスタックにエクスポートします。
ElevenLabs Agentsは、OTLP JSON(resourceSpans)としてエンコードされたOpenTelemetryトレースを会話からエクスポートできます。Datadog、Grafana Tempo、Honeycomb、またはOTLPを取り込む任意のバックエンドに転送できます。
ElevenLabsがトレースをOTLPコレクターへ直接送信することはありません。Webhook、API、またはモニタリングWebSocketからOTLP形式のJSONを受け取り、バックエンドに転送します。
概要
3つの方法でトレースをエクスポートできます。いずれも会話ごとに同じトレースIDを共有し、elevenlabs.*属性名を使用します。スパンの形式とタイミングは、通話後/GET(トランスクリプトベース)とモニタリング(イベントベース)で異なります。
エクスポート方法
方法の選び方
- データウェアハウス内のすべての完了した通話:通話後Webhook
- 単発のエクスポートまたは修復:
format=opentelemetryを指定したGET会話 - ライブのスーパーバイザーUIまたはアラート:モニタリングWebSocket
- 後から完全な忠実度のタイムラインを取得:通話後WebhookまたはGET会話
- ツール、MCP、ガードレールのイベントを発生時に取得:モニタリングWebSocket
traceIdまたはelevenlabs.conversation_idを使って、各方法のデータを結合します。ライブ運用にはモニタリング、永続的な分析にはWebhook、バックフィルにはGETを組み合わせてください。
どの方法でも、OTLP対応のコレクターまたはオブザーバビリティベンダーが必要です。通話後Webhookには、ワークスペースのWebhookエンドポイントが必要です。GET APIとモニタリングWebSocketには、それぞれ固有のAPIキースコープと設定が必要です。以下のセクションを参照してください。
通話後Webhook
会話が終了すると、通話後Webhookが設定され、eventsにtranscriptが含まれ、transcript_formatがopentelemetryに設定されている場合、ElevenLabsはPOSTリクエストを送信します。
Webhookのtypeはpost_call_transcription_otelです(JSONトランスクリプトを返すpost_call_transcriptionではありません)。
Webhookペイロード
OpenTelemetryトランスクリプトを有効にする
ダッシュボードで設定
CLIで設定
APIで設定
通話後Webhookを接続する
Agents設定を開き、Webhookを通話後Webhookとして割り当て、Transcriptイベントを有効にして、OpenTelemetry transcript payloadsをオンにします。

OpenTelemetryトランスクリプトWebhookにはオーディオは含まれません。録音が必要な場合はpost_call_audioを使用してください。
成功時は2xxを返します。4xxと5xxは失敗として扱われます。
トランスクリプトWebhook(OpenTelemetryを含む)の再試行は、ワークスペースWebhookでEnable retriesがオンの場合にのみ適用されます。一時的なエラー(5xx、429、408)は最大5回再試行されますが、4xxは再試行されません。オーディオWebhookは再試行されません。失敗が繰り返されると、Webhookが自動的に無効になる場合があります。詳細とHIPAAの例外については、通話後Webhookを参照してください。
配信
トレースの構造
各配信は、ルートスパンと子スパンからなる完全な1つのトレースです。
配信に推論サマリーが含まれている場合、エージェント応答スパンにはelevenlabs.reasoning_contentが含まれます。
タイミングはトランスクリプトのtime_in_call_secsと通話メタデータから取得されます。ルートスパンではelevenlabs.source = post_call_webhookが設定され、通話が通常のクライアント切断で終了しなかった場合はステータスがERRORになります。
GET会話
会話を取得でOpenTelemetry形式をリクエストすると、通話後OpenTelemetry Webhookと同じotlp_tracesオブジェクトに加え、完全な会話モデルを取得できます。
CONVAI_READを持つAPIキーが必要です。format=json(デフォルト)の場合、otlp_tracesは省略されます。
想定されるスパン名には、elevenlabs.conversation、elevenlabs.recv.user_transcript、elevenlabs.recv.agent_responseがあります。
モニタリングWebSocket
リアルタイムモニタリングには、エンタープライズワークスペースまたはrealtime-monitoring機能フラグが必要です。設定、制御コマンド、アクセス要件については、リアルタイムモニタリングを参照してください。
会話の進行中に、OpenTelemetryトレースデータをOTLP JSONとしてストリーミングします。各メッセージは小さなresourceSpansバッチであり、通話終了時の単一トレースではありません。
認証にはCONVAI_WRITE、xi-api-key(またはAuthorization)、エージェントワークスペースへのEDITORアクセスが必要です。会話の開始後に接続してください。
セッションプロトコル
- 認証ヘッダーを付けて接続します。
{"type": "connected"}を受信します。- ルートスパンバッチ(
elevenlabs.conversation、elevenlabs.source=monitoring)を受信します。 - キャッシュされた履歴(直近約100イベント)を受信し、その後
{"type": "history_complete"}を受信します。 - イベント発生時にライブスパンバッチを受信します。
events_format=json(デフォルト)の場合、WebSocketはresourceSpansではなく生のクライアントイベントを返します。制御コマンドはリアルタイムモニタリングに準拠します。
トレースの構造
構造化イベントは専用属性にマッピングされます(例:elevenlabs.user.text、elevenlabs.agent.text)。不明なイベントでは、切り詰められたJSONを含むelevenlabs.event.dataが使用されます。
イベント順序が発話順序と一致するとは限りません。同じtraceIdを使用して、ライブスパンと通話後データを関連付けてください。
接続例
OTLP JSON構造
すべての方法からのOpenTelemetryトレースは、同じOTLP JSONバッチレイアウトを共有します。
制限事項
- OTLP gRPCエンドポイントへの直接プッシュはできません。
- ペイロードはOTLPエクスポート形式のJSONであり、ネットワーク上の生protobufではありません。