跨端接续与资源抢占恢复:完整报文
约 1098 字大约 4 分钟
2026-10-16
本页是场景流程的完整 JSON 序列,按图中编号查阅。示例中的分支互斥,不能顺序重放全部报文;实际 ID、截止、SDP、地址和密钥须由运行时取得。实施状态及字段定义仍以场景与命令页为准。
编号报文
M01 · endpointControl
{
"msgToken": "s18-62",
"method": "endpointControl",
"sessionId": "s18-session",
"params": {
"operation": "prepare",
"expectedRevision": 0,
"handoffId": "handoff-1",
"target": {
"kind": "endpoint",
"id": "tablet-a"
}
}
}M02 · endpointState
{
"msgToken": "s18-62",
"method": "endpointState",
"sessionId": "s18-session",
"data": {
"state": "preparing",
"revision": 1,
"handoffId": "handoff-1"
},
"code": 200
}M20 · sessionInvite
{
"msgToken": "s18-s18-new-invite",
"method": "sessionInvite",
"sessionId": "s18-new",
"eventSeq": 1,
"params": {
"purpose": "humanCall",
"transport": "webrtc",
"admission": "accept",
"tracks": [
{
"trackId": "voice",
"kind": "audio",
"sourceId": "microphone",
"sourceType": "microphone",
"direction": "sendrecv",
"codec": "opus",
"state": "requested"
}
],
"expiresAt": 1900000000000,
"callType": "voice",
"callGroupId": "s18-group"
}
}M21 · sessionAccept
{
"msgToken": "s18-s18-new-invite",
"method": "sessionAccept",
"sessionId": "s18-new",
"params": {
"acceptedTracks": [
"voice"
]
}
}M22 · requestAck
{
"msgToken": "s18-s18-new-invite",
"method": "requestAck",
"sessionId": "s18-new",
"code": 200,
"data": {
"requestMethod": "sessionAccept",
"result": {
"state": "negotiating"
}
}
}M23 · mediaOffer
{
"msgToken": "s18-s18-new-offer",
"method": "mediaOffer",
"sessionId": "s18-new",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M24 · mediaAnswer
{
"msgToken": "s18-s18-new-offer",
"method": "mediaAnswer",
"sessionId": "s18-new",
"code": 200,
"data": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M25 · mediaState
{
"msgToken": "s18-s18-new-connected",
"method": "mediaState",
"sessionId": "s18-new",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M26 · requestAck
{
"msgToken": "s18-s18-new-connected",
"method": "requestAck",
"sessionId": "s18-new",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 1,
"state": "connected"
}
}
}M27 · sessionEstablished
{
"msgToken": "s18-s18-new-established",
"method": "sessionEstablished",
"sessionId": "s18-new",
"eventSeq": 2,
"data": {
"state": "established",
"mediaRevision": 1
}
}M03 · endpointState
{
"msgToken": "s18-63",
"method": "endpointState",
"sessionId": "s18-session",
"data": {
"state": "ready",
"revision": 2,
"handoffId": "handoff-1",
"candidateSessionId": "s18-new"
},
"eventSeq": 1
}M04 · endpointControl
{
"msgToken": "s18-64",
"method": "endpointControl",
"sessionId": "s18-session",
"params": {
"operation": "commit",
"expectedRevision": 2,
"handoffId": "handoff-1",
"candidateSessionId": "s18-new"
}
}M05 · endpointState
{
"msgToken": "s18-64",
"method": "endpointState",
"sessionId": "s18-session",
"data": {
"state": "committed",
"revision": 3,
"handoffId": "handoff-1",
"candidateSessionId": "s18-new"
},
"code": 200
}M06 · sessionEnded
{
"msgToken": "s18-65",
"method": "sessionEnded",
"sessionId": "s18-session",
"data": {
"state": "ended",
"reason": "handoffCommitted"
},
"eventSeq": 2
}M07 · endpointState
{
"msgToken": "s18-66",
"method": "endpointState",
"sessionId": "s18-session",
"data": {
"state": "failed",
"revision": 2,
"handoffId": "handoff-1",
"reason": "handoffTimeout"
},
"eventSeq": 3
}M08 · focusControl
{
"msgToken": "s18-67",
"method": "focusControl",
"sessionId": "s-ai",
"params": {
"operation": "suspend",
"expectedRevision": 0,
"focusId": "ai-focus",
"resources": [
"microphone",
"speaker"
],
"priority": "call",
"resumePolicy": "explicit"
},
"eventSeq": 1
}M09 · focusState
{
"msgToken": "s18-67",
"method": "focusState",
"sessionId": "s-ai",
"data": {
"state": "suspended",
"revision": 1,
"focusId": "ai-focus",
"resources": [
"microphone",
"speaker"
]
},
"code": 200
}M10 · focusControl
{
"msgToken": "s18-68",
"method": "focusControl",
"sessionId": "s-call",
"params": {
"operation": "acquire",
"expectedRevision": 1,
"focusId": "call-focus",
"resources": [
"microphone",
"speaker"
],
"priority": "call",
"resumePolicy": "never",
"expiresAt": 1900000000000
},
"eventSeq": 1
}M11 · focusState
{
"msgToken": "s18-68",
"method": "focusState",
"sessionId": "s-call",
"data": {
"state": "acquired",
"revision": 2,
"focusId": "call-focus",
"resources": [
"microphone",
"speaker"
]
},
"code": 200
}M12 · focusControl
{
"msgToken": "s18-69",
"method": "focusControl",
"sessionId": "s-call",
"params": {
"operation": "release",
"expectedRevision": 2,
"focusId": "call-focus",
"resources": [
"microphone",
"speaker"
],
"priority": "call",
"resumePolicy": "never"
},
"eventSeq": 2
}M13 · focusState
{
"msgToken": "s18-69",
"method": "focusState",
"sessionId": "s-call",
"data": {
"state": "released",
"revision": 3,
"focusId": "call-focus",
"resources": [
"microphone",
"speaker"
]
},
"code": 200
}M14 · focusControl
{
"msgToken": "s18-70",
"method": "focusControl",
"sessionId": "s-ai",
"params": {
"operation": "restore",
"expectedRevision": 3,
"focusId": "ai-focus",
"resources": [
"microphone",
"speaker"
],
"priority": "conversation",
"resumePolicy": "explicit",
"expiresAt": 1900000000000
},
"eventSeq": 2
}M15 · focusState
{
"msgToken": "s18-70",
"method": "focusState",
"sessionId": "s-ai",
"data": {
"state": "restored",
"revision": 4,
"focusId": "ai-focus",
"resources": [
"microphone",
"speaker"
]
},
"code": 200
}M16 · focusControl
{
"msgToken": "s18-71",
"method": "focusControl",
"sessionId": "s-ai",
"params": {
"operation": "restore",
"expectedRevision": 3,
"focusId": "ai-focus",
"resources": [
"microphone",
"speaker"
],
"priority": "conversation",
"resumePolicy": "explicit",
"expiresAt": 1900000000000
},
"eventSeq": 3
}M17 · focusState
{
"msgToken": "s18-71",
"method": "focusState",
"sessionId": "s-ai",
"data": {
"state": "denied",
"revision": 4,
"focusId": "ai-focus",
"resources": [
"microphone",
"speaker"
],
"reason": "userIntentChanged"
},
"code": 409
}M18 · endpointControl
{
"msgToken": "s18-extra-17",
"method": "endpointControl",
"sessionId": "s18-abort",
"params": {
"operation": "abort",
"expectedRevision": 1,
"handoffId": "handoff-abort"
}
}M19 · endpointState
{
"msgToken": "s18-extra-17",
"method": "endpointState",
"sessionId": "s18-abort",
"code": 200,
"data": {
"state": "aborted",
"revision": 2,
"handoffId": "handoff-abort",
"reason": "userCancelled"
}
}更新日志
2026/10/17 03:27
查看所有更新日志
d04e1-docs(AI与音视频): 按公共主线与场景分支整合接入手册于
