Sinch SIP 中继

将 Sinch Elastic SIP Trunking 连接到 ElevenLabs Agents。

概述

本指南介绍如何将 Sinch Voice 应用直接连接到 ElevenLabs Agents。该集成让你保留 Sinch 号码和路由,同时由 ElevenLabs 处理语音 AI 智能体体验。

Sinch SIP 中继的工作方式

Sinch SIP 中继是在 Sinch 网络与 ElevenLabs 平台之间建立的双向连接:

  1. 呼入电话:分配给 Sinch Voice 应用的 DID 会接收来电。Sinch 将 INVITE 发送到在中继呼入设置中配置为静态端点的 ElevenLabs 发起地址。
  2. 呼出电话:由 ElevenLabs 发起的电话会发送到应用的完全限定域名(FQDN)SIP 地址,再由 Sinch 路由至 PSTN。
  3. 身份验证:Sinch 要求对呼出进行身份验证(SIP 凭据),并支持对进入中继的流量进行 ACL 身份验证(IP 允许列表)。

要求

开始前,请确保具备:

  1. 已配置智能体的有效 ElevenLabs 账户
  2. 已在 Sinch Build dashboard 中创建语音应用的 Sinch 账户
  3. 至少 1 个在 Sinch 购买并分配给应用的电话号码(DID)

配置呼入电话(Sinch 到 ElevenLabs)

将应用的呼叫转发指向 ElevenLabs SIP 地址。

1

登录 Sinch Build dashboard

登录 Sinch 账户并前往要连接的应用。

2

为 ElevenLabs 添加静态端点

在应用的呼叫转发设置中,将呼叫事件处理程序更新为 SIP Forwarding,并添加指向 ElevenLabs 发起地址的静态 SIP URI:

  • DID:要拨打的 Sinch 电话号码
  • 地址:sip.rtc.elevenlabs.io
  • 端口和传输协议:5061/TLS、5060/TCP

例如:sip:15551234567@sip.rtc.elevenlabs.io:5061;transport=tls。

如果 ElevenLabs 工作区使用隔离的数据驻留区域或静态 IP SIP 基础设施,请使用相应端点替代 sip.rtc.elevenlabs.io。可用区域请参阅 数据驻留。

3

将 DID 分配给应用

将应连接到智能体的电话号码分配给此应用。

配置呼出电话(ElevenLabs 到 Sinch)

对于呼出电话,ElevenLabs 会向 Sinch 应用发送 SIP INVITE 并对其进行身份验证。

1

记下 Sinch 区域的 FQDN

获取 Sinch 区域的 SIP FDQN。这是需要在 ElevenLabs 中输入的终止地址。仅输入主机名,不要包含 sip: 前缀。

2

输入 SIP 凭据

安全地复制 Sinch 应用的密钥和密文。这将作为 ElevenLabs 中的用户名和密码。

3

转发号码

Sinch 应用会将电话转发到其转发地址。若要向呼出请求中指定的号码拨打电话,请在应用设置中将此字段留空。

在 ElevenLabs 中完成设置

1

导入 SIP 中继电话号码

按照 SIP 中继指南 导入 Sinch 号码,并使用以下设置:

设置值
电话号码Sinch DID,例如 15551234567
传输类型TLS
媒体加密TCP 使用 Disabled;中继设为 TLS 和 SRTP 时使用 Allowed 或 Required
地址Sinch 中继 FQDN,仅主机名
SIP 中继用户名Sinch 应用密钥
SIP 中继密码Sinch 应用密文

两端的传输和加密设置应保持一致。

2

分配智能体

在 Phone Numbers dashboard 中将智能体分配给该号码。现在,拨打 DID 的呼入电话会转接到该智能体。

3

测试呼出电话

通过电话号码菜单或呼出电话 API,从智能体经由 Sinch 应用拨打电话:

