跳到导航

SIP 中继

通过 SIP 中继将现有电话系统连接到 ElevenLabs Agents

概述

SIP(会话发起协议)中继可让你将现有电话基础设施直接连接到 ElevenLabs Agents。 通过此集成,所有客户都能在使用现有电话系统的同时,利用 ElevenLabs 先进的语音 AI 功能。

使用 SIP 中继,你可以:

  • 将专用交换机(PBX)或支持 SIP 的电话系统连接到 ElevenLabs 语音 AI 平台
  • 无需更改现有电话基础设施,即可将通话路由到 AI 智能体
  • 处理呼入和呼出通话
  • 利用加密 TLS 传输和媒体加密,提升安全性

刚接触 SIP?请查看 SIP 参考,了解本指南中使用的 SIP、SBC、SDP、RTP 和 MTU 等术语的通俗定义。

静态 IP SIP 服务器

ElevenLabs 为安全策略要求进行 IP 允许列表配置的企业客户提供具有静态 IP 地址的 SIP 服务器。

静态 IP 基础设施使用一个 /24 IP 地址块,包含分布在多个地区(美国、欧盟、印度和新加坡)的 256 个地址。必须在防火墙配置中允许整个 /24 地址块。

对于默认(美国/国际)环境,请使用 sip-static.rtc.elevenlabs.io 作为 SIP 端点。 对于隔离区域,请使用 sip-static.rtc.<region>.residency.elevenlabs.io,其中 <region> 是数据驻留区域代码(例如 eu、in 或 sg)。使用这些端点时,所有流量将仅来自该区域。无法按区域进行特定允许列表配置。可用区域列表请参阅数据驻留。

此功能适用于企业版账户,也可在企业版试用期间启用以供测试。如需申请访问权限,请发送邮件至 support@elevenlabs.io 联系支持团队,或联系客户经理。欲了解更多信息,请联系销售。

SIP 中继的工作原理

SIP 中继会在电话基础设施与 ElevenLabs 平台之间建立直接连接:

  1. 呼入通话:SIP 中继中的通话会通过已配置的 SIP INVITE 地址路由到 ElevenLabs 平台。
  2. 呼出通话:由 ElevenLabs 发起的通话会通过已配置的主机名路由到 SIP 中继,让智能体能够拨打外线电话。
  3. 身份验证:信令连接安全通过摘要身份验证(用户名/密码)或基于信令源 IP 的访问控制列表(ACL)身份验证来保障。
  4. 信令和媒体:初始通话建立过程(信令)支持多种传输协议,包括用于加密通信的 TLS。通话建立后,实际音频数据(RTP 流)可根据媒体加密设置进行加密。

传输安全:证书和密码套件

使用 TLS 传输时,双方会在交换任何 SIP 信令前执行 TLS 握手。在握手期间,双方会验证证书并协商密码套件。接受连接的一方充当 TLS 服务器并提供证书;发起连接的一方充当 TLS 客户端并验证证书。ElevenLabs 要求使用 TLS 1.2 或更高版本。

角色取决于通话方向:

  • 呼入 ElevenLabs 的通话:系统会发起连接,因此 ElevenLabs 充当 TLS 服务器。ElevenLabs 会提供适用于 sip.rtc.elevenlabs.io 的有效证书,系统则作为 TLS 客户端验证该证书。
  • 从 ElevenLabs 呼出的通话:ElevenLabs 会向所配置的地址发起连接,因此 SIP 服务器或 SBC 会充当 TLS 服务器。系统必须提供有效且受信任的证书,ElevenLabs 将作为 TLS 客户端验证该证书。

确保双方信任彼此的证书,并至少共享一个通用密码套件。否则,TLS 握手会在通话建立前失败。有关这些术语的定义,请参阅 SIP 参考。

后续连接

