语音故障排查
从通话记录开始。记录是否存在及其字段决定了应遵循哪些检查步骤。
外呼通话在通话记录中缺失
Bird 无法接纳的通话会在 SIP 层被拒之门外,此时尚未产生记录。造成这种情况有五个原因:
- 中继尚未启用外呼。 新中继在您于其页面上开启外呼功能之前不会承载任何通话,无论通话携带何种凭据,所有尝试都会被拒绝。
- 中继尚无法识别您的身份。 新中继在您添加 IP 范围、允许的 API 密钥或会话凭据之前,会拒绝所有通话。
- 通话来源地址不在中继的 IP 允许列表中。 在 NAT 后面时,请将路由器的公网地址与中继的 IP 允许列表进行比对。电话系统的私有地址无法到达 Bird。
- 密码质询失败。 检查用户名是否为 bird。密码必须是允许的 API 密钥密文或未过期的会话凭据。中继还必须提供您的电话系统所使用的 Digest 算法。
- 通话被发送到 Bird 无法识别的 SIP 域名。 请从中继页面完整复制域名,不要自行拼接。
通话被拒绝且有拒绝原因
Bird 在拨打运营商之前拒绝了通话,原因会指出未通过的检查项。打开通话详情,使用拒绝面板中的链接前往相关设置。被拒绝的通话列出了所有拒绝原因及其修复方法。
caller_id_not_verified 是新客户端最常遇到的问题,通常是因为客户端将 digest 用户名填入了主叫号码字段:两者是不同的字段。
通话状态为失败而非被拒绝
Failed 不是拒绝。通话已尝试但未成功,SIP response 携带了返回的状态码。486 表示对方忙线,404 表示号码未分配。这通常指向您拨打的号码,而非您的配置。
被 Bird 拒绝的通话状态为 Rejected 而非 Failed,因此在查找未通过 Bird 检查的通话时,请按 Rejected 筛选日志。
通话被拒绝但无拒绝原因
对于外呼通话,对端直接拒接,SIP response 中携带了其状态码。
对于来电,被叫号码拒绝了通话,这不会触发任何检查,因此不会显示原因。打开通话详情,查看 Inbound route:reject 路由表示该号码未指向任何应答目标。接收来电详细介绍了从路由和原因角度分析每种入站拒绝的方法。
被叫方看到的号码与您发送的不同
通话有记录且无拒绝原因,说明它通过了 Bird 的所有检查。问题出在 Bird 的下游:终端运营商替换了主叫号码,或拒绝了携带该号码的通话。同样的原因也会表现为某个号码在一个国家能接通,在另一个国家始终无法接通。
验证证明您控制某个主叫号码。但这并不要求递送通话的运营商必须接受它,运营商会对未通过 Bird 购买的号码执行各自的国家规则。请参阅 CLI 验证与递送免责声明了解相关做法,包括境内 CLI 要求、基于来源的拦截以及禁止发起列表。
要确定您使用的号码类型,请在 Voice > Numbers 下打开该号码,查看其页面顶部的面板。从 Bird 购买的号码会显示订阅信息,购买后又经过验证的号码也会显示。只有从其他渠道拥有的号码才只显示验证信息。订阅意味着号码是通过 Bird 购买的,因此免责声明不适用于它。使用通过 Bird 购买的号码,可以在那些拒绝经验证号码的目的地提高递送率和接通率。
来电始终无法到达您的电话系统
号码已接听通话,但递送失败。请按以下顺序检查:
- 查看通话的 Inbound route。 它显示通话到达时号码指向的中继或转发目标。reject 路由表示号码未指向任何目标,号码在其中继被删除或入站通话被关闭后也会处于此状态。
- 检查中继是否有网关。 没有递送网关的中继会拒绝所有发往其应答号码的通话,记录中会显示 no_route_found。请在中继页面的 Inbound calling 下添加网关。
- 检查网关地址。 Bird 按优先级顺序拨打网关,全部无应答则放弃。确认 SIP URI 主机地址及其端口,并确认您的电话系统在该地址上接受来自 Bird 的通话。
- 对于转发,检查目标是否仍然已验证。 转发目标在每次通话时都会被重新检查,因此您移除的主叫号码会从该时刻起停止转发。
您的客户端回应 MD5 但无法连接
某些设备无法正确处理以 SHA-256 开头的质询。将中继设置为仅 MD5。
通话已接通但音频是单向的
您的客户端位于 NAT 后面,其媒体流被发送到私有地址。请在客户端中启用 NAT 或 STUN 处理。
后续步骤
| 页面 | 涵盖内容 |
|---|---|
| 通话记录 | 通话记录中的每个字段,以及所有拒绝原因 |
| SIP 中继 | IP 允许列表、密钥、会话凭据和 Digest |
| SIP 客户端配置 | 各软电话和 PBX 所需的设置 |
| 发起通话 | Bird 在 INVITE 上的要求,以及握手流程 |
| 接收来电 | 将号码指向中继或转发,以及记录的内容 |