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、 RingCentral、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 记录。

后续步骤