通话记录
Voice > Legs 下的呼叫段日志列出工作区发起或接收的每条连接,按时间从新到旧排列。一次通话可以包含多个呼叫段,例如来电连接和转接连接。每条记录都是一条通话详单 (CDR),包括响铃超时或被拒绝的连接。用它来查看时长、最终的 SIP 响应和费用。
Bird 在呼叫段结束时写入每条记录,因此日志中的每个条目都有最终结果。旁边的 Live 标签页显示仍在进行中的呼叫段。
要查看完整交互,请打开 Voice > Calls。一次通话将相关的呼叫段和参与方分组在一起。在关联分析时使用 Call ID,在排查单条连接时使用 Leg ID;它们标识的是不同的记录。
通话列表
每行是一个呼叫段。一次通话包含多个呼叫段时,会显示多行:
| 列 | 显示内容 |
|---|---|
| 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 日历月的数据:
| 卡片 | 统计内容 |
|---|---|
| Legs | 当月已完成的呼叫段记录,包括未接听和被拒绝的 |
| 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 | 呼叫段被拆除的时间 |
| 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 允许列表未覆盖的地址 | 将您的电话系统发送地址添加到中继 |
caller_id_not_verified | From 请求头中的号码既不是该工作区的合格 Bird 号码,也不是已验证的外部来电显示号码 | 使用合格的 Bird 号码,或验证该外部号码 |
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 侧。请联系支持并提供记录中的 Leg ID:
| 原因 | 发生了什么 |
|---|---|
routing_not_configured | 工作区的路由仍在挂载中,这在新的语音配置完成之前属于正常现象 |
no_route_found | 路由已挂载,但未覆盖您拨打的号码。请携带 Leg 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。 在 Leg log 标签页点击 Download CSV,即可跨页导出与当前筛选条件匹配的记录,上限为 10,000 个呼叫段。选择范围更大时会返回错误且不生成文件;缩小日期范围或筛选条件后分批导出。可用于对账和临时报表。
- 通过 API 读取。
GET /v1/voice/legs返回筛选后的列表,GET /v1/voice/legs/{leg_id}返回单条记录。两者都需要在read级别具有voice范围的 API 密钥。查看 API 参考以了解其他 Voice 资源的已发布操作及其所需范围。 - 从终端读取。 Bird CLI 提供
bird voice legs list、bird voice legs get和bird voice stats。MCP server 向代理暴露相同的读取接口。 - 订阅事件。 通话发生时,
voice_call.initiated、voice_call.answered和voice_call.ended会被推送到您的端点,因此您的系统无需轮询即可保持同步。参见语音事件。