Sign inGet Started

通话记录

Voice > Legs 下的呼叫段日志列出工作区发起或接收的每条连接,按时间从新到旧排列。一次通话可以包含多个呼叫段,例如来电连接和转接连接。每条记录都是一条通话详单 (CDR),包括响铃超时或被拒绝的连接。用它来查看时长、最终的 SIP 响应和费用。

Bird 在呼叫段结束时写入每条记录,因此日志中的每个条目都有最终结果。旁边的 Live 标签页显示仍在进行中的呼叫段。

要查看完整交互,请打开 Voice > Calls。一次通话将相关的呼叫段和参与方分组在一起。在关联分析时使用 Call ID,在排查单条连接时使用 Leg ID;它们标识的是不同的记录。

通话列表

每行是一个呼叫段。一次通话包含多个呼叫段时,会显示多行:

列显示内容
Status呼叫段的结束方式(参见状态说明)
From主叫号码,即您的设备呈现的来电显示号码
To被叫号码
Direction您的设备发起的呼叫段为 Outbound,到达您号码的呼叫段为 Inbound
Duration呼叫段的总时长,从 Bird 接收到挂断
StartedBird 接收该呼叫段的时间

列表分页显示,每页 25 个呼叫段。选择任意行可打开呼叫段记录。

实时通话

Live 标签页列出当前正在进行的呼叫段,并显示计数,无需打开即可查看进行中的数量。正在进行的呼叫段有两种状态之一:

状态当前状况
Ringing一个正在进行的呼叫尝试正在等待接听;这并不确认目的地已振铃
In progress对方已接听,通话已接通

列与呼叫段日志一致,但 Elapsed 替代了 Duration。已接通的呼叫段从接听时开始计时,正在振铃的呼叫段从开始时计时。标签页每隔几秒刷新一次。呼叫段结束后,会连同最终结果移入呼叫段日志。

搜索与筛选

页面顶部提供号码搜索和筛选条件,两者可组合使用:状态筛选加日期范围可缩小到同时匹配两者的呼叫段。

按号码搜索。 搜索框将号码与呼叫段的任一端进行匹配,一次查询即可找到拨入和拨出的呼叫段。

方向。 按呼出或呼入呼叫段筛选。

状态。 按 answered、no answer、failed、rejected 或 unknown 之一进行筛选。各状态的定义见状态说明。在 Live 标签页上,可选项为 ringing 和 in progress。

日期。 在通话记录中,选择预设范围(最近 24 小时、7 天或 30 天)或在日历上自定义范围。

本月用量

月度摘要包含三个卡片,统计当前 UTC 日历月的数据:

卡片统计内容
Legs当月已完成的呼叫段记录,包括未接听和被拒绝的
Total duration每个呼叫段的完整时长累加,从 Bird 接收到挂断
Billable time每个呼叫段的接听时长累加

总时长与计费时长之差即为未接听的振铃时间。未接听的呼叫段没有计费时长。

每个目的地费率会将计费时长按其计费增量取整。定价详情请参见费用与计费。

无论您如何筛选列表,这些卡片始终统计整个月的数据。

状态说明

日志中的呼叫段以下列结果之一结束:

状态发生了什么
Answered对方已接听。计费时长从接听到挂断
No answer尝试超时且未获接听;这并不能证明目的地电话已振铃
Rejected通话被拒绝,未接通
Failed通话已尝试但未成功,SIP response 是返回的信息
Unknown无法确定结果,例如始终没有收到最终响应

Rejected 涵盖两种拒绝情况,通过拒绝原因加以区分。一种是 Bird 在运营商介入之前拒绝了通话,此时原因会指明未通过的检查项;另一种是远端直接拒绝了通话,此时 SIP response 携带其应答且没有原因。来电被其所拨号码拒绝时同样显示为 Rejected 且无原因,因为它未触发任何检查:其 Inbound route 说明了该号码的设置。参见被拒绝的通话。

