人与AI视频:完整报文
约 1420 字大约 5 分钟
2026-10-16
本页是场景流程的完整 JSON 序列,按图中编号查阅。示例中的分支互斥,不能顺序重放全部报文;实际 ID、截止、SDP、地址和密钥须由运行时取得。实施状态及字段定义仍以场景与命令页为准。
编号报文
M01 · sessionCreate
{
"msgToken": "s09-127",
"method": "sessionCreate",
"params": {
"purpose": "aiVision",
"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"
},
{
"trackId": "video-1",
"kind": "video",
"sourceId": "front",
"direction": "sendonly",
"codec": "H264",
"state": "paused"
}
],
"cameraId": "front",
"supportedInteractionModes": [
"halfDuplex"
],
"audioParams": {"format":"opus","sampleRate":48000,"channels":1,"frameDuration":20}
}
}M02 · sessionCreated
{
"msgToken": "s09-127",
"method": "sessionCreated",
"sessionId": "s09-session",
"code": 200,
"data": {
"state": "negotiating",
"selected": {
"transport": "webrtc",
"interactionMode": "halfDuplex",
"audioParams": {
"format": "opus",
"sampleRate": 48000,
"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"
},
{
"trackId": "video-1",
"kind": "video",
"sourceId": "front",
"direction": "sendonly",
"codec": "H264",
"state": "paused"
}
]
}
}M03 · mediaOffer
{
"msgToken": "s09-128",
"method": "mediaOffer",
"sessionId": "s09-session",
"params": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP offer>"
}
}
}M04 · mediaAnswer
{
"msgToken": "s09-128",
"method": "mediaAnswer",
"sessionId": "s09-session",
"code": 200,
"data": {
"mediaRevision": 1,
"webrtc": {
"iceMode": "complete",
"sdp": "<SDP answer>"
}
}
}M05 · mediaState
{
"msgToken": "s09-129",
"method": "mediaState",
"sessionId": "s09-session",
"params": {
"mediaRevision": 1,
"state": "connected"
}
}M06 · requestAck
{
"msgToken": "s09-129",
"method": "requestAck",
"sessionId": "s09-session",
"code": 200,
"data": {
"requestMethod": "mediaState",
"result": {
"mediaRevision": 1,
"state": "connected"
}
}
}M07 · sessionEstablished
{
"msgToken": "s09-130",
"method": "sessionEstablished",
"sessionId": "s09-session",
"eventSeq": 1,
"data": {
"state": "established",
"mediaRevision": 1
}
}M26 · vision-consents/create
{"msgToken":"s09-grant","sourceSessionId":"s09-session","cameraId":"front","trackId":"video-1","expectedMediaRevision":1,"expiresAt":1900000000000}M27 · 视觉同意元数据
{"code":200,"data":{"consent":{"consentId":"consent-vision","scope":"cameraAI","sourceSessionId":"s09-session","cameraId":"front","trackId":"video-1","mediaRevision":1,"revision":1,"grantedAt":1899999990000,"expiresAt":1900000000000,"revokedAt":0},"replay":false}}上述HTTP字段已由独立严格处理器实现,不新增MQTT method;签发的正式活Authority及视觉端云仍需完整装配验证,受控Authority/SQL回归不替代实测。持久同意截止取本人明确值且不超过原会话deadline;两秒短核权只约束每次签发/取帧/模型提交。原token重放不刷新截止。取消分享先撤销独立同意,再按原M14–18请求停轨/释放处理器;实际停止仍取原trackState,失联不能补造stopped。排队帧在解码前及提交模型前分别核原同意修订与当前活来源,撤权/到期/连接或媒体换代后旧票据不得复用。SQL源行和旧快照不能重建活Owner;未知时不读帧、不调用模型,不挂断原主语音。
M08 · interaction.processorControl
{
"msgToken": "s09-131",
"method": "interaction.processorControl",
"sessionId": "s09-session",
"params": {
"processorId": "vision-1",
"processor": "aiAssist",
"operation": "attach",
"sourceTrackIds": [
"video-1"
],
"consentIds": [
"consent-vision"
]
}
}M09 · trackControl
{
"msgToken": "s09-132",
"method": "trackControl",
"sessionId": "s09-session",
"eventSeq": 2,
"params": {
"trackId": "video-1",
"operation": "publish",
"mediaRevision": 1
}
}M10 · trackState
{
"msgToken": "s09-132",
"method": "trackState",
"sessionId": "s09-session",
"code": 200,
"data": {
"trackId": "video-1",
"state": "active",
"mediaRevision": 1
}
}M11 · interaction.result
{
"msgToken": "s09-131",
"method": "interaction.result",
"sessionId": "s09-session",
"code": 200,
"data": {
"operation": "interaction.processorControl",
"state": "active",
"processorId": "vision-1"
}
}M12 · processorState
{
"msgToken": "s09-133",
"method": "processorState",
"sessionId": "s09-session",
"eventSeq": 3,
"data": {
"processorId": "vision-1",
"processor": "aiAssist",
"state": "active",
"sourceTrackIds": [
"video-1"
]
}
}M24 · inputSend
{
"msgToken": "s09-vision-query",
"method": "inputSend",
"sessionId": "s09-session",
"params": {
"inputId": "vision-input",
"contents": [
{
"type": "text",
"text": "请描述我正在分享的画面"
}
],
"outputModalities": [
"text",
"audio"
]
}
}M25 · requestAck
{
"msgToken": "s09-vision-query",
"method": "requestAck",
"sessionId": "s09-session",
"code": 200,
"data": {
"requestMethod": "inputSend",
"result": {
"inputId": "vision-input",
"state": "accepted"
}
}
}M22 · respCreated
{
"method": "respCreated",
"msgToken": "s09-audit-7",
"sessionId": "s09-session",
"messageSeq": 1,
"data": {
"respId": "vision-reply",
"inputId": "vision-input"
}
}M13 · respTextDone
{
"msgToken": "s09-134",
"method": "respTextDone",
"sessionId": "s09-session",
"messageSeq": 2,
"data": {
"respId": "vision-reply",
"contentIndex": 0,
"text": "画面里有一把椅子。"
}
}M23 · respDone
{
"method": "respDone",
"msgToken": "s09-audit-8",
"sessionId": "s09-session",
"messageSeq": 3,
"data": {
"respId": "vision-reply",
"inputId": "vision-input",
"status": "completed",
"contentCount": 1,
"audioState": "sent"
}
}M28 · vision-consents/revoke
{"consentId":"consent-vision","expectedRevision":1}M29 · 原撤销结果
{"code":200,"data":{"consent":{"consentId":"consent-vision","scope":"cameraAI","sourceSessionId":"s09-session","cameraId":"front","trackId":"video-1","mediaRevision":1,"revision":2,"grantedAt":1899999990000,"expiresAt":1900000000000,"revokedAt":1899999995000}}}M14 · interaction.processorControl
{
"msgToken": "s09-135",
"method": "interaction.processorControl",
"sessionId": "s09-session",
"params": {
"processorId": "vision-1",
"processor": "aiAssist",
"operation": "detach",
"sourceTrackIds": [
"video-1"
]
}
}M15 · trackControl
{
"msgToken": "s09-136",
"method": "trackControl",
"sessionId": "s09-session",
"eventSeq": 4,
"params": {
"trackId": "video-1",
"operation": "stop",
"mediaRevision": 1
}
}M16 · trackState
{
"msgToken": "s09-136",
"method": "trackState",
"sessionId": "s09-session",
"code": 200,
"data": {
"trackId": "video-1",
"state": "stopped",
"mediaRevision": 1
}
}M17 · interaction.result
{
"msgToken": "s09-135",
"method": "interaction.result",
"sessionId": "s09-session",
"code": 200,
"data": {
"operation": "interaction.processorControl",
"state": "detached",
"processorId": "vision-1"
}
}M18 · processorState
{
"msgToken": "s09-137",
"method": "processorState",
"sessionId": "s09-session",
"eventSeq": 5,
"data": {
"processorId": "vision-1",
"processor": "aiAssist",
"state": "detached",
"sourceTrackIds": [
"video-1"
],
"reason": "userStoppedSharing"
}
}M19 · interaction.result
{
"msgToken": "s09-131",
"method": "interaction.result",
"sessionId": "s09-session",
"code": 422,
"data": {
"operation": "interaction.processorControl",
"state": "failed",
"reason": "visionModelUnavailable",
"processorId": "vision-1"
}
}M20 · sessionEnd
{
"msgToken": "s09-138",
"method": "sessionEnd",
"sessionId": "s09-session",
"params": {
"reason": "userHangup"
}
}M21 · sessionEnded
{
"msgToken": "s09-138",
"method": "sessionEnded",
"sessionId": "s09-session",
"code": 200,
"data": {
"state": "ended",
"reason": "userHangup"
}
}更新日志
2026/10/17 03:27
查看所有更新日志
d04e1-docs(AI与音视频): 按公共主线与场景分支整合接入手册于
