(13)香橙派+apache2与php+天猫精灵=自建平台语音支持--duerOS对接

这篇主要总结一下小度音箱的对接方法,答题流程与天猫精灵一样,只是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

指令的类别。 目前支持的类别有:

  • DuerOS.ConnectedHome.Discovery:发现设备指令。
  • DuerOS.ConnectedHome.Control:控制设备指令。
  • DuerOS.ConnectedHome.Query:查询设备指令。

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的生态也没有天猫精灵的好,同样在商城中查询支持的设备,明显天猫精灵的要多一些。

当时做完天猫精灵之后觉得天猫精灵不好,做完了小度之后只能说一句“真香”,还是决定使用天猫精灵了,至少天猫精灵购买其他外设选择多一些,也便宜一些,有事没事的还能查一下快递,虾米音乐还能播放收藏。。。。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值