达到平台 4 小时通话时长上限的通话显示为 Answered,因为通话已接通,随后在达到上限时结束。计费时长从接听时算起,到 Bird 挂断时为止。如果通话执行了序列,其时间线会将呼叫段的结束原因显示为 Time limit reached。

Failed 不是拒绝。它表示通话已尝试但未成功:忙线号码显示为 Failed,运营商响应为 486;未分配的号码显示为 Failed,响应为 404。

如果您通过自己的工具读取这些值,请匹配您要处理的值,将其他值视为您未处理的状态而非错误。列表中还包含 busy 和 canceled,保留用于送达到您自有号码的来电。两者目前都未启用,相关结果均报告为 failed。

查看通话详情

打开一个呼叫段可查看 Bird 关于该连接的记录:

字段说明
Status呼叫段的结果(参见状态说明)。被 Bird 拒绝的呼叫段还会显示原因及处理方法
SIP response呼叫段的最终 SIP 代码,例如 200 或 486。被 Bird 拒绝的呼叫段携带 503,无运营商参与
From / To双方号码,均可复制
Inbound route在来电中,为该号码选定的路由,例如中继、转发、序列或拒绝。可链接到该号码
Trunk通话进入或送达的 SIP 中继,在多个站点共享一个工作区时很有用
StartedBird 接收该呼叫段的时间
Answered呼叫段被接听的时间,或 Not answered
Ended呼叫段被拆除的时间
Leg ID该连接记录自身的 ID(vcl_…)。可配合 GET /v1/voice/legs/{leg_id} 使用,也可在联系支持时引用。
Call ID同一通话的所有呼叫段共享此 ID(vcs_…)。使用 call_id 筛选器查找相关呼叫段。转接的通话有两个呼叫段共享同一个 Call ID。
Billing计费时长、总时长,以及呼叫段在计费后的费用

Inbound route 出现在来电上,记录所选的路由。被拒绝通话上的中继路由表示通话未到达有效的接听端。接收通话介绍了各路由方式及其各自记录的内容。

被拒绝的通话

被拒绝的通话是被拒绝而非接通的通话,由两种不同的情况导致。

Bird 在运营商介入之前拒绝了通话。 在外呼之前,Bird 会检查来电显示、目的地、账户限制和钱包余额,并拒绝未通过其中任何一项检查的通话。您的电话系统收到 SIP 503,而经过身份验证的通话记录则保存了具体原因。这可以防止未经身份验证的呼叫方获取账户详情。打开该通话可查看原因以及指向相关设置的链接。

被叫号码拒绝了呼叫。 如果来电拨打的号码设置为拒接,或该号码没有自己的路由而工作区默认路由也是拒接,则该呼叫被拒绝且不附带任何原因:它没有未通过我们的任何检查。Inbound route 字段会说明这一点。接收通话详细介绍了这些拒绝情况。

以下原因属于第一种情况。它们既适用于来电也适用于去电,因为账户限制和钱包在两种方向上都会被检查。

您可以修复的原因

原因发生了什么处理方式
source_not_allowed呼叫的来源地址不在中继的 IP 允许列表中将您的电话系统发送呼叫时使用的地址添加到中继的 IP 允许列表中
caller_id_not_verifiedFrom 头中的号码既不是符合条件的 Bird 号码,也不是此工作区中已验证的外部来电显示号码使用符合条件的 Bird 号码,或验证外部号码
destination_not_enabled您的工作区未启用拨打该国家的功能在目的地下启用该国家/地区
insufficient_balance您的钱包余额不足以支付该通话,因此 Bird 在发起前就拒绝了通话充值或启用自动充值,避免余额不足中断通话
daily_spend_exceeded该通话会使工作区超出每日语音支出限额;如果是去电,也可能超出工作区为被叫国家/地区设置的限额等待限额在下一个 UTC 日开始时重置,或在 Voice > Spend limit 下提高限额,也可在 Voice > Destinations 下提高该国家/地区的限额,但不能超过组织的上限
concurrent_calls_exceeded正在进行的通话数已达到账户允许的上限等待某个通话结束,或在 Billing and payments 下升级 Voice 套餐以提高上限
calls_per_second_exceeded您发起新通话的速率超出了账户允许的上限降低拨号速率后重试。立即重试会得到相同的响应。更高的 Voice 套餐可提高每秒呼叫数上限。
number_ownership_not_verified您已购买此号码,但号码所属国家尚未接受证明您拥有该号码的文件按号码的 ownership 字段要求完成操作,然后重新发起通话

