广播与异步语音留言
约 1333 字大约 4 分钟
2026-10-16
本页包含扩展设计,不能作为当前整场景已实现的承诺。参见支持范围、场景索引和命令手册。图中S编号只用于本文定位,不放入实际JSON。
前置条件
发送者先上传内容并获得受限引用;不创建实时 sessionId。广播按每台收件设备分别鉴权、投递、记录回执。
图中P代表经鉴权的平台业务控制器和媒体节点,不要求同一进程;A是用户应用,D是设备。控制图描述一种合法顺序,跨通道不承诺严格同序。
完整时序
报文索引
编号按图阅读;编号保留历史引用,不要求数值连续。字段定义以命令链接为准。
| 编号 | 发送→接收 | Topic/接口 | 方法及契约 | 应答/等待 | 状态或作用 |
|---|---|---|---|---|---|
| S10-M01 | A→P | APP↑ | messageSend | HTTP受理;随后 interaction.result;10秒 | 独立消息提交;不是实时会话。 |
| S10-M02 | P→A | APP↓ | interaction.result | —;不等待 | 经 WS interaction.event 发给原操作者,原 token;设备通知不能充当应用请求应答。 |
| S10-M03 | P→D | MSG↓ | messageDeliver | messageAck;至投递到期 | 无 sessionId;一个收件设备一份投递状态,离线排队并按过期时间丢弃。 |
| S10-M04 | D→P | MSG↑ | messageAck | —;不等待 | received 回应投递原 token;played 是实际播放完成后独立报告,不能把下载完成算播放完成。 |
| S10-M05 | D→P | MSG↑ | messageAck | —;不等待 | received 回应投递原 token;played 是实际播放完成后独立报告,不能把下载完成算播放完成。 |
| S10-M06 | D→P | MSG↑ | messageAck | —;不等待 | received 回应投递原 token;played 是实际播放完成后独立报告,不能把下载完成算播放完成。 |
| S10-M07 | D→P | MSG↑ | messageAck | —;不等待 | received 回应投递原 token;played 是实际播放完成后独立报告,不能把下载完成算播放完成。 |
逐条JSON
S10-M01 · messageSend
{
"msgToken": "s10-139",
"method": "messageSend",
"params": {
"deliveryId": "delivery-1",
"kind": "voiceMessage",
"expiresAt": 1900000000000,
"contentRef": "<authorized-audio-ref>"
},
"target": {
"productID": "p-demo",
"deviceName": "device-demo"
}
}S10-M02 · interaction.result
{
"msgToken": "s10-139",
"method": "interaction.result",
"code": 200,
"data": {
"operation": "messageSend",
"state": "queued",
"deliveryId": "delivery-1"
}
}S10-M03 · messageDeliver
{
"msgToken": "s10-140",
"method": "messageDeliver",
"params": {
"deliveryId": "delivery-1",
"kind": "voiceMessage",
"expiresAt": 1900000000000,
"contentRef": "<authorized-audio-ref>"
}
}S10-M04 · messageAck
{
"msgToken": "s10-140",
"method": "messageAck",
"code": 200,
"data": {
"deliveryId": "delivery-1",
"status": "received"
}
}S10-M05 · messageAck
{
"msgToken": "s10-141",
"method": "messageAck",
"data": {
"deliveryId": "delivery-1",
"status": "played"
}
}S10-M06 · messageAck
{
"msgToken": "s10-140",
"method": "messageAck",
"code": 200,
"data": {
"deliveryId": "delivery-1",
"status": "expired",
"reason": "deliveryExpired"
}
}S10-M07 · messageAck
{
"msgToken": "s10-140",
"method": "messageAck",
"code": 200,
"data": {
"deliveryId": "delivery-1",
"status": "received"
}
}媒体与本地动作
| 编号 | 路径 | 格式与约束 |
|---|---|---|
| S10-R01 | D→P | 鉴权 HTTPS 获取音频文件;下载与实时RTP无关;引用短期有效且限定设备,内容校验后播放。 |
异常、状态与资源释放
以下JSON仅为报文正文;编号、方向、说明不发送。loop下一轮需分配新token/inputId;同一次请求重试必须沿用原token。字段以命令手册为准。
路由缩写均展开于公共约定。ACT/PROP超时以产品配置为准;内部工具以工具超时为准,不套用10秒设备统一信令超时。
重复 deliveryId 不重复播放;同ID不同内容返回409。离线重试用原 token、指数退避10/20/40秒后最多60秒间隔,直到expiresAt;received 后停止网络投递重试,未播放不能自动再播。过期删除待播项和访问令牌;played 是设备实际播完而非用户已听到。广播 kind=broadcast,其余单设备流程相同。
能力不支持、无权限、设备拒绝、协商失败、断网、重复请求、过期会话及迟到媒体按S11共通失败流程和公共错误表处理。业务专属分支以本页为准,不因错误静默打开额外能力。
验证入口
更新日志
2026/10/16 16:04
查看所有更新日志
fe3a7-docs(AI与音视频): 按场景整理完整接入流程与命令契约于
