这篇主要总结一下小度音箱的对接方法,答题流程与天猫精灵一样,只是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包含消息标识符、指令名称、命令空间和payload版本信息。
Header包含的属性及属性说明。
属性
属性说明
是否必须
namespace
指令的类别。 目前支持的类别有:
DuerOS.ConnectedHome.Discovery:发现设备指令。DuerOS.ConnectedHome.Control:控制设备指令。DuerOS.ConnectedHome.Query:查询设备指令。是
name
指令的名称。
是
messageId
消息的唯一标识符,长度小于128个字符。messageId仅用于标识消息,无其他使用。建议使用随机生成的UUID作为messageId。
是
payloadVersion
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的生态也没有天猫精灵的好,同样在商城中查询支持的设备,明显天猫精灵的要多一些。
当时做完天猫精灵之后觉得天猫精灵不好,做完了小度之后只能说一句“真香”,还是决定使用天猫精灵了,至少天猫精灵购买其他外设选择多一些,也便宜一些,有事没事的还能查一下快递,虾米音乐还能播放收藏。。。。。。
