芯步的智能硬件采用标准的HTTP接口协议,这意味着任何能发起网络请求的系统(如ERP、收银软件、自建后台)都可以直接向音箱推送语音文本,无需中间件转换。针对40W语音播报壁挂音箱,对接核心是调用设备控制接口,按规则生成签名,并封装包含播报内容的JSON命令。
以下从技术原理、接口规范、代码实现三个层面进行阐述。
1. 对接架构
整个对接采用请求-响应模式,业务流程如下:
sequenceDiagram
participant User as 第三方系统
participant API as 芯步开放API
participant Device as 40W壁挂音箱
User->>User: 计算签名(sign)和当前时间戳(ts)
User->>API: POST /{AppId}/device/control/?sign={sign}&ts={ts}
Note over User,API: Body: {"device":"设备ID", "order":{"play:gbk:16":"要播报的文本"}}
API-->>User: 返回下发结果(成功/失败)
API->>Device: 推送播报指令
Device->>Device: 执行语音播报2. 核心接口对接规范
对接主要涉及设备控制接口,具体规范和参数如下
接口地址
https://api.thingboot.com/{AppId}/device/control/请求方式
POST,Content-Type: application/json签名算法 (sign)
sign = md5( md5(AppSecret) + ts )。即将AppSecret进行MD5加密后,拼接时间戳字符串,再整体做一次MD5(32位小写)。关键参数说明
| 参数位置 | 参数名 | 类型 | 描述 |
|---|---|---|---|
| URL路径 | AppId | String | 平台分配的应用标识,在控制台获取 |
| URL参数 | sign | String | 接口调用签名,用于身份验证 |
| URL参数 | ts | Int | 当前Unix时间戳(秒) |
| Body | device | String | 音箱设备ID,支持批量(逗号分隔),如 "123,456" |
| Body | order | Object | 指令对象,播报命令为 {"play:gbk:16": "文本"} |
3. 详细对接步骤
3.1 前置准备:获取凭证和设备ID
首先需要获取AppId和AppSecret,同时确保音箱在线。
登录芯步。
若未注册,先完成账号注册并登录,进入“开发设置”页面。
在“开发设置”中可获取
AppId和AppSecret。这是后续所有接口调用的凭证,需妥善保管。在“设备管理”页面或通过接口拉取,获取目标40W壁挂音箱的
deviceID。
3.2 核心难点:计算签名 (sign)
为保证接口安全,所有请求需携带动态签名。以Python为例,签名生成方式如下:
注意:md5()结果需为32位十六进制小写字符串。
3.3 向音箱推送文本示例
生成签名后,即可组装请求体向指定音箱推送文本。命令格式为{"play:gbk:16":"您要播报的内容"}。
请求体示例
以下为各语言的代码示例,实际开发时请替换代码中的AppId、AppSecret和device为实际值。
Python 代码示例
Java 代码示例 (使用 Unirest) :
Shell (cURL) 代码示例
注:代码中的order值为完整的JSON对象字符串。
4. 扩展功能和需要注意的点
4.1 播报参数调节
除了基本文本推送,接口还可通过order对象调节播报效果,实现更丰富的提醒功能
音量控制
{"volume": 80}(范围0-100)语速控制
{"speed": 60}(范围0-100)音色切换
{"voice": 1}切换男/女声播放提示音
{"ring": 3}先播放预设铃声再播报
组合指令示例
4.2 实施
网络环境:40W壁挂音箱使用2.4G WiFi联网,网络需稳定。支持多WIFI配置,可设置5组SSID自动切换。
批量播报:同一指令需要推送到多个音箱时,
device参数直接用英文逗号拼接多个设备ID即可,例如"1878,1879,1880"。私有化部署:若场景对网络延迟或数据安全要求比较高,该产品支持私有化部署方案,可将API部署于本地局域网。
错误处理:开发时应增加异常捕获,对接口返回的非200状态码及业务错误码进行相应处理,例如签名失效时重新计算。
特殊字符处理:播报文本中若包含引号等特殊字符,需要进行JSON转义。