> 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.

# FreePBX 和 Asterisk

PBX 会保留运营商和号码，并通过 [SIP 中继](/docs/zh/reception-ai/phone-numbers/bring-your-own-number#sip-trunk) 将选定通话转发给 Reception.ai。需要在 PBX 上添加第二个指向 Reception.ai 的中继，然后将 DID、时间条件或 IVR 选项路由至该中继。

## 开始前

* 可从互联网访问的 FreePBX 15 或更高版本，或使用 PJSIP 的 Asterisk。
* PBX 的静态公网 IP 地址。Reception.ai 仅接受来自允许地址的通话。
* 熟悉 PBX 中继、路由和防火墙的人员。

## 设置

### 在 Reception.ai 中添加 SIP 中继

前往 **Integrations**，选择 **Add integration**，然后选择 **SIP Trunk**。在 **Inbound allowed addresses** 下添加 PBX 的公网 IP 地址。如果还设置了入站用户名和密码，请在下方的 PBX 中继中使用相同凭据。

### 添加号码

前往 **Receptionists**，选择 **Phone** 卡片，输入来电者拨打的号码（含国家代码），然后选择 **Add SIP Trunk number**。Reception.ai 会显示要使用的 SIP 服务器主机和请求 URI。

### 在 FreePBX 中启用 TCP

Reception.ai 不接受 UDP。在 FreePBX 中，前往 **Settings** → **Asterisk SIP Settings** → **SIP Settings \[chan_pjsip]**，将 **tcp** 传输方式设为 **Yes**，然后选择 **Submit** 和 **Apply Config**。重启 Asterisk 以加载新的传输方式。如果已在 **Certificate Management** 中设置证书，也可使用 TLS。

### 创建通向 Reception.ai 的中继

前往 **Connectivity** → **Trunks** → **Add Trunk** → **Add SIP (chan_pjsip) Trunk**。在 **General** 标签页中输入 **Trunk Name**，例如 `reception`。将 **CID Options** 设为 **Allow Any CID**，以便接待员看到每位来电者自己的号码。在 **pjsip Settings** 标签页中：

| 字段            | 值                                                                                |
| ------------- | -------------------------------------------------------------------------------- |
| **注册**        | **None**                                                                         |
| **身份验证**      | **None**；如果在 Reception.ai 中设置了入站凭据，则选 **Outbound** 并填写 **Username** 和 **Secret** |
| **SIP 服务器**   | Reception.ai 的 SIP 服务器主机                                                         |
| **SIP 服务器端口** | TCP 使用 `5060`，TLS 使用 `5061`                                                      |
| **传输方式**      | TCP（或 TLS）传输方式，例如 `0.0.0.0-tcp`                                                  |

### 添加发送 +E.164 格式号码的出站路由

前往 **Connectivity** → **Outbound Routes**，添加名为 `Reception` 的路由，并且只使用 `reception` 中继。添加拨号模式：使用未使用的 **prefix**，例如 `88`；**match pattern** 设为 `X.`；**prepend** 设为 `+`。这样，拨打 `8814155550123` 时会以 `+14155550123` 的格式通过中继发送，这正是 Reception.ai 所需的格式。

### 将 DID 发送至 Reception.ai

前往 **Applications** → **Misc Destinations**，添加一个目标，拨打 `88` 后接不含 `+` 的 E.164 格式号码，例如 `8814155550123`。然后前往 **Connectivity** → **Inbound Routes**，打开 DID 的路由，并将其目标设为该杂项目标。也可以将它用作时间条件、振铃组故障转移或 IVR 选项的目标。

### 修复 NAT 和音频

前往 **Settings** → **Asterisk SIP Settings** → **General SIP Settings**。将 **External Address** 设为 PBX 的公网 IP，并在 **Local Networks** 下列出私有子网。在防火墙中开放该页面显示的 **RTP Port Ranges**（UDP，默认 `10000–20000`）。

### 测试

使用另一部电话拨打 DID，确认接待员能够接听。

## 原生 Asterisk

对于未使用 FreePBX 的 Asterisk，`pjsip.conf` 中的相同配置如下。将 `SIP_SERVER` 替换为 Reception.ai 显示的主机。

```ini
[transport-tcp]
type=transport
protocol=tcp
bind=0.0.0.0:5060
external_signaling_address=PBX_PUBLIC_IP
external_media_address=PBX_PUBLIC_IP
local_net=192.168.0.0/16

[reception]
type=aor
contact=sip:SIP_SERVER:5060;transport=tcp

[reception]
type=endpoint
transport=transport-tcp
aors=reception
context=from-reception
disallow=all
allow=ulaw,alaw
```

在拨号计划中，以 E.164 格式号码发送通话：

```ini
exten => YOUR_DID,1,Dial(PJSIP/+14155550123@reception)
```

如果在 Reception.ai 中设置了入站凭据，请添加包含这些凭据的 `type=auth` 部分，并在端点上通过 `outbound_auth=` 引用它。

## 限制

* **转接。** 接待员会通过向 **Outbound SIP address** 发起新通话来转接电话。请将其指向 SIP 运营商，并使用接受用户名和密码的运营商账户。此处未涵盖将转接路由回 PBX：Reception.ai 从不断变化的地址池发起通话，因此 PBX 无法通过 IP 将这些通话匹配到中继。
* **PBX 会承载每通电话两次**：一次来自运营商，一次发送至 Reception.ai，因此每一段通话都需要一个空闲通道。

## 故障排除

| 问题                | 检查项                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------ |
| 电话在响铃前失败          | 检查中继是否使用 TCP 或 TLS 传输方式而非 UDP，且端口是否匹配。                                                           |
| 电话被拒绝             | 将 PBX 的公网 IP 添加至 **Inbound allowed addresses**。在 Asterisk 控制台中检查 INVITE 的请求 URI 是否以 `+` 和国家代码开头。 |
| 接待员将 PBX 号码识别为来电者 | 将 Reception.ai 中继的 **CID Options** 设为 **Allow Any CID**。                                         |
| 单向音频或无音频          | 设置 **External Address** 和 **Local Networks**，并在防火墙中开放 RTP 端口范围。                                  |
| 接待员未接听            | 确认号码已添加到接待员的 **Phone** 卡片，并与 PBX 发送的号码一致。                                                        |