私有上下文交接
约 2392 字大约 8 分钟
2026-10-16
本页按 Topic、method 和方向定义完整契约。字段表与JSON中的可选扩展不等于当前全部启用,实际接入前请查支持范围;应用REST封装见应用接入。
用于 S13 本人 AI 通话转到显式服务后的原人工接收腿。不复用广播或 AI 回复,不增加 Topic 或版本字段。严格报文解析已实现;正式最终消费、Owner 投递及 C++ 完整留存回执须分别验收,不能以文档或组件通过表示场景完成。
授权与来源
本人通过真实身份验证,明确授权同一本人 AI 会话已完成的 user 和 assistant 文本。管理员、设备自报、IM 成员或隐私协议不能代替授权。范围最多32轮、64条,排除 system/prompt、工具参数、第三方、未完成流和原始音视频。创建、本人查询、撤销使用独立 HTTP 接口,不是 MQTT 自授权。
固定原 source session、AISVR resource、本人、节点/连接栅栏、精确 service/revision/recipient、不可变快照及原截止。转人工最终事务只消费同一原意图。之后发送须另核当前目录 ACL、两端权限、原连接、实际媒体路由及未撤销授权;不得因源 AI 已结束而套用“源仍在进行”的创建校验。
本人授权 HTTP 接口
以下为应用操作接口,不是固件MQTT method,不计入设备方法。均为 POST,经正式Token和上下文中间件识别本人;普通手机 device-id 仅是客户端标识,不等于IoT AuthType=device,真实设备认证不得替本人签署。未知字段、重复键、null及大于4096字节请求拒绝;不接客户端tenant/user/epoch/正文。
| 路径 | 请求字段 | 结果与边界 |
|---|---|---|
| /api/v1/im/context-consents/create | msgToken、sourceSessionId、serviceId、firstTurnIndex、lastTurnIndex、expiresAt;可选snapshotVersion | 实际本人来源/目录解析→AISVR真实授权快照RPC→再次原绑定核验→SQL锁源固定授权;结果仅metadata+replay,不自动拨号 |
| /api/v1/im/context-consents/get | consentId | 仅本人原元数据,不返回文本;到期/已结束后仍可查询 |
| /api/v1/im/context-consents/revoke | consentId、expectedRevision | 本人CAS撤销;相同原请求重放保持首次撤销时点,不承诺回收已送达文本 |
{"msgToken":"own-consent-original","sourceSessionId":"s-ai","serviceId":"support","firstTurnIndex":1,"lastTurnIndex":1,"expiresAt":1900000000000}{"consentId":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}{"consentId":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","expectedRevision":1}create的expiresAt不得超过原AI期限和原目录授权期限;snapshotVersion只校验实际快照的期望值,不能由客户端赋版本。同token不同范围、期限或期望版本冲突;重放不取新快照续权。返回元数据包含consentId/sourceSessionId/serviceId/serviceRevision/recipientSubject/scope/snapshotVersion/snapshotDigest/firstTurnIndex/lastTurnIndex/expiresAt/grantedAt/revision/revokedAt/consumed,无正文。consumed仅表示绑定原移交意图,不表示人工收到。
当前create/get/revoke已通过真实Token/上下文中间件、正式Runtime/Registry原Owner与目录解析、AISVR实际快照RPC及SQLite纵切;源经正式创建/Adopt,未手工登记Registry。覆盖普通手机本人、设备/他人管理员/跨企业拒绝、原请求重放、同token参数冲突、快照范围/版本拒绝及原Owner结束后禁止新授权而仍可查询/撤销。该验证使用明确受控模型与DMS短准入端口,不代表真实模型音频或硬件验收。缺真实运行时仍明确拒绝,不返回假成功;最终三CAS消费、正式私有投递与设备完整留存ACK仍为独立验收项。
contextSnapshot · MSG↓
Topic:$thing/down/message/{productID}/{deviceName}。sessionId 固定原最终移交的人工 remote 腿,不是 AI 源;身份取鉴权 Topic 和原服务端绑定。事件使用 data 和 messageSeq,无 code/params/eventSeq。
| 字段 | 类型 | 必填 | 约束 |
|---|---|---|---|
| deliveryId | string | 必填 | 64字符小写SHA256格式投递键,与msgToken相同 |
| consentId | string | 必填 | 64字符小写SHA256格式本人授权键 |
| scope | string | 必填 | 固定completedText |
| sourceSessionId | string | 必填 | 1..64字节原AI信令会话 |
| serviceId | string | 必填 | 1..128字节精确服务,无通配符 |
| serviceRevision | string | 必填 | 1..128字节原目录修订,无通配符 |
| snapshotVersion | string | 必填 | 1..128字节原不可变版本 |
| snapshotDigest | string | 必填 | 完整私有规范快照SHA256,不是删减后的wire摘要 |
| firstTurnIndex | uint | 必填 | 原范围首轮≥1 |
| lastTurnIndex | uint | 必填 | 原范围末轮≤2147483647,连续最多32轮 |
| expiresAt | int64 | 必填 | 原UTC毫秒绝对截止,正安全整数,重试不延期 |
| turns | object[] | 必填 | 1..64项,精确messageId/sequence/turnIndex/role/text |
serviceId/serviceRevision 精确沿用原目录及Consent字符串合同:有效UTF-8、字节长度有界、无控制字符、首尾无Unicode空白,拒绝 / * + #;? 可作字面字符串,不解释为通配匹配、队列或候选选择。结构通过仍不提供该服务权限,发送前须精确重验原服务目录和授权。
每项 messageId 唯一、1..128字节;sequence 正安全整数严格递增;user 开始一轮,原存在的 assistant 保留同轮随后顺序,不丢弃。role 仅 user/assistant;text 非空有效 UTF-8、最多16384字节。整个 JSON 信封最多65536字节,过大拒绝,不分片扩大授权。wire 不含本人/节点等来源字段,设备不能仅对 turns 重算原 snapshotDigest。
{"msgToken":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","method":"contextSnapshot","sessionId":"human-remote","messageSeq":7,"data":{"deliveryId":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","consentId":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","scope":"completedText","sourceSessionId":"ai-source","serviceId":"support","serviceRevision":"reviewed-r1","snapshotVersion":"immutable-v1","snapshotDigest":"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","firstTurnIndex":1,"lastTurnIndex":1,"expiresAt":1900000000000,"turns":[{"messageId":"user-1","sequence":1,"turnIndex":1,"role":"user","text":"已完成的问题"},{"messageId":"assistant-1","sequence":2,"turnIndex":1,"role":"assistant","text":"已完成的回答"}]}}示例摘要/ID不是有效授权。messageSeq 在原人工 remote 会话同事务 CAS 分配,不能固定1或借 AI 父水位。重投保留同一投递键、水位、完整字节摘要及截止。设备仅在原人工会话 established、未held、原连接有效且未到期时完整校验/留存;迟到、未知/null/重复字段、超限、错误关联、同键变正文均不回成功。网络发送完成不等于设备留存。
接收设备必须显式声明 outputModalities 含 text。纯 humanCall 语音设备可声明 outputModalities=[audio,text] 而不声明文字输入;仍须真实音频、WebRTC 和本地接听能力,不能由被动文本输出获得 AI/IPC 或无媒体通话能力。音频能力由 audio 与 features 表达,inputModalities 当前只接受 text,没有 audio 枚举。
此私有正文专用物理出口使用 QoS0、不 retain、不写 QoS1 在途/重连继承缓存,不沿通用 Topic 广播。IM 内部 DeviceDeliveryRequest.expected_connection_instance 固定原 sessionAccept 已鉴权 RPC 的物理实例,DMS 再核当前原对象;该字段不是设备 JSON,也不能以相同连接毫秒值、正文或当前在线对象补造。未声明对应能力的设备缺该可信来源时拒绝私有文本,不改变其原语音路线。
本地写入只针对原物理连接,换连接不重新查同 ClientID。容量或写锁等待取消不关闭主通话连接;已进入物理 IO 的写独立限时两秒,仅真实持续阻塞超限关闭该原连接并报告未知。调用取消、撤销或失败不伪称追回已经发出的字节;写完成也不代表完整留存。应用层使用原 deliveryId/水位/期限重试并等待以下 ACK,不更换收件人或期限。
contextSnapshotAck · MSG↑
Topic:$thing/up/message/{productID}/{deviceName}。完整校验且实际留存后回显原关联,不带序号或私有正文。
| 字段 | 类型 | 必填 | 约束 |
|---|---|---|---|
| deliveryId | string | 必填 | 与原投递键/msgToken相同 |
| consentId | string | 必填 | 与原本人授权相同 |
| snapshotVersion | string | 必填 | 与原不可变版本相同 |
| snapshotDigest | string | 必填 | 回显原完整私有摘要 |
| status | string | 必填 | 固定received,仅完整实际留存 |
{"msgToken":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","method":"contextSnapshotAck","sessionId":"human-remote","code":200,"data":{"deliveryId":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","consentId":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","snapshotVersion":"immutable-v1","snapshotDigest":"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","status":"received"}}data精确5字段,前4项与原下行完全一致,status固定received,只表示完整留存,不表示阅读/播放。DMS 根据原 Topic 与原 socket 认证来源解析并传递可信连接实例;IM 还须核原人工 session、主人/物理实例、原投递记录、当前目录和有效授权,不能把相同连接毫秒值当作同一物理实例。仅回显不足以认定成功。相同原下行重放回相同确认,不创建授权。有效 ACK 后停止重试;未知网络不得伪造 ACK 或换收件人。
超时与资源释放
只在同一原路由/授权有效时有界重试;原 expiresAt 到期、离线、held、换连接、撤权、目录修订/目标变化、会话结束或本人撤销后停止后继发出。撤销不能保证追回已送达/已阅读文字。正文不进入普通 Outbox、SQL/HTTP/RPC日志或查询元数据;独立私有队列只固定原来源/关联摘要,发送前重新读取原授权快照。
测试边界
严格解析覆盖完整 user/assistant、MSG路由/session/token/seq、未知/缺失/null/重复字段、角色/轮次、整体资源预算及精确 ACK。真实 SQL 还须验证最终消费、撤销竞态、remote 水位 CAS、重放不增水位、原连接/路由失效、期限和未知网络。以上不代替本人HTTP→实际AISVR RPC→最终三CAS→正式dispatcher→C++完整留存/ACK纵切。
更新日志
2026/10/16 16:04
查看所有更新日志
fe3a7-docs(AI与音视频): 按场景整理完整接入流程与命令契约于
