CATALOG

商场里到处都是人,那种干巴巴的“叮咚~”声早就听麻了。想搞点个性化的语音互动,比如某个专柜有活动或者有人下单了,直接让音箱喊出来——这个想法其实很好实现。

芯步的这款20W壁挂音箱,走的是 HTTP接口 路线。说白了,就是你后端代码里发个HTTP请求,它就能开口说话。不用搞复杂的硬件对接,全程只需要联网调用。

下面手把手跟你说下怎么把它对接到你的项目里。

一、 核心逻辑:比想象中简单

它的原理非常“粗暴”:你的服务器 -> 芯步云平台 -> WiFi/网线 -> 音箱播报

你不需要关心音响是怎么连网的,只要把它配上网,剩下的就是用代码“调”它。

二、 动手前的“三件套”

在写代码前,需要先去拿到三样东西,这个过程应该很快:

  1. AppID 和 AppSecret (钥匙):注册后,在控制台的“开发设置”里就能看到。这是证明你有权调用接口的凭证。

  2. Device ID (音箱身份证):把你买回来的音箱添加到控制台,会得到一个纯数字ID,你也可以在音箱外壳上找到。

  3. 签名 (Sign):为了安全,每次调用都要算一个动态密码。

这个签名算法其实贼简单,就两步:

  1. 先把 AppSecret 进行一次MD5加密。

  2. 把第1步的结果拼上当前的 时间戳(ts) ,再进行一次MD5加密。*公式:Sign = MD5( MD5(AppSecret) + ts )*

举个栗子:假设你的密码是 abc123 ,当前时间是 1712000000第一步结果 = e99a18c428cb38d5f260853678922e03最终签名 = MD5 (e99a18c428cb38d5f260853678922e03 + 1712000000)

注意:时间戳是10位的秒数,不是13位的毫秒数。

三、 实战:让音箱开口说话

假设现在商场里的“李佳琦分琦”在直播,需要后台每产生一笔订单,就喊一声:“新订单来了,快来捡漏!”

你需要调用的是 [向设备下发指令] 接口

请求地址:https://api.thingboot.com/{你的AppID}/device/control/?sign={计算好的签名}&ts={当前时间戳}

请求体 (Body):

四、 把代码写进你的项目里

不管你的项目是 JavaPythonPHP 还是 Node.js,只要它能发HTTP请求就行。

来看看三种主流语言的示例:

1. Java 实现 (使用Unirest)

参考

2. Python 实现 (使用requests)

3. Node.js 实现

参考

五、 要想用得顺手,这几个命令必须要会

只是“让音箱说话”当然不够,商场里声音忽大忽小可不行,你还可以通过修改 order 里的参数来控制各种细节

功能命令参数 (Order)取值说明
调节音量{"volume":80}范围一般是 0-100,不用去拧旋钮了。
切换音色{"voice":1}比如 1是女声(默认),2是男声。
播放铃声{"ring":1}比如开门铃声、下班铃声,可以选内置的几种。
停止播报{"stop":""}如果念错了或者不想让它念了,直接发个stop。
组播(全场广播)device:"ID1,ID2,ID3"如果想在一楼所有音箱都喊,device 参数里用英文逗号隔开多个ID就行,一条指令控制所有音箱

六、 避坑指南

第一次对接可能会遇到几个小问题,先帮你排个雷:

  1. 签名错误 (Bad Sign):最常见的问题。检查一下时间戳是不是秒级的(10位数字),很多语言默认生成的是13位的毫秒级,记得除以1000

  2. 返回200但音箱没响200 只代表平台收到指令了,不代表音箱收到。这时候检查一下音箱的WiFi是不是断了,或者音箱是不是离线状态。

  3. 中文乱码:在代码里写中文播报内容时,确保文件的编码是 UTF-8,接口默认是支持中文的。

  4. 频率限制:单个设备访问限制1次/秒,如果你的项目并发量特别大(比如秒杀场景),记得加个限流或者队列,别把接口冲爆了

总结

把芯步的20W音箱对接进项目,核心流程就三步:拿ID -> 算签名 -> 发POST请求

后面高级一点的玩法,还可以把音箱的音量和商场背景音乐系统联动,或者接入ChatGPT做个智能语音服务台。