通话状态
查询指定通话的当前状态,包括通话类型、参与方标识、时间戳及结束原因等完整信息。通话双方均可调用。
data.status 反映通话所处阶段,状态流转如下:
| 状态 | 说明 |
|---|---|
ringing |
振铃中(发起后的初始状态) |
accepted |
已接听(被叫接受) |
rejected |
已拒绝(被叫拒绝) |
cancelled |
已取消(主叫在接听前取消) |
ended |
已挂断(任一方挂断) |
missed |
未接听(振铃超时,服务端自动收敛) |
流转关系:ringing → accepted(接听)/ rejected(拒绝)/ cancelled(主叫取消)/ missed(超时);accepted → ended(挂断)。非法的状态跳转会返回 40901 当前通话状态不允许此操作。通话控制的各动作前提见通话控制。
| 项目 | 内容 |
|---|---|
| Method | GET |
| URL | /api/calls/{callId}/state |
| 鉴权 | 是,Bearer Token |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callId | int | 是 | 路径参数,通话 ID |
curl -X GET "/api/calls/5001/state" \ -H "Authorization: Bearer your_token_here"| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | 状态码,0 表示成功 |
| message | string | 提示信息 |
| data.call_id | int | 通话 ID |
| data.status | string | 当前状态 |
| data.call_type | string | 通话类型(audio / video) |
| data.biz_type | string | 业务类型 |
| data.conversation_id | int | 所属会话 ID |
| data.channel_name | string | RTC 频道名 |
| data.app_id | string | RTC 应用 ID |
| data.caller_user_id | int | 主叫用户 ID |
| data.callee_user_id | int | 被叫用户 ID |
| data.caller_uid | string | 主叫 RTC 用户标识 |
| data.callee_uid | string | 被叫 RTC 用户标识 |
| data.accepted_at | string|null | 接听时间(ISO 8601),可为空 |
| data.started_at | string|null | 通话开始时间(ISO 8601),可为空 |
| data.ended_at | string|null | 通话结束时间(ISO 8601),可为空 |
| data.end_reason | string|null | 结束原因,可为空,常见取值见下表 |
| data.version | int | 数据版本号 |
end_reason 常见取值
| 取值 | 说明 |
|---|---|
no_answer_timeout |
振铃超时无人接听 |
callee_busy |
对方忙线 |
user_reject |
被叫拒绝 |
caller_cancel |
主叫取消 |
local_hangup |
一方主动挂断 |
{ "code": 0, "message": "success", "data": { "call_id": 5001, "status": "ended", "call_type": "video", "biz_type": "single", "conversation_id": 1001, "channel_name": "call_5001_1001", "app_id": "xxxxxxxxxxxxxxxx", "caller_user_id": 10001, "callee_user_id": 20002, "caller_uid": "10001", "callee_uid": "20002", "accepted_at": "2026-07-05T10:05:10Z", "started_at": "2026-07-05T10:05:30Z", "ended_at": "2026-07-05T10:12:45Z", "end_reason": "local_hangup", "version": 6 }}{ "code": 41001, "message": "通话不存在", "data": null}{ "code": 41010, "message": "非参与方", "data": null}
