1. 消息推送
Adventists - API文档
  • 总览
  • 更新日志
  • 基本配置
  • 2.5 更新
  • Quick Start
  • Demos
  • Emoji 表情定制指南
  • TCP语音对话
    • TCP接入
    • MCP协议接入
    • WebSocket快速接入
    • VAD 模式接入指南
    • Emoji 模式对接指南
    • 会议系统接口文档
    • TCP获取Token
      POST
  • 配置管理
    • 模版 与 角色
    • 名词和参数说明
    • Hippo 记忆管理服务 API 接口文档
    • 设备/角色封禁管理 API 接口文档
    • 模板
      • 查询公开模板列表
      • 查询当前组织模板(包含公开和私有模板)
      • 创建角色模板
      • 查询角色模板信息
      • 修改角色模板
      • 删除角色模板
      • 提交角色模板记忆
    • 角色
      • 创建角色(通过模板创建)
      • 创建角色
      • 查询角色
      • 修改角色
      • 删除角色
      • 发送角色记忆
      • 读取角色记忆
      • 创建角色(通过现有角色创建)
    • 技能书
      • 查询技能书列表
      • 预创建任务书
      • 上传任务书内容
      • 完成上传任务书
      • 查询技能书创建进度
    • 音色
      • 获取音色列表
      • 试听音色
      • 提交音色
      • 查询音色状态
      • 批量tts接口
    • Hippo记忆管理
      • 获取指定角色的个人知识图谱
      • 获取指定角色的人物关系数据
      • 获取指定角色的日记数据
      • 更新角色的 PKG
      • 触发做梦
      • 对话记忆接口
      • 读取对话记忆
    • 设备/角色封禁管理
      • 设备/角色封禁
      • 设备/角色解除封禁
      • 查询封禁列表
      • 查询单个封禁状态
  • 聊天辅助
    • 上传画面(Base64)
    • 上传画面(File)
    • 健康检查
  • 用量统计
    • 调用次数基本统计
  • 消息推送
    • 日志 Webhook 推送接口文档
    • 设备推送 Gateway API 接口文档
    • 设备推送
      POST
    • 语音播报(兼容旧接口)
      POST
    • 查询任务状态
      GET
  1. 消息推送

设备推送 Gateway API 接口文档

概述#

设备推送 Gateway 允许合作伙伴及内部系统向在线 TCP 设备下发消息(语音播报、通知、进度等)。Gateway 根据 npcid 自动路由到正确的 TCP Pod;设备离线时消息进入队列,上线后自动投递。
Base URL: https://adventists.cn/tcphub
路由前缀: /api
数据格式: JSON
编码: UTF-8

鉴权方式#

所有推送与任务查询接口通过 HTTP Header 鉴权:
Header类型必填说明
api-keystring是32 位 API 密钥
org-idstring是组织 ID(合作伙伴为 6 位;平台内部账号见权限说明)
注意:Header 名称使用连字符(api-key、org-id),不要使用下划线。
鉴权失败时返回 401:
{
    "message": "Invalid API KEY or ORG ID"
}

权限说明#

调用方org-id 格式npcid 权限
合作伙伴6 位(与 AnyoneAI 注册 org 一致)只能推送 npcid 前 6 位与 org-id 一致的设备
平台内部(如 Sophon)由平台分配可推送任意 npcid
跨 org 推送时返回 403:
{
    "ok": false,
    "error": "Cannot push to NPC belonging to another org"
}

接口一览#

方法路径说明
POST/api/push推送消息(推荐)
POST/api/speak语音播报(兼容旧接口)
GET/api/tasks/{task_id}查询任务状态

推送消息#

向指定设备推送一条消息。支持多种推送类型。
POST /api/push

请求体#

{
    "npcid": "ABC123your-npc-id-here",
    "type": "speak",
    "payload": {
        "text": "你好,这是一条测试消息"
    },
    "source": "my-app",
    "callback_url": "https://example.com/webhook",
    "priority": "normal",
    "task_id": "optional-external-id"
}
参数类型必填说明
npcidstring是目标设备/角色 ID
typestring否推送类型,默认 speak;可选:speak / text / info / image / agent_turn / choice
payloadobject条件推送内容;speak/text/info 需含 text;image 需含 url
sourcestring否来源标识
callback_urlstring否任务终态 webhook 地址
prioritystring否队列优先级:urgent / high / normal / low
task_idstring否外部任务 ID(不传则自动生成)

