CATALOG

针对30W智能云播报喇叭(通常指芯步旗下的智能语音音柱系列),通过HTTP接口实现文本推送播报的核心流程主要分为三个步骤:获取密钥与设备ID构造带签名的请求下发播报指令

以下是基于芯步开放接口的详细对接解决方案。

1. 对接前的准备

在开始编码之前,需要准备以下三个必要参数:

  • AppID(应用ID)AppSecret(开发者密码):登录[芯步开放平台控制台],在“开发设置”页面获取注意:该平台接口调用是永久免费的

  • Device ID(设备ID):即30W智能云播报喇叭的唯一标识。可以在控制台设备列表查看,或查看设备外壳上的标签

  • 网络环境:确保服务器能访问公网 api.thingboot.com(如果是私有化部署版本,则使用局域网地址)

2. 接口鉴权与签名计算

芯步的接口通过 sign(签名)和 ts(时间戳)进行安全校验,防止接口被恶意篡改。每次请求都需要重新计算签名

签名生成规则

计算公式为:sign = MD5( MD5(AppSecret) + ts )

具体步骤如下:

  1. AppSecret 进行第一次 MD5 加密,得到32位小写字符串 S1

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

  3. 将字符串 S1ts 进行拼接(注意:是字符串拼接,不是相加),得到 S2

  4. S2 进行第二次 MD5 加密,得到最终的 sign

3. 请求地址与核心参数

  • 请求地址POST https://api.thingboot.com/{AppID}/device/control/

  • Query参数:需在URL后拼接 signts

  • HeaderContent-Type: application/json

  • Body参数

参数名类型必填说明
deviceString30W喇叭的设备ID
orderObject/JSON控制指令,文本播报的命令格式为 {"play:gbk:16":"要播报的文字"}

4. 实现文本推送播报

核心在于 order 参数的构造。对于30W智能语音音柱,播报文本的命令格式如下:

支持的高级播报设置

除了基础播报,友物联接口还支持在文本中加入控制符来调节语速、音色等

  • 调节音量:文本前加 [vol=X],X为0-9。例如:[vol=9]紧急通知(最大音量)。

  • 调节语速:文本前加 [speed=X],X为0-9。

  • 调节音色:文本前加 [voice=man][voice=woman]

  • 数字读法:自动识别,如需强制按金额读,可使用 [money] 标记。

请求示例(以通用HTTP为例)

假设:

  • AppID: qtyVWcgeMq

  • AppSecret: abc123...(已做MD5处理示例)

  • Device ID: 820720

  • 目标文本:"工地一号区域,请注意安全"

计算过程

  1. ts = 1747212640 (当前时间)

  2. S1 = md5(AppSecret) = e10adc3949ba59abbe56e057f20f883e

  3. S2 = e10adc3949ba59abbe56e057f20f883e + 1747212640 = e10adc3949ba59abbe56e057f20f883e1747212640

  4. sign = md5(S2) = c484eb97ee288572db7828c6071dd88f

完整的HTTP请求报文

5. 代码实现片段

Java (Unirest) 示例

PHP 示例

6. 注意事项与最佳实践

  1. 响应码不等于设备执行结果

    • 接口返回 {"code":200} 仅代表平台已收到指令,不代表喇叭已经响起

    • 如果喇叭离线或网络故障,即使返回200也不会播报。

    • :对接平台的消息推送服务(异步回调),获取设备真实的“指令执行成功/失败”回执。

  2. 频率限制

    • 单个设备接口调用频率限制为 1次/秒。如果业务并发较高(如批量订单),请在代码中增加 Thread.sleep(1000) 或使用队列机制,避免触发 5009 限流错误

  3. 中文字符与编码

    • 命令中使用 play:gbk:16 即表明系统会将后续文本按GBK编码处理并合成为语音。请确保代码文件编码或HTTP请求头能正确处理中文,避免乱码导致喇叭读出乱码或无法播放

  4. 多音字处理

    • 如果遇到多音字读错,可以在该字后面用 # 号标记声调,例如 长#3江(读“涨”音),或者直接使用同音词替换。