当原始连接已关闭时,某些对话内请求(如 BYE 或 REFER)可能需要建立新的 TLS 连接。这些后续连接的证书行为与初始通话建立不同:

  • 连接到 ElevenLabs 的后续连接:系统会与响应中返回的 Contact 标头地址建立连接,该地址会解析为形式为 <ip>.hosts.rtc.elevenlabs.io 的特定 SIP 服务器。该服务器会提供适用于 *.hosts.rtc.elevenlabs.io 的证书,系统则作为 TLS 客户端验证该证书。
  • 来自 ElevenLabs 的后续连接:当 ElevenLabs 为 BYE 或 REFER 发起 TLS 连接时,会连接到最顶部 Via 标头中的地址,该地址通常是 IP 地址。系统通常返回适用于完全限定域名(FQDN)而非该 IP 地址的证书。若要验证此证书,请在电话号码设置中配置 远程域名 字段。如果收到的证书所适用的任一域名与配置的远程域名匹配,验证便会成功;否则将失败。

如果通过 TLS 发送的呼出 BYE 或 REFER 请求未通过证书验证,请将 SIP 服务器证书签发所对应的 FQDN 添加到电话号码设置中的 远程域名 字段。

向 ElevenLabs SIP 中继发起通话

向 ElevenLabs 平台发起通话时,需要使用正确的 SIP URI 格式。ElevenLabs SIP 中继 URI 取决于希望用于信令的传输方式:

  • TCP:sip:sip.rtc.elevenlabs.io:5060;transport=tcp
  • TLS:sip:sip.rtc.elevenlabs.io:5061;transport=tls
  • UDP:sip:sip.rtc.elevenlabs.io:5060;transport=udp(实验性功能;仅用于测试,不适用于生产环境)

要发起通话,请构建包含标识符的完整 SIP URI。例如,要通过 TCP 呼叫电话号码 +19991234567:

sip:+19991234567@sip.rtc.elevenlabs.io:5060

其中:

  • +19991234567 是标识符(通常是 E.164 格式的电话号码)
  • 标识符也可以是任意字符串值,例如 1000 或 john

常见错误:请勿直接向不含标识符的 sip@sip.rtc.elevenlabs.io:5060 发起通话。SIP URI 必须在 sip: 前缀之后、@ 符号之前包含电话号码或标识符。

SIP URI 格式:SIP URI 遵循 sip:identifier@domain:port 格式,其中标识符是正确路由通话所必需的。

要求

设置 SIP 中继前,请确保具备:

  1. 兼容 SIP 的 PBX 或电话系统
  2. 要连接到 ElevenLabs 的电话号码
  3. SIP 中继配置的管理员访问权限
  4. 允许 SIP 流量的适当防火墙设置
  5. TLS 支持:为提升安全性,请确保 SIP 中继提供商支持 TLS 传输
  6. 音频编解码器兼容性: 系统必须至少支持 G.722 或 G.711(PCMU 或 PCMA)音频编解码器之一,或者能够自行对音频进行重新采样。这与为智能体直接 websocket 连接配置的任何音频格式无关。

设置 SIP 中继

1

前往电话号码

在 ElevenLabs Agents 控制台中前往电话号码部分。

2

导入 SIP 中继

点击“导入号码”按钮,然后选择“从 SIP 中继导入”以打开配置对话框。

包含“从 SIP 中继导入”选项的导入号码菜单
3

输入基本配置

使用以下信息完成基本配置:

  • 标签:电话号码的描述性名称
  • 电话号码:要连接的 E.164 格式电话号码(例如 +15551234567)
包含标签和电话号码字段的 SIP 中继基本配置
4

配置呼入设置

配置 ElevenLabs 如何处理到达 SIP 中继的通话,包括媒体加密和访问控制:

  • 媒体加密:配置 RTP 媒体流的加密方式:
    • 已禁用:不加密媒体
    • 允许:允许加密媒体流
    • 必需:强制使用加密媒体流
  • 允许的号码(可选):获准呼叫此号码的电话号码。留空以允许所有号码。
  • 允许的源 IP 地址(可选):仅适用于 TCP/TLS 传输,不适用于 UDP。允许向此中继发送通话的 IP 地址或 CIDR 范围。保留为 0.0.0.0/0 以允许所有地址。
  • 远程域名(可选):指定发起通话的 SIP 服务器 FQDN 域名,例如 example.pstn.twilio.com。这些域名用于 TLS 证书验证。如果不使用 TLS,请将此字段留空。
  • 身份验证(可选):提供用于验证呼入通话的摘要身份验证凭据。
    • SIP 中继用户名:用于 SIP 摘要身份验证的用户名
    • SIP 中继密码:用于 SIP 摘要身份验证的密码
