针对30W智能云播报喇叭(通常指芯步旗下的智能语音音柱系列),通过HTTP接口实现文本推送播报的核心流程主要分为三个步骤:获取密钥与设备ID、构造带签名的请求、下发播报指令。
以下是基于芯步开放接口的详细对接解决方案。
1. 对接前的准备
在开始编码之前,需要准备以下三个必要参数:
AppID(应用ID) 和 AppSecret(开发者密码):登录[芯步开放平台控制台],在“开发设置”页面获取。注意:该平台接口调用是永久免费的。
Device ID(设备ID):即30W智能云播报喇叭的唯一标识。可以在控制台设备列表查看,或查看设备外壳上的标签。
网络环境:确保服务器能访问公网
api.thingboot.com(如果是私有化部署版本,则使用局域网地址)。
2. 接口鉴权与签名计算
芯步的接口通过 sign(签名)和 ts(时间戳)进行安全校验,防止接口被恶意篡改。每次请求都需要重新计算签名。
签名生成规则
计算公式为:sign = MD5( MD5(AppSecret) + ts )
具体步骤如下:
将
AppSecret进行第一次 MD5 加密,得到32位小写字符串S1。获取当前时间的秒级时间戳(Unix Timestamp),例如
1747212640,记为ts。将字符串
S1与ts进行拼接(注意:是字符串拼接,不是相加),得到S2。将
S2进行第二次 MD5 加密,得到最终的sign。
3. 请求地址与核心参数
请求地址
POST https://api.thingboot.com/{AppID}/device/control/Query参数:需在URL后拼接
sign和ts。Header
Content-Type: application/jsonBody参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
device | String | 是 | 30W喇叭的设备ID |
order | Object/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:
qtyVWcgeMqAppSecret:
abc123...(已做MD5处理示例)Device ID:
820720目标文本:
"工地一号区域,请注意安全"
计算过程
ts=1747212640(当前时间)S1=md5(AppSecret)=e10adc3949ba59abbe56e057f20f883eS2=e10adc3949ba59abbe56e057f20f883e+1747212640=e10adc3949ba59abbe56e057f20f883e1747212640sign=md5(S2)=c484eb97ee288572db7828c6071dd88f
完整的HTTP请求报文
5. 代码实现片段
Java (Unirest) 示例
PHP 示例
6. 注意事项与最佳实践
响应码不等于设备执行结果
接口返回
{"code":200}仅代表平台已收到指令,不代表喇叭已经响起。如果喇叭离线或网络故障,即使返回200也不会播报。
:对接平台的消息推送服务(异步回调),获取设备真实的“指令执行成功/失败”回执。
频率限制
单个设备接口调用频率限制为 1次/秒。如果业务并发较高(如批量订单),请在代码中增加
Thread.sleep(1000)或使用队列机制,避免触发5009限流错误。
中文字符与编码
命令中使用
play:gbk:16即表明系统会将后续文本按GBK编码处理并合成为语音。请确保代码文件编码或HTTP请求头能正确处理中文,避免乱码导致喇叭读出乱码或无法播放。
多音字处理
如果遇到多音字读错,可以在该字后面用
#号标记声调,例如长#3江(读“涨”音),或者直接使用同音词替换。