OpenTelemetry 追踪
OpenTelemetry 追踪
以 OTLP JSON 格式将 OpenTelemetry 追踪导出到可观测性平台。
ElevenLabs Agents 可将对话导出为编码为 OTLP JSON(resourceSpans)的 OpenTelemetry 追踪数据。可将其转发至 Datadog、Grafana Tempo、Honeycomb 或任何支持接收 OTLP 的后端。
ElevenLabs 不会将追踪数据直接推送到 OTLP 收集器。你会通过 webhook、API 或监控 WebSocket 收到 OTLP 格式的 JSON,然后将其转发至后端。
概览
可从 3 个入口导出追踪数据。它们共用相同的每个对话追踪 ID和 elevenlabs.* 属性命名。通话后/GET(基于转写记录)与监控(基于事件)的 span 结构和时间信息有所不同。
导出入口
选择入口
- 将所有已完成通话导入数据仓库:通话后 webhook
- 一次性导出或修复:使用
format=opentelemetry的 GET 对话请求 - 实时主管界面或告警:监控 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 开启 Enable retries 时,转写记录 webhook(包括 OpenTelemetry)才会重试。瞬时错误(5xx、429、408)最多重试 5 次;4xx 不会重试。音频 webhook 永不重试。反复失败可能会自动禁用 webhook。详见通话后 webhook和 HIPAA 例外情况。
传送
追踪结构
每次传送都是一条完整追踪数据:一个根 span 加上子 span。
如果传送内容包含推理摘要,智能体响应 span 会包含 elevenlabs.reasoning_content。
时间信息来自转写记录的 time_in_call_secs 和通话元数据。当通话并非以正常客户端断开结束时,根 span 将 elevenlabs.source 设为 post_call_webhook,状态设为 ERROR。
GET 对话
在获取对话请求中指定 OpenTelemetry 格式,即可收到与通话后 OpenTelemetry webhook 相同的 otlp_traces 对象,以及完整对话模型。
需要具备 CONVAI_READ 权限范围的 API 密钥。使用 format=json(默认值)时,会省略 otlp_traces。
预期的 span 名称包括 elevenlabs.conversation、elevenlabs.recv.user_transcript 和 elevenlabs.recv.agent_response。
监控 WebSocket
实时监控需要企业版工作区或 realtime-monitoring 功能标志。有关配置、控制命令和访问要求,请参阅实时监控。
在对话进行时,以 OTLP JSON 流式传输 OpenTelemetry 追踪数据。每条消息都是一个小型 resourceSpans 批次,而非一条通话结束时的完整追踪数据。
身份验证需要 CONVAI_WRITE、xi-api-key(或 Authorization),以及智能体工作区的 EDITOR 访问权限。请在对话开始后连接。
会话协议
- 使用身份验证请求头连接。
- 接收
{"type": "connected"}。 - 接收根 span 批次(
elevenlabs.conversation,elevenlabs.source=monitoring)。 - 接收缓存历史记录(约最近 100 个事件),随后接收
{"type": "history_complete"}。 - 事件发生时接收实时 span 批次。
使用 events_format=json(默认值)时,WebSocket 返回原始客户端事件,而非 resourceSpans。控制命令与实时监控一致。
追踪结构
结构化事件会映射到专用属性(例如 elevenlabs.user.text、elevenlabs.agent.text)。未知事件使用包含截断 JSON 的 elevenlabs.event.data。
不要假设事件顺序与说话顺序一致。使用相同的 traceId 将实时 span 与通话后数据关联。
连接示例
OTLP JSON 结构
所有入口的 OpenTelemetry 追踪数据均使用相同的 OTLP JSON 批处理布局:
限制
- 不支持直接推送到 OTLP gRPC 端点。
- 负载是采用 OTLP 导出格式的 JSON,而非在线传输的原始 protobuf。