> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Sinch SIP 中继

> **Note**
>
> 开始前，建议阅读 [ElevenLabs SIP 中继 指南](/docs/zh/eleven-agents/phone-numbers/sip-trunking)和 [Sinch Voice SIP 中继 指南](https://developers.sinch.com/docs/voice/api-reference/sip-trunking)。

## 概述

本指南介绍如何将 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](https://dashboard.sinch.com/voice/apps) 中创建语音应用的 Sinch 账户
3. 至少 1 个在 Sinch 购买并分配给应用的电话号码（DID）

## 配置呼入电话（Sinch 到 ElevenLabs）

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

### 登录 Sinch Build dashboard

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

### 为 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`。可用区域请参阅 [数据驻留](/docs/zh/overview/administration/data-residency)。

### 将 DID 分配给应用

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

## 配置呼出电话（ElevenLabs 到 Sinch）

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

### 记下 Sinch 区域的 FQDN

获取 Sinch 区域的 [SIP FDQN](https://developers.sinch.com/docs/voice/api-reference/sip-trunking#termination-uris)。这是需要在 ElevenLabs 中输入的终止地址。仅输入主机名，不要包含 `sip:` 前缀。

### 输入 SIP 凭据

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

### 转发号码

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

## 在 ElevenLabs 中完成设置

### 导入 SIP 中继电话号码

按照 [SIP 中继指南](/docs/zh/eleven-agents/phone-numbers/sip-trunking) 导入 Sinch 号码，并使用以下设置：

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

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

### 分配智能体

在 [Phone Numbers dashboard](https://elevenlabs.io/app/agents/phone-numbers) 中将智能体分配给该号码。现在，拨打 DID 的呼入电话会转接到该智能体。

### 测试呼出电话

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

```bash
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 中继呼出电话](/docs/zh/eleven-agents/api-reference/sip-trunk/outbound-call)，呼出活动请参阅 [批量呼叫](/docs/zh/eleven-agents/phone-numbers/batch-calls)。

## 配置转接

智能体使用 [`transfer_to_number`](/docs/zh/eleven-agents/customization/tools/system-tools/transfer-to-number) 系统工具将电话转接给人工客服。

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

### 会议转接

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

## 改用 Sinch Voice API v2

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

有关其他常见场景，请参阅 Sinch 的 [通过 SIP 集成 ElevenLabs AI 智能体](https://developers.sinch.com/docs/voice-2.0/tutorials/elevenlabs-sip) 教程。

## 故障排除

#### 呼入电话无法接通

* 确认中继的静态呼入端点指向 `sip.rtc.elevenlabs.io`，且使用的端口和传输协议正确。
* 确认 DID 已分配给该中继。
* 检查 ElevenLabs 中的号码是否与 Sinch 发送的号码一致，包括开头的 `+`。
* 更改端点或 ACL 后至少等待 60 秒，再重新测试。
* 确认防火墙允许 TCP 使用 5060 进行 SIP 信令，或 TLS 使用 5061，且未阻止 RTP。

#### 呼出电话收到 403 或 407 响应

* 确认 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 中继](/docs/zh/eleven-agents/phone-numbers/sip-trunking)。

## 实用链接

* [SIP 中继指南](/docs/zh/eleven-agents/phone-numbers/sip-trunking)
* [SIP 参考](/docs/zh/eleven-agents/phone-numbers/sip-reference)
* [转接至号码](/docs/zh/eleven-agents/customization/tools/system-tools/transfer-to-number)
* [Sinch Voice API v2：通过 SIP 集成 ElevenLabs AI 智能体](https://developers.sinch.com/docs/voice-2.0/tutorials/elevenlabs-sip)