WebSocket接口协议定义
传输协议
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
消息格式
公共参数
params
字段 | 必填 | 类型 | 说明 |
---|---|---|---|
osAccessToken | 是 | String | 小雅OS访问令牌 |
deviceType | 是 | Integer | 请求来源:1-app端 2-设备端,填写客户端的,不是服务器的信息 |
productId | 是 | String | 产品ID,小雅OS开放平台创建设备后获取 |
sn | 是 | String | 设备sn,若deviceType != 2 时非必填 |
deviceId | 是 | String | app设备号,若deviceType != 1 时非必填 |
lat | 否 | String | 纬度,如果有建议上报,部分技能会根据地理位置进行逻辑处理 |
lng | 否 | String | 经度 |
sysType | 是 | Integer | 手机系统类型:1-Android 2-IOS,若deviceType != 1 时非必填 |
appVersion | 是 | String | 手机应用版本号,若deviceType != 1 时非必填 |
sysVersion | 是 | String | 手机系统版本号,若deviceType != 1 时非必填 |
speakerVersion | 是 | String | 对应的设备版本号,若deviceType != 2时非必填 |
romVersion | 是 | String | 对应的设备rom版本号,若deviceType != 2时非必填 |
dt | 是 | long | 毫秒unix时间戳 |
交互逻辑
客户端在请求服务前应先登录,获取小雅OS服务的访问令牌(osAccessToken), 持有访问令牌的请求才有权限访问小雅OS的服务。 小雅OS WebSocket API提供的服务包括:基于声音流的ASR-NLU解析,以喜马拉雅有声内容为代表的多种技能。
WebSocket声音流请求逻辑:
1. WebSocket客户端带入参连接至服务端
2. 分片传输语音数据包
3. 服务端会陆续解析分片数据包并返回。
4. 发送尾包,报告发送完毕及分片数据包数量,返回最终识别结果,使用endFlag=1判断是否结束。
5. 最后服务端调用nlu接口返回nlu的解析。
签名规则
无