基于芯步20W语音音柱的开放接口,你可以直接通过HTTP接口推送文本,让设备即时语音播报。整个二次开发的核心就是“构造签名 -> 发送指令”两步,签名算法是md5(md5(密钥) + 时间戳),播报命令使用{"play:gbk:16":"你要说的话"}格式。
以下是具体的解决方案,分为三个主要步骤。
1. 准备工作:获取凭证与参数
在开始编码前,请在芯步开发者平台完成以下准备:
获取API密钥:登录控制台,在“开发设置”中找到你的 AppID 和 AppSecret。同时,记录下 20W音柱的设备ID(设备外壳或控制台均可查看)。
了解核心参数
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):包含
device和order两个字段的JSON对象。
代码实现示例
以下提供一个通用的伪代码/逻辑片段,你可以轻松移植到任何支持HTTP请求的语言(如Java、Go、PHP等):
请求体构造
说明:play:gbk:16 是指定文本编码(GBK)和播放参数,直接用此格式即可。
详细逻辑解读
初始化参数:获取当前时间戳
ts。比如:ts = 1747212640。计算一代密钥
secret_md5 = md5(AppSecret)。计算最终签名
sign = md5(secret_md5 + ts)。发送请求:将数据组装成上述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. 常见问题与排查
签名错误 (Signature Error)
检查
ts是否为当前的Unix时间戳(秒级),服务器时间误差超过几分钟会导致校验失败。检查拼接顺序是否为
md5( md5(AppSecret) . ts )。注意,内层MD5结果通常为32位小写字符串。
设备不在线 (Device Offline)
需确保20W音柱已连接至稳定的2.4G WiFi网络(不支持5G频段)。
中文乱码
请使用
{"play:gbk:16":"中文内容"}格式,该命令指示设备端使用GBK编码解析文本。
私有化部署
如果你的系统运行在纯内网环境,芯步支持私有化部署,此时接口地址需替换为你自己的服务器地址。
以上步骤即可完成20W云语音播报音柱的二次开发。如果需要特定语言(如Java/Python)的完整代码模板,可以参考芯步官方文档中的示例。