这篇主要总结一下小度音箱的对接方法,答题流程与天猫精灵一样,只是php稍有不同,我也会把php源码上传,需要的可以下载,流程与天猫精灵的php文件大体相同,只是其中的细节稍有差异。
php文件链接:https://download.csdn.net/download/andylauren/11422327
下面的大部分在dueros文档中都能找到,我只是将比较重要的部分提取出来。
智能家居设备工作流程
以打开厨房灯为例讲述智能家居设备工作流程。
1. 发现智能设备。用户需要将智能家居设备厨房灯连接到智能家居设备云上。
2. 用户请求打开厨房灯,用户说“小度小度,打开厨房灯”。
3. DuerOS解析用户请求,将相应的指令发送到智能家居技能。
4. 智能家居技能打开厨房灯。
5. 智能家居技能向DuerOS返回厨房灯的状态。
6. DuerOS向用户返回处理结果,会说“好的”。
创建智能家居技能
DuerOS平台支持开发者创建智能家居技能,用户通过您的技能可以使用声音控制智能设备,如打开空调,打开电视等。当用户发出语音指令时,DuerOS解析出用户的意图,然后向技能发送该意图相应的指令。技能收到指令时,对设备进行相应的操作。这个过程中技能不需要做任何的语义分析工作。
创建技能
创建智能家居技能首先要对该技能进行设计。如技能控制哪些智能设备及相应的操作等,然后对技能进行实现。
设计技能
你可以设计技能包含哪些智能设备,并参考协议设计智能设备支持的操作。也可以设计技能包含哪些智能场景,每种智能场景中包含哪些设备及设备的工作状态。
创建技能流程
1. 登录技能开发平台
请使用百度账号登录技能开发平台。如果您还没有百度账号,请先注册百度账号。
2. 创建技能
在平台首页,点击创建新技能,选择智能家居技能。填写技能名称,点击确定。技能名称要求是2~50个字符。
3. 基础信息
技能创建后,可以查看技能的基础信息,包括技能类型、技能ID、技能名称。技能ID是技能创建时DuerOS分配给技能的唯一标识,不支持修改。
4. 配置服务
配置服务需要填写授权信息配置时需要填写以下内容。
• response_type: 授权类型,此处是固定值code。
• 授权地址: 开发者授权访问的地址,遵守OAuth 2.0标准。
• Client_Id: 客户端ID。
• Scope:scope权限,多个权限之间请使用空格进行分开。
• 回调地址: 每个技能创建时,在开放平台上生成的唯一URL地址,该地址不能修改。
• Token地址:用于获取Access Token的地址,遵守OAuth 2.0标准协议。
• ClientSecret:客户端Secret。
• WebService:智能家居设备的设备云服务部署地址。
信息配置完毕,请点击授权按钮。
5. 模拟测试
点击模拟测试,对技能进行测试。例如智能灯测试,首先说“发现设备”,发现设备成功后,再说“打开灯”,查看灯是否被打开。
智能家居协议
简介
智能家居协议是DuerOS与智能家居技能之间的通讯协议。通过这些协议您可以轻松的通过语音控制家里的智能设备,与设备进行交互。智能家居协议使用HTTPS传输,协议采用JSON消息格式。
认证
智能家居协议遵循OAuth2.0规范。 从DuerOS发送到技能的每个请求都包含OAuth的access token。
协议
智能家居协议指令(directives)由Header和Payload两部分组成。
Header信息
Header包含消息标识符、指令名称、命令空间和payload版本信息。
消息格式
{"header": { "namespace": "DuerOS.ConnectedHome.Discovery","name": "DiscoverAppliancesRequest","messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2","payloadVersion": "1"}
}
属性说明
Header包含的属性及属性说明。
属性 | 属性说明 | 是否必须 |
namespace | 指令的类别。 目前支持的类别有:
| 是 |
name | 指令的名称。 | 是 |
messageId | 消息的唯一标识符,长度小于128个字符。messageId仅用于标识消息,无其他使用。建议使用随机生成的UUID作为messageId。 | 是 |
payloadVersion | payload的版本号。 | 是 |
Payload信息
Payload的内容与Header中的name值相关,不同类型的指令,其payload内容也不相同。
说明一下配置服务的填写内容
在天猫精灵中有一个步骤是添加回调和id,password的数据库,天猫精灵的如下:
MariaDB [tmalk]> select * from oauth_clients;
+-----------+---------------+-------------------------------------------+-------------+-------+---------+
| client_id | client_secret | redirect_uri | grant_types | scope | user_id |
+-----------+---------------+-------------------------------------------+-------------+-------+---------+
| ID | PASSWORD | https://open.bot.tmall.com/oauth/callback | NULL | NULL | NULL |
+-----------+---------------+-------------------------------------------+-------------+-------+---------+
1 row in set (0.00 sec)
dueros的相似的需要添加,添加方法可以参考天猫精灵。
最后
dueros有许多的东西都和天猫精灵一样,如果你是直接看的这篇文章有需要调试dueros,还是先去按照之前的文章走走步骤,剩下的就是把php文件一换就可以了。
最后还是吐槽一下dueros的奇葩之处,其中对于颜色的调节,dueros使用的是HSL模式,也就是说你如果说颜色,他会转为HSL格式传过来,如果你做的是全彩色的灯泡还好一下,只需要进行HSL转RGB就可以了,如果你做的是双色,比如只有白色和黄色的吸顶灯,那么就需要对颜色进行逻辑判断,比较麻烦。还有就是对于状态的查询,状态的查询只支持几种,如温度湿度,空气净化器等的查询,你想查询灯和插座这样的设备状态是不支持的,可能是我没有研究明白,反正我是没做出来,当你问小度状态的时候连php的请求都没有收到,好像服务压根就不支持一样,这也是我为什么在php文件中直接把查询部分删除了的原因。还有就是dueros的生态也没有天猫精灵的好,同样在商城中查询支持的设备,明显天猫精灵的要多一些。
当时做完天猫精灵之后觉得天猫精灵不好,做完了小度之后只能说一句“真香”,还是决定使用天猫精灵了,至少天猫精灵购买其他外设选择多一些,也便宜一些,有事没事的还能查一下快递,虾米音乐还能播放收藏。。。。。。