curl -X POST https://api.elevenlabs.io/v1/convai/sip-trunk/outbound-call \
-H "xi-api-key: $ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "agent_7101k5zvyjhmfg983brhmhkd98n6",
"agent_phone_number_id": "phnum_8901k4t9z5defmb8vh3e9361y7nj",
"to_number": "+15551234567"
}'

完整请求架构请参阅 通过 SIP 中继呼出电话,呼出活动请参阅 批量呼叫。

配置转接

智能体使用 transfer_to_number 系统工具将电话转接给人工客服。

Sinch 中继仅支持会议转接。SIP REFER 和盲转会失败。

会议转接

ElevenLabs 会通过 Sinch 中继拨打目标号码,将双方加入会议,然后退出智能体。

改用 Sinch Voice API v2

上述设置让 ElevenLabs 处理整个语音路径。如果需要由 Sinch 控制呼叫,Sinch Voice API v2 可以接听电话、应用自己的逻辑,并使用 SVAML 将第二路呼叫桥接至 ElevenLabs 智能体,无需中继服务器。当你希望在智能体接入前插入 Sinch 功能(如答录机检测、通话录音或号码掩码),或者智能体只是更大 Sinch 呼叫流程中的一个环节时,此模式更合适。

有关其他常见场景,请参阅 Sinch 的 通过 SIP 集成 ElevenLabs AI 智能体 教程。

故障排除

  • 确认中继的静态呼入端点指向 sip.rtc.elevenlabs.io,且使用的端口和传输协议正确。
  • 确认 DID 已分配给该中继。
  • 检查 ElevenLabs 中的号码是否与 Sinch 发送的号码一致,包括开头的 +。
  • 更改端点或 ACL 后至少等待 60 秒,再重新测试。
  • 确认防火墙允许 TCP 使用 5060 进行 SIP 信令,或 TLS 使用 5061,且未阻止 RTP。
  • 确认 ElevenLabs 中的 SIP 中继用户名和密码与 Sinch 中继上的凭据一致。
  • 检查 地址 字段是否仅包含中继 FQDN,且不含 sip: 前缀。
  • 确认中继已启用目标国家/地区的国家权限。
  • 确认所使用的主叫号码是 Sinch 接受用于该中继的号码。
  • 如果使用 ACL 身份验证,请注意 ElevenLabs 信令来自分布式地址池。请切换到摘要身份验证,或迁移至静态 IP 基础设施。
  • 确认防火墙允许 RTP 通过 UDP 双向传输,且未限制为特定静态地址。
  • 检查媒体加密是否匹配:TLS Sinch 中继需要 SRTP,因此请在 ElevenLabs 中将媒体加密设为 Allowed 或 Required。
  • 使用 TCP 并禁用媒体加密进行测试,以确定问题是否与 TLS 或 SRTP 有关。
  • 确认中继提供 G711。ElevenLabs 支持 G711 和 G722。

对 BYE 的 481 响应通常意味着请求到达了没有该通话对话状态的 SIP 服务器。请将对话内请求发送到 200 OK 返回的 Contact URI,而不是共享的 sip.rtc.elevenlabs.io 地址。如果通过 TLS 的 BYE 或 REFER 未通过证书验证,请在电话号码设置的 远程域 字段中添加中继证书签发所对应的 FQDN。

常见问题

生产环境请在 Sinch 中继上使用 5061 的 TLS 搭配 SRTP 媒体。验证时可先使用 5060 的 TCP。ElevenLabs 上的 UDP 仍处于实验阶段,不应用于生产流量。

ElevenLabs 支持 G711(8 kHz)和 G722(16 kHz)。请确保 Sinch 中继提供 G711,作为共同支持的编解码器。

呼入 INVITE 上的自定义 X- 标头会作为动态变量公开,例如 X-Contact-ID 会变为 {{sip_contact_id}}。X-Call-ID 和 X-Caller-ID 会映射到 system__call_sid 和 system__caller_id。完整规范化规则请参阅 SIP 中继。

实用链接