外呼活动拨号器可能在远未达到并发通话上限时就触发 calls_per_second_exceeded,因此在做任何更改之前请先确认您收到的是哪一种。

Bird 为您解决的原因

这些问题在 Bird 侧。请联系支持并提供记录中的 Leg ID:

原因发生了什么
routing_not_configured工作区的路由仍在挂载中,这在新的语音配置完成之前属于正常现象
no_route_found路由已挂载,但未覆盖您拨打的号码。请携带 Leg ID 联系支持以检查路由
destination_blockedBird 的路由配置阻止了对该目的地的呼叫
call_not_permittedBird 无法为您的账户完成该呼叫,因此拒绝了呼叫,而非在未知条件下发起

拒绝详情解读

将状态与拒绝原因结合查看:

  • Rejected 且有拒绝原因。 Bird 拒绝了通话,拒绝原因会指出未通过的检查项。SIP response 为您的电话系统收到的 503。根据该原因对应的解决方法,处理账户或路由问题。对于去电,该 503 携带 X-BIRD-CALL-ID 头,其中包含记录的 Leg ID,因此无需匹配时间和号码即可将拒绝响应关联到对应记录。
  • 无拒绝原因的 Rejected。 在去电中,远端直接拒绝了通话,SIP response 携带其代码。在来电中,被叫号码拒绝了通话,Inbound route 说明了该号码的设置。
  • Failed。 通话已尝试但未成功,SIP response 包含返回的代码。486 表示忙线,404 表示号码未分配。这通常指向号码本身的问题,而非您的配置。

Bird 完全无法接受的通话会在记录创建之前就被拒绝,因此不会出现在日志中。语音故障排查介绍了这些通话的处理方式。

导出记录

在仪表盘之外使用这些记录的四种方式:

  • 导出 CSV。 Leg log 标签页上的 Download CSV 可跨页导出符合当前筛选条件的记录,最多 10,000 个呼叫段。所选记录超过上限时会返回错误,不会生成文件;请缩小日期范围或调整筛选条件,分批导出。文件包含时长和计费时长,但不含费用列。可在用量、支出与账单中查看费用。
  • 通过 API 读取记录。 GET /v1/voice/legs 和 GET /v1/voice/legs/{leg_id} 用于读取单个呼叫段(GET /v1/voice/calls 和 GET /v1/voice/calls/{call_id} 为仪表盘和 CLI 提供按通话分组的读取功能)。这些操作都需要具有 voice 范围和 read 级别权限的 API 密钥。其他 Voice 资源已发布的操作及其所需权限范围,请参见 API 参考文档。
  • 从终端读取记录。 Bird CLI 提供 bird voice calls list、bird voice calls get、bird voice legs list、bird voice legs get 和 bird voice stats。MCP 服务器向智能体提供相同的读取功能。
  • 订阅事件。 通话发生时,voice_call.initiated、voice_call.answered 和 voice_call.ended 会被推送到您的端点,因此您的系统无需轮询即可保持同步。参见语音事件。

后续步骤

页面涵盖内容
语音事件三种通话事件、其载荷以及如何消费它们
发起通话Bird 对 INVITE 的要求,以及通话的计价方式
接收通话将号码指向中继或转发,以及它记录的内容
SIP 中继IP 允许列表、允许的 API 密钥和 Digest 设置
语音目的地启用国家/地区,以及可用性的含义
错误API 错误响应及其恢复字段

继续查看此主题的文档、指南和示例。