呼入配置设置,包括媒体加密、允许的号码、允许的源 IP 地址、远程域名和身份验证
5

配置呼出设置

配置 ElevenLabs 应将此电话号码的通话发送至何处:

  • 地址:发送 SIP INVITE 的主机名或 IP 地址(例如 sip.telnyx.com)。这里只应填写主机名或 IP 地址,而不是完整的 SIP URI。如果使用 TLS,请使用具有有效证书的主机名。

  • 传输类型:选择 SIP 信令的传输协议:

    • TCP:标准 TCP 传输
    • TLS:更安全的加密 TLS 传输
    • UDP:无连接传输(实验性功能;生产环境请使用 TCP 或 TLS)
  • 媒体加密:配置 RTP 媒体流的加密方式:

    • 已禁用:不加密媒体
    • 允许:允许加密媒体流
    • 必需:强制使用加密媒体流
  • 启用的编解码器:在呼出通话的 SDP 中提供的编解码器(G.722、PCMU、PCMA)。当 SIP 提供商仅支持特定编解码器时很有用。

  • 自定义标头(可选):添加要随呼出通话发送的自定义 SIP 标头。点击“添加标头”,输入提供商要求的标头名称和值;可按需添加多个标头。自定义标头可用于通话路由和识别、计费和跟踪,以及满足特定提供商要求。

  • 身份验证(可选):如果 SIP 中继提供商要求,请提供摘要身份验证凭据。

    • SIP 中继用户名:用于 SIP 摘要身份验证的用户名
    • SIP 中继密码:用于 SIP 摘要身份验证的密码

    如果留空,将使用访问控制列表(ACL)身份验证,这要求你在提供商设置中将 ElevenLabs IP 地址加入允许列表。

呼出配置设置,包括地址、传输类型、媒体加密、启用的编解码器、自定义标头和身份验证

安全最佳实践:使用 TLS 传输和必需媒体加密,以获得最高安全性。这可确保信令和媒体均进行端到端加密。

身份验证方式:

  • 摘要身份验证:使用用户名/密码凭据进行安全身份验证(推荐)
  • ACL 身份验证:使用 IP 地址允许列表进行访问控制

强烈建议使用摘要身份验证,因为它无需依赖 IP 允许列表,安全性更好;动态 IP 地址会使允许列表管理变得复杂。

地址 字段用于指定 ElevenLabs 从 AI 智能体发起的呼出通话应发送到何处。仅输入主机名或 IP 地址,不要包含 sip: 协议前缀。

6

完成设置

点击“导入”以完成配置。

客户数据和个性化

为确保正确转发和追踪通话元数据,请在 webhook 负载和 SIP INVITE 请求中包含以下自定义 SIP 标头:

  • X-CALL-ID:通话的唯一标识符
  • X-CALLER-ID:呼叫方标识符

这些标头可让系统将通话元数据与对话关联,并为个性化提供上下文。

后备标头支持

如果不存在上述标准标头,系统会自动查找 Twilio 专用 SIP 标头:

  • sip.twilio.callSid:Twilio 的唯一通话标识符

此后备机制可确保兼容 Twilio 的 Elastic SIP Trunking,无需更改配置。

处理流程

通过任一受支持标头接收到相关元数据后,caller_id 和/或 call_id 将在对话发起 webhook中可用,也可作为系统动态变量使用。

将呼入自定义标头用作动态变量

呼入 SIP 中继通话中的自定义 SIP X- 标头会自动以动态变量的形式在对话中公开。

标头名称会进行规范化处理:移除 X- 前缀,将名称转换为小写,将连字符替换为下划线,并添加 sip_ 前缀。例如,X-Contact-ID 会变为 {{sip_contact_id}},X-Campaign-ID 会变为 {{sip_campaign_id}}。

在智能体提示词、首条消息和工具中使用这些变量,可根据呼叫方提供的上下文个性化对话。这些值也会显示在对话历史记录的 电话通话 标签页中。

X-Call-ID 和 X-Caller-ID 等保留标头仍会映射到 system__call_sid 和 system__caller_id。自定义呼入标头无法覆盖这些系统变量。

