通话记录
Voice > Calls 下的通话记录列出了工作区发起的每一通电话以及到达其号码的每一通来电,按时间从新到旧排列。每条记录都是一条通话详单 (CDR),包括已接通、振铃超时或被拒绝的通话。可用它查看通话时长、最终的 SIP 响应和费用。
Bird 在通话结束时写入每条记录,因此记录中的每通电话都有最终结果。旁边的 Live 标签页显示仍在进行中的通话。
通话列表
每行代表一通电话:
| 列 | 显示内容 |
|---|---|
| Status | 通话的结束方式(参见状态说明) |
| From | 主叫号码,即您的设备所呈现的来电显示号码 |
| To | 被叫号码 |
| Direction | 您的设备发起的通话显示为 outbound,到达您号码的来电显示为 inbound |
| Duration | 通话总时长,从 Bird 收到通话到挂断 |
| Started | Bird 收到通话的时间 |
列表分页显示,每页 25 通电话。选择任一行可打开该通话的详情。
实时通话
Live 标签页列出当前正在进行的通话,并显示计数,无需打开即可查看有多少通话正在进行。实时通话有以下两种状态之一:
| 状态 | 当前状况 |
|---|---|
| Ringing | 通话已到达目的地,但对方尚未接听 |
| In progress | 对方已接听,通话已接通 |
各列与通话记录一致,唯一区别是 Elapsed 替代了 Duration。已接通的通话从接听时开始计时,振铃中的通话从开始时计时。该标签页每隔几秒自动刷新。通话结束后,记录会连同最终结果一起移入通话记录。
搜索与筛选
页面顶部提供号码搜索和筛选条件,二者可组合使用:状态筛选加日期范围可将结果缩小到同时符合两个条件的通话。
按号码搜索。 搜索框会将号码与通话的主叫和被叫两端进行匹配,因此一次查询即可找到拨往该号码和来自该号码的所有通话。
方向。 按呼出或呼入筛选。
状态。 按 answered、no answer、failed、rejected 或 unknown 之一进行筛选。各状态的定义见状态说明。在 Live 标签页上,可选项为 ringing 和 in progress。
日期。 在通话记录中,选择预设范围(最近 24 小时、7 天或 30 天)或在日历上自定义范围。
本月用量
月度摘要包含三个卡片,统计当前 UTC 日历月的数据:
| 卡片 | 统计内容 |
|---|---|
| Calls | 本月已完成的通话记录数,包括未接听和被拒绝的通话 |
| Total duration | 所有通话的总时长累加,从 Bird 收到通话到挂断 |
| Billable time | 所有通话的已接听时长累加 |
总时长与计费时长之差即为未接听的振铃时间。未接听的通话没有计费时长。
每个目的地费率会将计费时长按其计费增量取整。定价详情请参见费用与计费。
无论您如何筛选列表,这些卡片始终统计整个月的数据。
状态说明
记录中的通话以下列结果之一结束:
| 状态 | 发生了什么 |
|---|---|
| Answered | 对方已接听。计费时长从接听到挂断 |
| No answer | 通话在目的地振铃,但在超时前未被接听 |
| Rejected | 通话被拒绝,未接通 |
| Failed | 通话已尝试但未成功,SIP response 是返回的信息 |
| Unknown | 无法确定结果,例如始终没有收到最终响应 |
Rejected 涵盖两种拒绝情况,通过拒绝原因加以区分。一种是 Bird 在运营商介入之前拒绝了通话,此时原因会指明未通过的检查项;另一种是远端直接拒绝了通话,此时 SIP response 携带其应答且没有原因。来电被其所拨号码拒绝时同样显示为 Rejected 且无原因,因为它未触发任何检查:其 Inbound route 说明了该号码的设置。参见被拒绝的通话。
Failed 不是拒绝。它表示通话已尝试但未成功:忙线号码显示为 Failed,运营商响应为 486;未分配的号码显示为 Failed,响应为 404。
如果您通过自己的工具读取这些值,请匹配您要处理的值,将其他值视为您未处理的状态而非错误。列表中还包含 busy 和 canceled,保留用于送达到您自有号码的来电。两者目前都未启用,相关结果均报告为 failed。
查看通话详情
打开一通通话会显示 Bird 记录的信息:
| 字段 | 说明 |
|---|---|
| Status | 通话结果(参见状态说明)。被 Bird 拒绝的通话还会显示原因及处理方法 |
| SIP response | 通话最终的 SIP 代码,例如 200 或 486。被 Bird 拒绝的通话携带 503,无运营商参与 |
| From / To | 双方号码,均可复制 |
| Inbound route | 仅在来电上显示,表示被叫号码被设置为执行的操作:送达至中继、转发或拒绝。可链接到该号码 |
| Trunk | 通话进入或送达的 SIP 中继,在多个站点共享一个工作区时很有用 |
| Started | Bird 收到通话的时间 |
| Answered | 通话被接听的时间,或 Not answered |
| Ended | 通话被拆除的时间 |
| Call ID | 该记录自身的 ID (vcl_…)。联系支持时请提供此 ID,也可用于与您自己的日志关联 |
| Session ID | 同一通话的所有段共享此 ID (vcs_…),便于将相关记录分组。转发的通话有两段共享同一个 Session ID |
| Billing | 计费时长、总时长以及通话计费完成后的费用 |
Inbound route 仅出现在来电上,它表示该号码被设置为执行的操作,而非该操作已成功:被拒绝通话上的中继路由表示号码指向了一个中继但该中继未接受通话。接收通话介绍了三种应答方式及其各自记录的内容。
被拒绝的通话
被拒绝的通话是被拒绝而非接通的通话,由两种不同的情况导致。
Bird 在运营商介入之前拒绝了通话。 在外呼之前,Bird 会检查来电显示、目的地、账户限制和钱包余额,并拒绝未通过其中任何一项检查的通话。您的电话系统收到 SIP 503,而经过身份验证的通话记录则保存了具体原因。这可以防止未经身份验证的呼叫方获取账户详情。打开该通话可查看原因以及指向相关设置的链接。
被叫号码拒绝了通话。 拨入一个设置为拒绝的号码,或一个未指向任何目标的号码,来电会被拒绝且没有任何原因:它未触发我们的任何检查。Inbound route 说明了情况。接收通话详细介绍了这些拒绝情况。
以下原因属于第一种情况。它们既适用于来电也适用于去电,因为账户限制和钱包在两种方向上都会被检查。
您可以修复的原因
| 原因 | 发生了什么 | 处理方法 |
|---|---|---|
| source_not_allowed | 通话来自中继 IP 允许列表未覆盖的地址 | 将您的电话系统发送地址添加到中继 |
| caller_id_not_verified | From 请求头中的号码不是该工作区的已验证来电显示号码 | 验证该号码,或使用一个已验证的号码 |
| destination_not_enabled | 您的工作区已关闭对该国家/地区的呼叫 | 在目的地中开启该国家/地区 |
| insufficient_balance | 您的钱包余额不足以支付该通话,Bird 直接拒绝了 | 充值,或开启自动充值以防余额不足中断通话 |
| daily_spend_exceeded | 该通话将超出您组织的每日语音消费上限 | 等待上限在下一个 UTC 日开始时重置,或联系 Bird 提高上限 |
| concurrent_calls_exceeded | 您的并发通话数已达到账户允许的上限 | 等待某通电话结束,或联系支持提高上限 |
| calls_per_second_exceeded | 您发起新通话的速度超过了账户允许的速率 | 降低拨号速率后重试。立即重试会得到相同的结果 |
| number_ownership_not_verified | 您购买了该号码,但号码所属国家/地区尚未接受证明您拥有权的材料 | 完成该号码的 ownership 字段所要求的内容,然后重新拨打 |
外呼活动拨号器可能在远未达到并发通话上限时就触发 calls_per_second_exceeded,因此在做任何更改之前请先确认您收到的是哪一种。
Bird 为您解决的原因
这些问题在 Bird 一侧。请联系支持并提供记录中的 Call ID:
| 原因 | 发生了什么 |
|---|---|
| routing_not_configured | 您工作区的路由仍在挂接中,这在新的语音配置完成过程中是正常的 |
| no_route_found | 路由已挂接,但未覆盖您拨打的号码。请携带 Call ID 联系支持以检查路由 |
| destination_blocked | Bird 的路由配置阻止了向该目的地的呼叫 |
| call_not_permitted | Bird 无法为您的账户完成该通话,因此拒绝了通话而非在未知条件下拨出 |
拒绝详情解读
将状态与拒绝原因结合查看:
- 有拒绝原因的 Rejected。 Bird 拒绝了通话,原因指明了未通过的检查项。SIP response 是您的电话系统收到的 503。按照原因中的账户或路由解决方法处理。
- 无拒绝原因的 Rejected。 在去电中,远端直接拒绝了通话,SIP response 携带其代码。在来电中,被叫号码拒绝了通话,Inbound route 说明了该号码的设置。
- Failed。 通话已尝试但未成功,SIP response 包含返回的代码。486 表示忙线,404 表示号码未分配。这通常指向号码本身的问题,而非您的配置。
Bird 完全无法接受的通话会在记录创建之前就被拒绝,因此不会出现在记录中。语音故障排查介绍了这些通话的处理方式。
导出记录
在仪表盘之外使用这些记录的四种方式:
- 导出 CSV。 Call log 标签页上的 Download CSV 会导出所有页面中与当前筛选条件匹配的所有记录。可用于对账和临时报表。
- 通过 API 读取。GET /v1/voice/calls 返回筛选后的列表,GET /v1/voice/calls/{call_id} 返回单条记录。两者均需要具有 voice 作用域、read 级别的 API 密钥。中继、来电显示和目的地设置不属于公开 API 的一部分。
- 从终端读取。Bird CLI 提供 bird voice list、bird voice get 和 bird voice stats。MCP server 向代理公开相同的读取接口。
- 订阅事件。 通话发生时,voice_call.initiated、voice_call.answered 和 voice_call.ended 会被推送到您的端点,因此您的系统无需轮询即可保持同步。参见语音事件。
后续步骤
| 页面 | 涵盖内容 |
|---|---|
| 语音事件 | 三种通话事件、其载荷以及如何消费它们 |
| 发起通话 | Bird 对 INVITE 的要求,以及通话的计价方式 |
| 接收通话 | 将号码指向中继或转发,以及它记录的内容 |
| SIP 中继 | IP 允许列表、允许的 API 密钥和 Digest 设置 |
| 语音目的地 | 启用国家/地区,以及可用性的含义 |
| 错误 | API 错误响应及其恢复字段 |