IPC预览与对讲:完整报文
约 1800 字大约 6 分钟
2026-10-16
本页是场景流程的完整 JSON 序列,按图中编号查阅。示例中的分支互斥,不能顺序重放全部报文;实际 ID、截止、SDP、地址和密钥须由运行时取得。实施状态及字段定义仍以场景与命令页为准。
编号报文
M01 · interaction.open
{
"msgToken": "s07-98",
"method": "interaction.open",
"params": {
"purpose": "ipcLiveView",
"cameraId": "front"
},
"target": {
"productID": "p-demo",
"deviceName": "device-demo"
}
}M02 · interaction.result
{
"msgToken": "s07-98",
"method": "interaction.result",
"sessionId": "s07-session",
"code": 200,
"data": {
"operation": "interaction.open",
"state": "invited",
"sessionId": "s07-session"
}
}M03 · sessionInvite
{
"msgToken": "s07-99",
"method": "sessionInvite",
"sessionId": "s07-session",
"eventSeq": 1,
"params": {
"purpose": "ipcLiveView",
"admission": "direct",
"cameraId": "front",
"transport": "webrtc",
"tracks": [
{
"trackId": "video-1",
"kind": "video",
"sourceId": "front",
"direction": "sendonly",
"codec": "H264",
"state": "requested"
}
],
"expiresAt": 1900000000000
}
}M04 · sessionAccept
{
"msgToken": "s07-99",
"method": "sessionAccept",
"sessionId": "s07-session",
"params": {
"acceptedTracks": [
"video-1"
]
}
}M05 · requestAck
{
"msgToken": "s07-99",
"method": "requestAck",
"sessionId": "s07-session",
"code": 200,
"data": {
"requestMethod": "sessionAccept",
"result": {
"state": "negotiating"
}
}
}M06 · mediaOffer
{
"msgToken": "s07-100",
"method": "mediaOffer",
"sessionId": "s07-session",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M07 · mediaAnswer
{
"msgToken": "s07-100",
"method": "mediaAnswer",
"sessionId": "s07-session",
"code": 200,
"data": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M08 · mediaState
{
"msgToken": "s07-101",
"method": "mediaState",
"sessionId": "s07-session",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M09 · requestAck
{
"msgToken": "s07-101",
"method": "requestAck",
"sessionId": "s07-session",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 1,
"state": "connected"
}
}
}M10 · interaction.mediaOffer
{
"msgToken": "s07-102",
"method": "interaction.mediaOffer",
"sessionId": "s07-session",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP viewer offer>"
}
}
}M11 · interaction.result
{
"msgToken": "s07-102",
"method": "interaction.result",
"sessionId": "s07-session",
"code": 200,
"data": {
"operation": "interaction.mediaOffer",
"state": "negotiating",
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP viewer answer>"
}
}
}M12 · interaction.mediaState
{
"msgToken": "s07-103",
"method": "interaction.mediaState",
"sessionId": "s07-session",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M13 · interaction.result
{
"msgToken": "s07-103",
"method": "interaction.result",
"sessionId": "s07-session",
"code": 200,
"data": {
"operation": "interaction.mediaState",
"state": "connected",
"mediaRevision": 1
}
}M14 · sessionEstablished
{
"msgToken": "s07-104",
"method": "sessionEstablished",
"sessionId": "s07-session",
"eventSeq": 2,
"data": {
"state": "established",
"mediaRevision": 1
}
}M15 · trackControl
{
"msgToken": "s07-105",
"method": "trackControl",
"sessionId": "s07-session",
"eventSeq": 3,
"params": {
"trackId": "video-1",
"operation": "publish",
"mediaRevision": 1
}
}M16 · trackState
{
"msgToken": "s07-105",
"method": "trackState",
"sessionId": "s07-session",
"code": 200,
"data": {
"trackId": "video-1",
"state": "active",
"mediaRevision": 1
}
}M17 · interaction.open
{
"msgToken": "s07-106",
"method": "interaction.open",
"params": {
"purpose": "ipcTalk",
"cameraId": "front",
"callId": "existing-im-call"
},
"target": {
"productID": "p-demo",
"deviceName": "device-demo"
}
}M18 · interaction.result
{
"msgToken": "s07-106",
"method": "interaction.result",
"sessionId": "s07-talk",
"code": 200,
"data": {
"operation": "interaction.open",
"state": "invited",
"sessionId": "s07-talk"
}
}M19 · sessionInvite
{
"msgToken": "s07-107",
"method": "sessionInvite",
"sessionId": "s07-talk",
"eventSeq": 1,
"params": {
"purpose": "ipcTalk",
"admission": "direct",
"transport": "webrtc",
"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"
}
],
"expiresAt": 1900000000000,
"cameraId": "front"
}
}会议绑定和IM发言资格由后端以可信身份保存、持续复核,不由设备上传成员权限或借用预览会话。此独立对讲邀请仅请求麦克风发布和扬声器接收,不附加视频、AI交互模式或AI取帧授权。当前契约与准入已实现,持久对讲Owner及C++实际媒体仍待接入,见支持范围。
M20 · sessionAccept
{
"msgToken": "s07-107",
"method": "sessionAccept",
"sessionId": "s07-talk",
"params": {
"acceptedTracks": [
"mic-1",
"speaker-1"
]
}
}M21 · requestAck
{
"msgToken": "s07-107",
"method": "requestAck",
"sessionId": "s07-talk",
"code": 200,
"data": {
"requestMethod": "sessionAccept",
"result": {
"state": "negotiating"
}
}
}M22 · mediaOffer
{
"msgToken": "s07-108",
"method": "mediaOffer",
"sessionId": "s07-talk",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M23 · mediaAnswer
{
"msgToken": "s07-108",
"method": "mediaAnswer",
"sessionId": "s07-talk",
"code": 200,
"data": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M24 · mediaState
{
"msgToken": "s07-109",
"method": "mediaState",
"sessionId": "s07-talk",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M25 · requestAck
{
"msgToken": "s07-109",
"method": "requestAck",
"sessionId": "s07-talk",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 1,
"state": "connected"
}
}
}M26 · interaction.mediaOffer
{
"msgToken": "s07-talk-peer-3",
"method": "interaction.mediaOffer",
"sessionId": "s07-talk",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP talk offer>"
}
}
}M27 · interaction.result
{
"msgToken": "s07-talk-peer-3",
"method": "interaction.result",
"sessionId": "s07-talk",
"code": 200,
"data": {
"operation": "interaction.mediaOffer",
"state": "negotiating",
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP talk answer>"
}
}
}M28 · interaction.mediaState
{
"msgToken": "s07-talk-peer-4",
"method": "interaction.mediaState",
"sessionId": "s07-talk",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M29 · interaction.result
{
"msgToken": "s07-talk-peer-4",
"method": "interaction.result",
"sessionId": "s07-talk",
"code": 200,
"data": {
"operation": "interaction.mediaState",
"state": "connected",
"mediaRevision": 1
}
}M30 · sessionEstablished
{
"msgToken": "s07-110",
"method": "sessionEstablished",
"sessionId": "s07-talk",
"eventSeq": 2,
"data": {
"state": "established",
"mediaRevision": 1
}
}M31 · interaction.end
{
"msgToken": "s07-111",
"method": "interaction.end",
"sessionId": "s07-talk",
"params": {
"reason": "userStopped"
}
}M32 · interaction.result
{
"msgToken": "s07-111",
"method": "interaction.result",
"sessionId": "s07-talk",
"code": 200,
"data": {
"operation": "interaction.end",
"state": "ended"
}
}M33 · sessionEnded
{
"msgToken": "s07-112",
"method": "sessionEnded",
"sessionId": "s07-talk",
"eventSeq": 3,
"data": {
"state": "ended",
"reason": "userStopped"
}
}M34 · interaction.subscribe
{
"msgToken": "s07-113",
"method": "interaction.subscribe",
"sessionId": "s07-session",
"params": {
"trackId": "video-1"
}
}M35 · interaction.result
{
"msgToken": "s07-113",
"method": "interaction.result",
"sessionId": "s07-viewer-b",
"code": 200,
"data": {
"operation": "interaction.subscribe",
"state": "negotiating",
"sessionId": "s07-viewer-b",
"playbackToken": "<viewer-b-only-token>"
}
}M36 · interaction.mediaOffer
{
"msgToken": "s07-viewer-b-peer-7",
"method": "interaction.mediaOffer",
"sessionId": "s07-viewer-b",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP second viewer offer>"
}
}
}M37 · interaction.result
{
"msgToken": "s07-viewer-b-peer-7",
"method": "interaction.result",
"sessionId": "s07-viewer-b",
"code": 200,
"data": {
"operation": "interaction.mediaOffer",
"state": "negotiating",
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP second viewer answer>"
}
}
}M38 · interaction.mediaState
{
"msgToken": "s07-viewer-b-peer-8",
"method": "interaction.mediaState",
"sessionId": "s07-viewer-b",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M39 · interaction.result
{
"msgToken": "s07-viewer-b-peer-8",
"method": "interaction.result",
"sessionId": "s07-viewer-b",
"code": 200,
"data": {
"operation": "interaction.mediaState",
"state": "connected",
"mediaRevision": 1
}
}M40 · interaction.end
{
"msgToken": "viewer-b-end",
"method": "interaction.end",
"sessionId": "s07-viewer-b",
"params": {
"reason": "userStopped"
}
}M41 · interaction.result
{
"msgToken": "viewer-b-end",
"method": "interaction.result",
"sessionId": "s07-viewer-b",
"code": 200,
"data": {
"operation": "interaction.end",
"state": "ended"
}
}M42 · trackControl
{
"msgToken": "s07-114",
"method": "trackControl",
"sessionId": "s07-session",
"eventSeq": 4,
"params": {
"trackId": "video-1",
"operation": "stop",
"mediaRevision": 1
}
}M43 · trackState
{
"msgToken": "s07-114",
"method": "trackState",
"sessionId": "s07-session",
"code": 200,
"data": {
"trackId": "video-1",
"state": "stopped",
"mediaRevision": 1
}
}M44 · sessionEnded
{
"msgToken": "s07-115",
"method": "sessionEnded",
"sessionId": "s07-session",
"eventSeq": 5,
"data": {
"state": "ended",
"reason": "permissionRevoked"
}
}M45 · interaction.state
{
"msgToken": "s07-116",
"method": "interaction.state",
"sessionId": "s07-session",
"eventSeq": 6,
"data": {
"state": "ended",
"reason": "permissionRevoked"
}
}M46 · sessionReject
{
"msgToken": "s07-99",
"method": "sessionReject",
"sessionId": "s07-session",
"params": {
"reason": "privacyEnabled"
}
}M47 · requestAck
{
"msgToken": "s07-99",
"method": "requestAck",
"sessionId": "s07-session",
"code": 200,
"data": {
"requestMethod": "sessionReject",
"result": {
"state": "ended",
"reason": "privacyEnabled"
}
}
}M48 · sessionEnded
{
"msgToken": "s07-117",
"method": "sessionEnded",
"sessionId": "s07-session",
"eventSeq": 7,
"data": {
"state": "ended",
"reason": "userRejected"
}
}更新日志
2026/10/17 03:27
查看所有更新日志
d04e1-docs(AI与音视频): 按公共主线与场景分支整合接入手册于