动态变量中的 BYE 标头

通话结束时,ElevenLabs 会发送 SIP BYE 以终止对话。你可以通过在 SIP 中继配置中将动态变量映射到标头名称,为该 BYE 附加自定义标头。

通过 API创建或更新 SIP 中继电话号码时,请在 inbound_trunk_config 或 outbound_trunk_config 上设置 attributes_to_headers。每个条目将动态变量名称映射到要包含在 BYE 中的 SIP 标头名称:

"inbound_trunk_config": {
"attributes_to_headers": {
"dynamic_variable_name": "bye_header_name"
}
}

标头值是对话结束时动态变量的最终值。通话期间设置的值——通过智能体工具、webhook 覆盖或其他运行时更新——都会反映在 BYE 中。

例如,如果 attributes_to_headers 包含 "disposition_code": "X-Disposition",且对话结束时 disposition_code 动态变量为 resolved,则 BYE 将包含 X-Disposition: resolved。

将智能体分配给电话号码

导入 SIP 中继电话号码后,可以将其分配给 ElevenLabs 智能体:

  1. 前往 ElevenAgents 控制台的电话号码部分
  2. 选择导入的 SIP 中继电话号码
  3. 点击“分配智能体”
  4. 选择要处理此号码来电的智能体

故障排除

如果遇到连接问题:

  1. 检查 ElevenLabs 端和提供商端的 SIP 中继配置
  2. 检查防火墙是否允许配置的传输协议和端口上的 SIP 信令流量(TCP 为 5060,TLS 为 5061),并确保未设置允许列表
  3. 确认地址主机名格式正确且可访问
  4. 分别使用和不使用摘要认证凭据进行测试
  5. 如果使用 TLS 传输,确保提供商的 TLS 证书有效且配置正确
  6. 尝试不同的传输类型(TCP 或 TLS;UDP 支持仍处于实验阶段),以排查 TLS 特有问题

重要网络架构信息:

  • ElevenLabs 通过共享地址 sip.rtc.elevenlabs.io 后的多个 SIP 服务器提供 SIP 流量服务
  • 这些 SIP 服务器会直接与 SIP 服务器通信
  • 由于采用分布式基础设施,SIP 请求可能来自不同的 IP 地址
  • 如果安全策略要求将入站流量加入允许列表,请联系支持团队获取帮助。

如果通话因认证问题失败:

  1. 如果使用摘要认证,请再次检查 SIP 中继用户名和密码
  2. 查看 SIP 中继提供商日志,了解具体的认证错误信息
  3. 如果配置了自定义标头,请确认其符合提供商要求
  4. 使用简化配置(不含自定义标头)测试,以排查认证问题

如果遇到 TLS 传输或媒体加密问题:

  1. 确认 SIP 中继提供商支持端口 5061 上的 TLS 传输
  2. 检查证书有效性、到期日期和信任链
  3. 如果使用“必需”媒体加密,确保提供商支持 SRTP 媒体加密
  4. 使用“必需”前,先用“允许”媒体加密测试,以排查加密问题
  5. 尝试 TCP 传输,以排查 TLS 特有问题(UDP 支持仍处于实验阶段)
  6. 联系 SIP 中继提供商,确认其支持 TLS 和 SRTP

如果自定义标头出现问题:

  1. 确认提供商要求的准确标头名称和值
  2. 检查标头名称是否区分大小写
  3. 确保标头值不含需要转义的特殊字符
  4. 先不使用自定义标头进行测试,再逐步添加
  5. 对于入站自定义标头动态变量,确认标头使用 X- 前缀,并查看对话历史中的 电话通话 标签页
  6. 查看提供商文档,了解支持的自定义标头

如果通话已连接,但没有音频或音频仅单向传输:

  1. 确认防火墙允许 RTP 媒体流使用的 UDP 流量(通常为端口 10000-60000)
  2. 由于 RTP 使用动态 IP 地址,确保防火墙规则未限制为特定静态 IP
  3. 检查是否存在可能阻断 RTP 流的网络地址转换(NAT)问题
  4. 如果使用“必需”媒体加密,确保两个端点都支持 SRTP
  5. 使用“已禁用”媒体加密测试,以排查与加密相关的音频问题

