CATALOG

智能语音喇叭2的HTTP接口设计简洁,核心是签名鉴权+命令下发两步。定时场景下,后端只需跑一个定时任务,到点构造play:gbk:16命令推送即可。以下是完整对接方案:

1. 核心对接原理

芯步的开放接口采用标准的HTTP POST请求进行通信,平台作为服务端,您的业务系统作为客户端。

工作流程:![工作流程]您的业务系统 --(1. 定时任务触发)--> 您的后端服务器 --(2. HTTP API调用)--> 芯步云平台 --(3. 推送指令)--> 智能语音喇叭2

2. 准备工作:获取凭证与设备ID

在开始编码前,您需要准备以下三要素:

要素说明获取路径
AppID应用唯一标识登录芯步控制台 -> 开发设置
AppSecret应用密钥(请勿泄露同上(通常需点击“显示”或“重置”)
Device ID目标喇叭设备的ID控制台设备列表页面查看

3. 接口调试与签名计算

这是整个对接过程中最关键的一步。为防止接口被恶意调用,平台要求携带动态签名。

  • 请求地址https://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}

  • 请求方式:POST

  • Content-Typeapplication/json

签名生成算法(MD5):

芯步的签名规则是通过两次MD5加密并结合时间戳,以保证请求的安全性。

计算公式sign = md5( md5(AppSecret) + ts )

详细步骤

  1. 将您的 AppSecret 进行第一次MD5加密,得到字符串 S1

  2. 获取当前的Unix时间戳(秒级,例如 1718220000),记为 ts

  3. 拼接字符串:S1 + ts

  4. 将拼接后的字符串进行第二次MD5加密,得到最终的 sign

Python 代码示例:

4. 指令下发:实现“定时语音通知”

要实现定时任务,您需要一个后端服务(如Python脚本、Java服务、Node.js等)。核心逻辑是:在设定的时间点,向指定设备ID发送特定的JSON命令字符串。

核心播报命令格式

对于“智能语音喇叭2”,实现文字转语音的指令Key为 play:gbk:16,Value为你要播报的内容。

示例: 让喇叭播报“现在是北京时间下午两点”。

进阶控制参数(可选)

除了播报文字,接口还支持在 order 对象中下发其他控制参数来优化播报效果,支持在同一次请求中发送多个配置。

  • volume:音量 (0-9,数值越大音量越大)

  • voice:音色 (0:女声, 1:男声)。

  • speed:语速 (范围通常为 -5 到 5)。

  • ring:内置铃声 (1-5)。

示例: 下午2点,以80%音量,男声播报。

实际业务集成代码示例

以下是一个简单的Python脚本逻辑,配合Linux Crontab或APScheduler即可实现定时任务:

5. 高级场景:确认通知是否送达

芯步平台支持设备上行消息推送机制。这意味着设备收到指令并执行(或设备上下线)时,平台可以主动通知您的服务器

配置方法

  1. 在芯步控制台中,找到“消息推送”设置。

  2. 填入您的服务器接收回调的URL(如 https://yourdomain.com/api/device/callback)。

  3. 订阅事件:勾选“命令执行结果”或“设备状态变更”。

对接效果当喇叭成功播放了“定时通知”后,您的服务器会收到一条类似下面的POST请求,这样您就能记录日志或做后续业务逻辑(如发送短信通知管理员“语音已播放”)。

6. 常见问题排查

  1. 喇叭离线(Offline)

    • 现象:调用接口返回设备不在线。

    • 解法:因为喇叭是WiFi设备,请检查现场WiFi网络是否稳定,设备是否供电。设备仅在上电且联网状态下才能接收指令

  2. 签名错误(Sign Error)

    • 现象:返回HTTP 401或提示sign invalid。

    • 解法:仔细核对md5(md5(secret)+ts)的顺序。注意ts必须和计算签名时使用的ts完全一致,且通常有时效性(如5分钟内),请确保服务器时间(获取ts的时间)是准确的北京时间。

  3. 文字乱码或未播报

    • 现象:接口返回成功,但喇叭没声音或乱码。

    • 解法:将文字内容进行URL Encode编码。确保文本中不包含特殊emoji表情(部分设备不支持),使用中文、英文和数字。

总结

通过调用芯步开放平台的/device/control接口,结合MD5签名机制和play:gbk:16命令,您可以轻松地在任何编程环境中开发定时语音通知服务。先使用Postman手动调用确认签名和设备在线,再编写业务代码。