能力与会话:完整报文
约 1385 字大约 5 分钟
2026-10-16
本页是场景流程的完整 JSON 序列,按图中编号查阅。示例中的分支互斥,不能顺序重放全部报文;实际 ID、截止、SDP、地址和密钥须由运行时取得。实施状态及字段定义仍以场景与命令页为准。
编号报文
M01 · capabilityReport
{
"msgToken": "cap-s01",
"method": "capabilityReport",
"params": {
"revision": 1,
"purposes": [
"aiConversation"
],
"transports": [
"udp",
"webrtc"
],
"supportedInteractionModes": [
"halfDuplex",
"fullDuplex"
],
"aecMode": "device",
"audio": {
"format": "opus",
"sampleRate": 16000,
"channels": 1,
"frameDuration": 20
},
"features": [
"audio"
]
}
}M02 · requestAck
{
"msgToken": "cap-s01",
"method": "requestAck",
"code": 200,
"data": {
"requestMethod": "capabilityReport",
"result": {
"acceptedRevision": 1
}
}
}M03 · sessionCreate
{
"msgToken": "s01-1",
"method": "sessionCreate",
"params": {
"purpose": "aiConversation",
"transport": "webrtc",
"supportedInteractionModes": [
"halfDuplex"
],
"audioParams": {
"format": "opus",
"sampleRate": 16000,
"channels": 1,
"frameDuration": 20
},
"tracks": [
{
"trackId": "mic-1",
"kind": "audio",
"sourceId": "mic",
"direction": "sendonly",
"codec": "opus",
"state": "requested"
},
{
"trackId": "speaker-1",
"kind": "audio",
"sourceId": "speaker",
"direction": "recvonly",
"codec": "opus",
"state": "requested"
}
]
}
}M04 · sessionCreated
{
"msgToken": "s01-1",
"method": "sessionCreated",
"sessionId": "s01-session",
"code": 200,
"data": {
"state": "negotiating",
"selected": {
"transport": "webrtc",
"interactionMode": "halfDuplex",
"audioParams": {
"format": "opus",
"sampleRate": 16000,
"channels": 1,
"frameDuration": 20
}
},
"tracks": [
{
"trackId": "mic-1",
"kind": "audio",
"sourceId": "mic",
"direction": "sendonly",
"codec": "opus",
"state": "requested"
},
{
"trackId": "speaker-1",
"kind": "audio",
"sourceId": "speaker",
"direction": "recvonly",
"codec": "opus",
"state": "requested"
}
]
}
}M05 · mediaOffer
{
"msgToken": "s01-2",
"method": "mediaOffer",
"sessionId": "s01-session",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M06 · mediaAnswer
{
"msgToken": "s01-2",
"method": "mediaAnswer",
"sessionId": "s01-session",
"code": 200,
"data": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M07 · mediaState
{
"msgToken": "s01-3",
"method": "mediaState",
"sessionId": "s01-session",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M08 · requestAck
{
"msgToken": "s01-3",
"method": "requestAck",
"sessionId": "s01-session",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 1,
"state": "connected"
}
}
}M09 · sessionEstablished
{
"msgToken": "s01-4",
"method": "sessionEstablished",
"sessionId": "s01-session",
"eventSeq": 1,
"data": {
"state": "established",
"mediaRevision": 1
}
}M10 · sessionEnd
{
"msgToken": "s01-5",
"method": "sessionEnd",
"sessionId": "s01-session",
"params": {
"reason": "userHangup"
}
}M11 · sessionEnded
{
"msgToken": "s01-5",
"method": "sessionEnded",
"sessionId": "s01-session",
"code": 200,
"data": {
"state": "ended",
"reason": "userHangup"
}
}M12 · sessionCreated
{
"msgToken": "s01-1",
"method": "sessionCreated",
"code": 422,
"data": {
"reason": "unsupportedCapability"
}
}M13 · interaction.open
{
"msgToken": "s01-6",
"method": "interaction.open",
"params": {
"purpose": "ipcLiveView",
"cameraId": "front"
},
"target": {
"productID": "p-demo",
"deviceName": "device-demo"
}
}M14 · interaction.result
{
"msgToken": "s01-6",
"method": "interaction.result",
"sessionId": "s01-invited",
"code": 200,
"data": {
"operation": "interaction.open",
"state": "invited",
"sessionId": "s01-invited"
}
}M15 · sessionInvite
{
"msgToken": "s01-7",
"method": "sessionInvite",
"sessionId": "s01-invited",
"eventSeq": 1,
"params": {
"purpose": "ipcLiveView",
"admission": "accept",
"transport": "webrtc",
"cameraId": "front",
"tracks": [
{
"trackId": "video-1",
"kind": "video",
"sourceId": "front",
"direction": "sendonly",
"codec": "H264",
"state": "requested"
}
],
"expiresAt": 1900000000000
}
}M16 · sessionAccept
{
"msgToken": "s01-7",
"method": "sessionAccept",
"sessionId": "s01-invited",
"params": {
"acceptedTracks": [
"video-1"
]
}
}M17 · requestAck
{
"msgToken": "s01-7",
"method": "requestAck",
"sessionId": "s01-invited",
"code": 200,
"data": {
"requestMethod": "sessionAccept",
"result": {
"state": "negotiating"
}
}
}M18 · mediaOffer
{
"msgToken": "s01-8",
"method": "mediaOffer",
"sessionId": "s01-invited",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M19 · mediaAnswer
{
"msgToken": "s01-8",
"method": "mediaAnswer",
"sessionId": "s01-invited",
"code": 200,
"data": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M20 · mediaState
{
"msgToken": "s01-9",
"method": "mediaState",
"sessionId": "s01-invited",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M21 · requestAck
{
"msgToken": "s01-9",
"method": "requestAck",
"sessionId": "s01-invited",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 1,
"state": "connected"
}
}
}M22 · interaction.mediaOffer
{
"msgToken": "s01-invited-peer-1",
"method": "interaction.mediaOffer",
"sessionId": "s01-invited",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP viewer offer>"
}
}
}M23 · interaction.result
{
"msgToken": "s01-invited-peer-1",
"method": "interaction.result",
"sessionId": "s01-invited",
"code": 200,
"data": {
"operation": "interaction.mediaOffer",
"state": "negotiating",
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP viewer answer>"
}
}
}M24 · interaction.mediaState
{
"msgToken": "s01-i2",
"method": "interaction.mediaState",
"sessionId": "s01-invited",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M25 · interaction.result
{
"msgToken": "s01-i2",
"method": "interaction.result",
"sessionId": "s01-invited",
"code": 200,
"data": {
"operation": "interaction.mediaState",
"state": "connected",
"mediaRevision": 1
}
}M26 · sessionEstablished
{
"msgToken": "s01-10",
"method": "sessionEstablished",
"sessionId": "s01-invited",
"eventSeq": 2,
"data": {
"state": "established",
"mediaRevision": 1
}
}M27 · interaction.state
{
"msgToken": "s01-11",
"method": "interaction.state",
"sessionId": "s01-invited",
"eventSeq": 3,
"data": {
"state": "established"
}
}M28 · mediaOffer
{
"msgToken": "s01-12",
"method": "mediaOffer",
"sessionId": "s01-invited",
"params": {
"mediaRevision": 2,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M29 · mediaAnswer
{
"msgToken": "s01-12",
"method": "mediaAnswer",
"sessionId": "s01-invited",
"code": 200,
"data": {
"mediaRevision": 2,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M30 · mediaState
{
"msgToken": "s01-13",
"method": "mediaState",
"sessionId": "s01-invited",
"params": {
"mediaRevision": 2,
"state": "connected"
}
}M31 · requestAck
{
"msgToken": "s01-13",
"method": "requestAck",
"sessionId": "s01-invited",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 2,
"state": "connected"
}
}
}M32 · sessionEnd
{
"msgToken": "s01-14",
"method": "sessionEnd",
"sessionId": "s01-invited",
"params": {
"reason": "userHangup"
}
}M33 · sessionEnded
{
"msgToken": "s01-14",
"method": "sessionEnded",
"sessionId": "s01-invited",
"code": 200,
"data": {
"state": "ended",
"reason": "userHangup"
}
}M34 · sessionReject
{
"msgToken": "s01-7",
"method": "sessionReject",
"sessionId": "s01-invited",
"params": {
"reason": "privacyEnabled"
}
}M35 · requestAck
{
"msgToken": "s01-7",
"method": "requestAck",
"sessionId": "s01-invited",
"code": 200,
"data": {
"requestMethod": "sessionReject",
"result": {
"state": "ended",
"reason": "privacyEnabled"
}
}
}M36 · sessionEnded
{
"msgToken": "s01-15",
"method": "sessionEnded",
"sessionId": "s01-invited",
"eventSeq": 4,
"data": {
"state": "ended",
"reason": "userRejected"
}
}M37 · interaction.state
{
"msgToken": "s01-16",
"method": "interaction.state",
"sessionId": "s01-invited",
"eventSeq": 5,
"data": {
"state": "ended",
"reason": "userRejected"
}
}M38 · sessionEnded
{
"msgToken": "s01-17",
"method": "sessionEnded",
"sessionId": "s01-invited",
"eventSeq": 6,
"data": {
"state": "ended",
"reason": "inviteTimeout"
}
}M39 · interaction.state
{
"msgToken": "s01-18",
"method": "interaction.state",
"sessionId": "s01-invited",
"eventSeq": 7,
"data": {
"state": "ended",
"reason": "inviteTimeout"
}
}更新日志
2026/10/17 03:27
查看所有更新日志
d04e1-docs(AI与音视频): 按公共主线与场景分支整合接入手册于
