CATALOG

基于芯步20W语音音柱的开放接口,你可以直接通过HTTP接口推送文本,让设备即时语音播报。整个二次开发的核心就是“构造签名 -> 发送指令”两步,签名算法是md5(md5(密钥) + 时间戳),播报命令使用{"play:gbk:16":"你要说的话"}格式

以下是具体的解决方案,分为三个主要步骤。

1. 准备工作:获取凭证与参数

在开始编码前,请在芯步开发者平台完成以下准备:

  1. 获取API密钥:登录控制台,在“开发设置”中找到你的 AppIDAppSecret。同时,记录下 20W音柱的设备ID(设备外壳或控制台均可查看)

  2. 了解核心参数

    • AppID:应用的唯一标识,接口URL的一部分。

    • AppSecret:用于生成签名,切勿直接暴露在前端代码中。

    • Device ID:目标音柱的唯一ID,支持向多个设备同时广播(用英文逗号分隔)

    • Ts:当前Unix时间戳(秒级),用于防止请求重放攻击

    • Sign:接口调用签名,用于验证请求合法性。

2. 接口调用:核心逻辑与代码示例

签名生成规则

签名是接口安全的核心。芯步采用双重MD5加密方式

Sign = md5( md5(AppSecret) + Ts )

注意:是 字符串拼接,而非数值相加。

发送指令

  • 接口地址 (URL)https://api.thingboot.com/{AppID}/device/control/?sign={Sign}&ts={Ts}

  • 请求方式 (Method):POST

  • 请求头 (Header)Content-Type: application/json

  • 请求体 (Body):包含 deviceorder 两个字段的JSON对象

代码实现示例

以下提供一个通用的伪代码/逻辑片段,你可以轻松移植到任何支持HTTP请求的语言(如Java、Go、PHP等):

请求体构造

说明:play:gbk:16 是指定文本编码(GBK)和播放参数,直接用此格式即可。

详细逻辑解读

  1. 初始化参数:获取当前时间戳 ts。比如:ts = 1747212640

  2. 计算一代密钥secret_md5 = md5(AppSecret)

  3. 计算最终签名sign = md5(secret_md5 + ts)

  4. 发送请求:将数据组装成上述JSON格式,POST至指定URL

3. 高级功能与场景应用

除了基本播报,你可以通过修改 order 中的命令参数,实现音量控制、多音字矫正等高级功能。

控制与配置命令集

功能类型Order 命令示例说明
文本播报{"play:gbk:16":"当前订单号:12345"}主功能,数字自动读法,可拼接变量
音量调节{"vol":7}范围 0-9,调节即时生效(需支持)
更换音色{"voice":1}0-女声,1-男声(需支持)
语速调节{"speed":5}范围 0-9,数值越大语速越快
停止播报{"stop":"立刻停止"}停止当前正在播放的语音
播放铃声{"ring":"order"}播放内置提示音或自定义铃声(根据产品型号)

场景化开发:订单播报示例

假设你需要在PHP后端集成,当有新订单时自动播报:

处理关键反馈

接口返回 200 仅表示指令已成功下发给云端,并不代表音柱已成功播报(例如音柱此时可能离线)。若需严格保证送达,在平台配置消息推送接收设备的状态回调。

4. 常见问题与排查

  1. 签名错误 (Signature Error)

    • 检查 ts 是否为当前的Unix时间戳(秒级),服务器时间误差超过几分钟会导致校验失败。

    • 检查拼接顺序是否为 md5( md5(AppSecret) . ts )。注意,内层MD5结果通常为32位小写字符串

  2. 设备不在线 (Device Offline)

    • 需确保20W音柱已连接至稳定的2.4G WiFi网络(不支持5G频段)

  3. 中文乱码

    • 请使用 {"play:gbk:16":"中文内容"} 格式,该命令指示设备端使用GBK编码解析文本

  4. 私有化部署

    • 如果你的系统运行在纯内网环境,芯步支持私有化部署,此时接口地址需替换为你自己的服务器地址

以上步骤即可完成20W云语音播报音柱的二次开发。如果需要特定语言(如Java/Python)的完整代码模板,可以参考芯步官方文档中的示例