设置 SIP 中继以接听和拨打电话
本页按控制台所需的顺序介绍完整的中继设置。如果跳过某一步骤会出现可见的症状,该步骤会注明这一症状,因此测试呼叫失败时,您也可以将本页用作检查清单。各项设置的含义请参阅 SIP 中继、接听电话和拨打电话。
开始之前
- 一个 Bird 工作区。呼叫、号码和中继都属于同一个工作区,因此请在同一个工作区中完成所有步骤。
- 您设备的公网地址:Bird 应将呼叫送达的主机,以及您的设备发送 SIP 所用的地址。
- 接听电话需要该工作区中的一个 Bird 号码。拨打电话需要一个主叫号码:可以是工作区中的 Bird 号码,也可以是您已验证的号码。
- 一个
status为active的 Bird 号码。仍在等待所有权文件或注册的号码无法接听或拨打电话:请参阅提交号码的所有权文件。
1. 创建中继
打开 Voice > SIP Trunks,选择 Add new SIP trunk,输入名称,然后选择 Create trunk。
新建的中继在您分别开启每个方向之前,不会承载任何方向的呼叫。
2. 开启呼入
在 Inbound calling 下,选择 Enable inbound。其下方会出现 Inbound routing 部分。
如果跳过这一步,就无法将号码指向该中继:号码的中继列表中不会出现该中继。
3. 添加网关
在 Inbound routing 中打开 Gateways 选项卡,为 Bird 需要投递呼叫的每个地址选择 Add gateway:
| 字段 | 填写内容 |
|---|---|
| Name | 便于识别的标签,例如 Primary SBC |
| Host | 您设备的主机名或公网 IP 地址,不含 sip: 或用户部分 |
| Port | 留空则使用该传输协议的默认端口,或填写您的设备监听的端口 |
| Transport | UDP、TCP 或 TLS,与您的设备一致 |
| R-URI user part | 被叫号码在 Request-URI 中的写法。默认为带 + 的 E.164 格式 |
| Origination format | 主叫号码的写法。默认为带 + 的 E.164 格式 |
| Priority | 该网关在 All gateways (automatic) 中的位置:数值越小越先振铃,数值相同的网关分担呼叫。默认为 0 |
如果您的设备要求号码不带开头的 +,请打开该格式的列表并选择 Without the plus,或选择 00 或 011 国际前缀。网关需要什么介绍了各种号码格式。
Bird 会按主叫方运营商发送时的原样透传 To 头。如果您的设备从 To 读取被叫号码,请选择 Rewrite To user part,并按照与 R-URI user part 相同的格式进行设置。之后,对于发往该网关的呼叫,Bird 会替换 To 的用户部分。
您的网关必须接受来自 Bird 的呼叫,且不发起 SIP Digest 质询,因为 Bird 不会响应此类质询。
4. 选择呼叫依次尝试的网关组
Bird 将呼叫投递给一组网关。每个网关都属于 All gateways (automatic),该组按照网关在 Gateways 选项卡中的 Priority 依次尝试,数值最小的最先尝试。如需通过该组实现故障转移,请为备用网关设置比主网关更大的 Priority 数值。如果 Groups 选项卡中没有 All gateways (automatic),说明该中继已保存的路由中用一个自建组取代了它,而 Priority 不决定该组的顺序;请参阅使用自动组。
如果中继的路由从未保存过,在添加第一个网关时,控制台会将默认路由指向 All gateways (automatic)。
如需不同的振铃时长、权重,或只使用部分网关,请自建网关组:在 Groups 选项卡中选择 Add group 并为其命名,然后对每个网关使用 Add gateway to group。故障转移与分配呼入呼叫介绍了每种顺序、振铃时长以及何时停止依次尝试网关。
5. 将默认路由指向该组
在 Rules 选项卡中,找到 Default route(No rule above matched)。将 Then 设为 Route to group,然后选择你的组。选择 Review and save,再确认。
默认路由处理所有未被任何规则匹配的呼叫,因此没有规则时,它会处理所有呼叫。如果它设为 Reject,即使组中有网关,这些呼叫也会在到达你的设备之前被拒绝。
在审核时,如果某个网关不在任何由规则或默认路由转发呼叫的组中,控制台会提示 Calls never reach some gateways。请在测试前解决该警告。
此默认路由属于中继。它与 Numbers 页面上的工作区设置 Calls to numbers without their own route 相互独立,后者决定没有自身路由的号码如何处理。
6. 将号码指向中继
打开 Voice > Numbers,打开该号码,在 Inbound routing 下选择 Deliver to a SIP trunk。选择中继并保存。
没有自身路由的号码遵循工作区默认路由,该路由初始为拒绝。要一次性将所有此类号码发送到此中继,请将 Calls to numbers without their own route 设为该中继。请参阅设置默认路由。
如果跳过此步骤,而工作区默认路由仍为拒绝,呼入呼叫会被拒绝,呼叫记录的 Inbound route 会显示 Reject the leg。
7. 开启呼出并指定允许发送的设备
在 Outbound calling 下,选择 Enable outbound。随后会出现 Connection 部分,其中显示中继的 SIP domain。Bird 通过此域名识别你的中继,因此请完整复制。
然后至少添加一种识别您设备的方式:
- Allowed IP addresses:您的设备发送 SIP 时使用的公网地址。如果设备位于 NAT 之后,请使用路由器的公网地址。
- Allowed API keys:适用于能响应 Digest 质询的设备,用户名为
bird,密码为 API 密钥的密文。
在开启出站呼叫之前,中继会拒绝所有外呼。在中继能够识别您的设备之前,呼叫会在生成呼叫记录之前就被拒绝。请参阅控制谁可以发送呼叫。
8. 配置您的 PBX 或 SBC
在您的 PBX 或 SBC 上:
- 将外呼发送到中继的 SIP 域名。 将 SIP 域名填入 Request-URI 的主机部分。使用端口
5060(UDP 或 TCP)或5061(TLS)。Request-URI 主机为其他名称的呼叫会被拒绝。 - 按国际格式拨号。 在 Request-URI 的用户部分填写
+加国家代码再加被叫号码,例如+442071234567。不要添加技术前缀。请参阅 Bird 对 INVITE 的要求。 - 在
From头中提供符合条件的主叫号码。 - 提供 G.711(A-law 或 µ-law)编解码,并以 RFC 4733 电话事件发送 DTMF。该页面的同一部分也介绍了媒体相关要求。
- 放行 Bird 的地址。 如果您的防火墙或 SBC 只接受列表中的地址,请放行您的中继所在区域的信令地址和媒体地址,这些地址列在 SIP 中继网络要求中。
9. 开启您要呼叫的国家/地区
打开 Voice > Destinations,勾选你要呼叫的每个国家,然后选择 Save changes。新工作区默认不启用任何国家,呼叫未启用的国家会被拒绝并返回 destination_not_enabled。请参阅语音目的地。
10. 测试双向呼叫
- 呼入:用普通电话拨打你的 Bird 号码,然后在同一工作区中打开 Voice > Legs。
- 呼出:从你的设备向已启用国家的任一可达号码发起呼叫,并以你的 Bird 号码或已验证号码作为主叫号码。此测试不需要第二个 Bird 号码。
- 逐一打开每个呼叫段。Inbound route 显示该号码被设置的处理方式。被拒绝的呼叫会显示拒绝原因;如果需要修改你的某项设置,还会附上该设置的链接。成功的呼叫显示 Answered。联系支持团队时,请提供 Leg ID。
如果呼叫缺失、被拒绝或始终未到达你的设备,请按照语音故障排查操作,该页面从故障现象入手。