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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/andylauren/article/details/84203945

导航链接

(1)香橙派+apache2与php+天猫精灵=自建平台语音支持--前言

(2)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派操作系统安装

(3)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派环境配置

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

(5)香橙派+apache2与php+天猫精灵=自建平台语音支持--MariaDB的安装

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

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

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

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

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

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

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

开始

由于与天猫精灵对接的知识点有点多,所以对接的内容会分为几篇文章进行进行。

现在我们有了自己的服务器,因为天猫精灵协议的对接是云服务器与云服务器的对接并不支持与硬件设备的直接对接,看一下天猫精灵的接入方式的简介就可以知道了。

从图中可以看到,用户的语音指令通过天猫精灵上传阿里云语音服务器通过解析后发送响应的协议到第三方设备控制云(前提是要有第三方的授权),然后第三方的云再与用户的设备进行沟通控制。这种控制方式我个人认为是很合理的,首先这是两套独立的系统,只是通过协议对接,相互不相影响,独立性高,安全性高。阿里专注于做语音识别,语义分析等AI方面的事情,而第三方硬件厂商专注于做自己的硬件设备,各归其所,能把产品的性能发挥到极致。

原理

在正式做之前我们先把这个原理捋一捋,原理清楚了就知道我们要做什么了,下边的一段内容主要是参考天猫精灵的官方开发文档。只截取重点。首先我们要在天猫精灵的开发网站上发布一项智能家居的技能,最关键的是在技能发布的时候的服务设置,这里就明确要求了我们一定要有第三方授权协议的支持Oauth2。

当授权成功后,对接协议会利用POST发送一条设备探测信息,我们需要按照协议的标准返回设备信息,具体协议文本如下:

其他品类设备响应返回

{
  "header":{
      "namespace":"AliGenie.Iot.Device.Discovery",
      "name":"DiscoveryDevicesResponse",
      "messageId":"1bd5d003-31b9-476f-ad03-71d471922820",
      "payLoadVersion":1
   },
   "payload":{
      "devices":[{
      "deviceId":"34ea34cf2e63",
      "deviceName":"light1",
      "deviceType":"light",
      "zone":"",          
      "brand":"",
      "model":"",     
      "icon":"https://git.cn-hangzhou.oss-cdn.aliyun-inc.com/uploads/aicloud/aicloud-proxy-service/41baa00903a71c97e3533cf4e19a88bb/image.png",
      "properties":[{
        "name":"color",
        "value":"Red"
       }],
      "actions":[
        "TurnOn",
        "TurnOff",
        "SetBrightness",       
        "AdjustBrightness",     
        "SetTemperature",
        "Query"        
     ],
      "extensions":{
         "extension1":"",
         "extension2":""
      }
     }]
   }
}

所以这里就需要使用https的post和相关协议解析等,另外对于相应的https协议要有签名证书,自签名的协议不可用,所以我们就要进行相关的SSL签名证书的获取。

当一切完事之后这个桥就算搭上了,也就是说你已经能拿到天猫精灵经过分析后的动作、设备名等一系列的信息了,剩下的事就是你的设备与你的云服务器进行通讯的事了。我们就按照这个思路走下去。

OAuth2.0第三方授权服务器的搭建

在开始之前先放两篇参考,一篇英文http://bshaffer.github.io/oauth2-server-php-docs/cookbook/,一篇中文https://www.cnblogs.com/endv/p/7868549.html,中文博客里的内容基本上是把英文官方文档翻译一遍。到这里如果你不知道OAuth2.0是啥可以自行百度,百度上一堆讲解OAuth2.0到底是什么用来干什么用的。

正式搭建之前先看一下天猫精灵官方对接文档怎么说,

其实道理很简单,就是阿里平台默认接入的硬件厂商都有自己的平台,既然有自己的平台就有自己用户认证系统,天猫精灵就是通过OAuth2.0在不需要注册新的硬件厂商用户的同时使用用户已有的账号获得硬件厂商的认证系统的授权,使得天猫精灵能够访问该用户名下的硬件设备,然后完成指令的交互。不知道这么解释,解释清楚没,再用大白话说一遍就是“我不是你家人要吃你家饭就要经过你爸妈的同意而不用成为你的家人”,嗯,我感觉这句话不错,哈哈。好那我们现在就要知道我们搭建这个具体需要神马东西。看图

我们做了这么多其实就是要提供这些东西,这个东西在神马地方提供,不急这里先不说,我们放到下一篇文章中说。先解释一下这些东西都是神马意思,然后再做的时候就比较有针对性
1、账户授权连接,指的就是提供输入你在硬件厂商注册的账号和秘密的连接,这个由第三方硬件厂商提供(哦,好像我们现在就是第三方硬件厂商,嗯,没毛病这个应该由我们来提供),这个就是我们在搭建OAuth2.0需要提供的第一项内容
2、ClientID,Client Secret,前者是你在第三方厂商注册的ID,后者是密码
3、Access Token URL是授权的连接,这个在OAuth2.0会有一个专门的文件做这个事情。
4、开发者网关地址,这个地址是天猫精灵协议POST的地址,会在协议对接中讲。
 

展开阅读全文

没有更多推荐了,返回首页