推送类型(type)#

typeTCP 帧payload 必填离线排队说明
speakAUDIO via TTStext是语音播报,经 TTS 转为音频流下发
textTEXT(0x04) + END_FRAMEtext是纯文字显示,不口播
infoSTATUS(0x05) ##INFO:xxxtext是系统通知/提示,不口播
imageIMAGE(0x0a)url否图片即时推送,设备不在线返回 404
agent_turn无(回调专用)自定义是用于 Agent 回合触发,TCP 侧待实现
choice无(回调专用)自定义是用于选项推送,TCP 侧待实现
各类型说明:
speak / text / info:设备离线时自动入队,上线后投递;text 和 info 下发的均为纯展示帧,不触发 TTS
image:即时投递,不排队;服务器根据设备认证时声明的 resolution 自动追加 TOS 缩放参数
agent_turn / choice:创建任务记录供 webhook 回调,TCP 侧下发尚未实现

成功响应#

200 — 设备在线,投递成功
{
    "ok": true,
    "task_id": "a1b2c3d4",
    "status": "delivered",
    "routed_to": "10.42.0.15:3007"
}
202 — 设备离线或忙碌,已入队
{
    "ok": true,
    "task_id": "a1b2c3d4",
    "status": "queued",
    "queue_position": 1,
    "online_npcids": 205
}

错误响应#

400 — 参数错误
{
    "ok": false,
    "error": "Missing npcid"
}
401 — 鉴权失败
{
    "message": "Invalid API KEY or ORG ID"
}
403 — 无权限(跨 org 推送)
{
    "ok": false,
    "error": "Cannot push to NPC belonging to another org"
}
502 — TCP Pod 不可达
{
    "ok": false,
    "task_id": "a1b2c3d4",
    "status": "failed",
    "error": "Failed to reach pod: ...",
    "routed_to": "10.42.0.15:3007"
}

cURL 示例#


查询任务状态#

GET /api/tasks/{task_id}

路径参数#

参数类型必填说明
task_idstring是推送返回的 task_id

成功响应(200)#

{
    "ok": true,
    "task": {
        "task_id": "a1b2c3d4",
        "npcid": "ABC123your-npc-id",
        "org_id": "ABC123",
        "type": "speak",
        "status": "delivered",
        "payload": {"text": "你好"},
        "created_at": 1717200000.0,
        "updated_at": 1717200001.0,
        "routed_to": "10.42.0.15:3007",
        "result": null
    }
}

错误响应#

404 — 任务不存在或无权限
{
    "ok": false,
    "error": "Task not found"
}

Webhook 回调#

若在推送请求中指定 callback_url,任务进入终态(delivered / completed / failed 等)时 Gateway 会 POST 回调:

请求 Header#

Header说明
Content-Typeapplication/json
X-Gateway-SignatureHMAC-SHA256 签名(hex),密钥为 Gateway 内部 secret

回调 Body 示例#

{
    "task_id": "a1b2c3d4",
    "status": "completed",
    "npcid": "ABC123your-npc-id",
    "type": "agent_turn",
    "source": "my-app",
    "routed_to": "10.42.0.15:3007",
    "result": {"answer": "ok"},
    "event": "completed"
}

验签方式#


任务状态说明#

status说明
accepted已接受
queued设备离线/忙碌,排队中
routed已路由到 TCP Pod
delivered投递成功
completed任务完成
failed投递失败
timeout超时
cancelled已取消

常见问题#

Q: 推送返回 202 queued 是什么意思?
设备当前不在线,或设备处于 idle 状态尚未完成首次对话。消息已入队,设备上线后会自动投递。
Q: 如何获取 api-key 和 org-id?
通过 AnyoneAI 平台注册组织后获得,与 ask/init_npc 等接口使用相同的凭证。
Q: npcid 与 org-id 的关系?
npcid 的前 6 位等于组织的 org-id。例如 org-id 为 ABC123 时,合法 npcid 形如 ABC123xxxxxxxx...。
修改于 2026-06-03 06:29:54
上一页
日志 Webhook 推送接口文档
下一页
设备推送
Built with