Cloud-to-Cloud(云云接入)
前言
項目地址:https://github.com/LeYunone/cloud-to-cloud
配置說明:https://leyunone.com/github-project/voice-cloud-cloud-config.html
- 注:學習測試以及使用請拉取 master 分支,release 是開發分支,如果有幫助到你,感謝不留情面的提Issues或pull吐槽
- 開源不易,點個 star 鼓勵一下吧!
簡介
問:這是什么?
答:對接各大產商云如小度、天貓精靈,小愛同學,Alexa等智能語音技能的云云接入協議,是一個全平臺通用的中間層物聯網設備模型轉化平臺。
問:有什么用?
答:
- 自帶完整體系的小度、小米、Alexa、Google等主流物聯網平臺云云接入協議,拆箱即用
- 產商云與開發者云的模型轉化被數據庫配置化,可由頁面進行可視化配置他方云模型與我方云模型的轉化關系。
- 是物聯網云云接入協議技能平臺的一個完整(從架構功能,授權到可視化頁面)流程的解決方案
問:定位是什么?
答:以天貓精靈官網的結構圖為例:
本項目平臺介于天貓精靈
到第三方設備控制云
之間,將本該由開發云進行控制協議、發現協議等設備交互的云云協議轉化,全權由本項目平臺進行全平臺通用的可配置模式的轉化
問:怎么用?
答: 下載代碼,運行數據庫文件,各使用者根據自身情況修改一個類中的代碼。部署項目,打開前后端不分離的配置頁面,配置各平臺中開發云與產商云設備模型轉化。
流程與架構圖
云云接入協議流程如下:
本平臺 = 產商云技能
以設備控制為例,簡單的流程是:
- 用戶語音觸發三方平臺,以下以發起
打開空調
為例 - 三方平臺根據
打開空調
找到對應設備,將設備id與打開空調
動作通過HTTP接口調用的方式,轉遞給產商云 - 產商云根據
控制設備
指令協議進行接口對接,將其消耗至內部云服務中,進行實施的設備控制
云云接入的核心也將圍繞著將對方模型轉換為我方模型這一理念進行設計,大致架構圖為:
平臺部署與代碼調整
部署環境:
環境 | 版本 |
---|---|
JDK | 8 |
Mysql | 不限 |
Redis | 不限 |
Rabbitmq | 不限 |
Google-auth | 1.19.0 |
數據庫見voice_cloud.sql文件
以下選讀
因為各開發云的業務不同,本平臺一定得由使用者進行一定的代碼調整,下面將以百度為例進行代碼跟蹤;
入口:PortalController
@PostMapping("baidu")public String baidu(@RequestBody String payload) {return thirdPartyPortalService.portal(payload, ThirdPartyCloudEnum.BAIDU);}
使用策略模式走到 BaiduCloudHandler
中
該類中進行如下動作
- 刷新產商云在平臺的token
- 檢查場景類特殊設備
- 調用協議執行方法
以百度的發現設備報文為例:
{"header": {"namespace": "DuerOS.ConnectedHome.Discovery","name": "DiscoverAppliancesRequest","messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2","payloadVersion": "1"},"payload": {"accessToken": "[OAuth Token here]","openUid": "27a7d83c2d3cfbad5d387cd35f3ca17b"}
}
執行BaiduDeviceDiscoveryHandler
類方法
使用者在DeviceServiceHttpManager
中修改我方云實際發現設備動作的請求,一般為HTTP,也可使用Rpc。
調用修改后的方法拿到設備后,將發現到的設備與本次請求的用戶關系存儲到數據庫中,并且在緩存中建立設備-用戶的關系文檔
執行BaiduDeviceConvert
模型轉化方法,將發現到的設備通過數據庫中配置的模型屬性映射關系,變為百度方的設備結構;
組裝響應參,返回,結束;
架構大體上使用策略+抽象工廠的模式搭建,通過上述的路線查看代碼,只需要修改DeviceServiceHttpManager
中實際云通訊部分的代碼即可完成部署;
包括上報、同步、協議對接部分的所有開發云的響應參請以本項目中的DeviceInfo和DeviceFunctionDTO為準
相關鏈接
-
小度 https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-smart-home/protocol/discovery-message_markdown
-
小愛同學 https://developers.xiaoai.mi.com/documents/Home?type=/api/doc/render_markdown/SkillAccess/skill/CustomSkillsMain
-
華為HiLink https://developer.huawei.com/consumer/cn/doc/smarthome-Guides/yunaccount-0000001075288087
-
天貓精靈 https://www.aligenie.com/doc/357554/cmhq2c
-
Alexa https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-discovery.html
-
Google https://developers.home.google.com/cloud-to-cloud/integration/sync?hl=zh-cn
-
物聯網語音云云接入
-
云云對接協議中的值組裝