如果音频质量不佳:

  1. 确保网络有足够带宽(每通电话至少 100 Kbps),且 UDP 流量的延迟和抖动较低
  2. 检查网络拥塞或丢包情况,尤其是 UDP 路径
  3. 确认两端的编解码器设置一致
  4. 如果使用媒体加密,确保两个端点都能高效处理 SRTP
  5. 使用不同的媒体加密设置测试,以排查质量问题

BYE 收到 481 响应通常表示,请求到达的 SIP 服务器不保存该通话的对话状态。 当初始 TCP 连接已关闭,而 BYE 被重新发送到通用共享地址(例如 sip.rtc.elevenlabs.io)时,常会发生这种情况, 而不是发送到 200 OK 响应中返回的特定 Contact URI。

  1. 为 BYE 重新建立 TCP 连接时,始终以 INVITE 响应中的 Contact 地址为目标,确保请求到达处理该对话的同一台 SIP 服务器。
  2. 避免将 BYE 发送到共享地址 sip.rtc.elevenlabs.io,因为请求可能会落到其他 SIP 节点,并被其以 481 拒绝。

有关 Contact 标头和对话路由的规范行为,请参阅 RFC 3261 第 8.1.1.8 节。

限制和注意事项

  • 支持的并发通话数量取决于订阅套餐。达到上限时,启用通话排队可让入站来电者等待,而非直接拒绝
  • 提供通话录音和分析功能,但可能需要额外配置
  • 外呼功能可能受 SIP 中继提供商限制
  • TLS 支持:确保 SIP 中继提供商支持 TLS 1.2 或更高版本,以实现加密传输
  • 媒体加密:SRTP 支持因提供商而异;要求加密前,请先确认兼容性
  • 音频格式:ElevenLabs 的 SIP 部署使用 PCMU 或 PCMA(G.711,8kHz)或 G.722(16kHz)编解码器发送和接收音频。这与为智能体直接 websocket 连接配置的任何音频格式无关。SIP 中继系统必须原生支持其中一种编解码器,或进行重采样以匹配系统要求

常见问题

可以。SIP 中继可将现有电话号码直接连接到 ElevenLabs 的 ElevenAgents,无需转入号码。

ElevenLabs 与大多数标准 SIP 中继提供商兼容,包括 Twilio、Vonage、Sinch、 Infobip、Telnyx、Exotel、Plivo、Bandwidth,以及其他支持 SIP 协议标准的提供商。支持 TLS 传输和 SRTP 媒体加密,可提升安全性。

是。强烈建议在生产环境中使用 TLS 传输。它可对 SIP 信令进行加密,提高通话安全性。配合必需的媒体加密使用, 可为通信提供全面保护。启用前请务必确认 SIP 中继提供商 支持 TLS。

  • TCP:可靠但未加密的信令 - TLS:加密且可靠的信令 (推荐用于生产环境)- UDP:无连接信令,目前仍处于实验阶段

UDP 传输仍处于实验阶段,仅供测试使用。对于生产环境和 安全关键型应用,始终应使用 TLS 传输。

自定义 SIP 标头可让你在外呼时包含提供商特定信息。常见 用途包括通话路由、计费代码、主叫号码识别,以及满足特定提供商 要求。

并发通话数量取决于订阅套餐。企业版套餐通常支持 更多并发通话。达到上限时,入站来电者会被拒绝, 除非已为智能体启用通话排队,在这种情况下, 来电者会在等待音频中保持等待,并在容量释放后接通。

可以。你可以使用现有 PBX 系统的路由规则,将通话转至不同电话号码, 每个号码都连接到不同的 ElevenLabs 智能体。

是。SIP URI 和导入电话号码配置中的号码格式必须一致。如果使用带前导 + 的方式呼叫 SIP URI(例如, sip:+19991234567@sip.rtc.elevenlabs.io:5060),也必须导入带 前导 + 的电话号码(例如,+19991234567)。同样,如果呼叫时不带前导 +,请导入不带前导 + 的 电话号码。格式不匹配会导致通话无法正确路由。

是。ElevenLabs 为符合 RFC 3263 的 SIP 服务器发现提供 NAPTR 和 SRV 记录。

后续步骤