語音技能云云接入通用平臺

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等智能語音技能的云云接入協議,是一個全平臺通用的中間層物聯網設備模型轉化平臺。

問:有什么用?

  1. 自帶完整體系的小度、小米、Alexa、Google等主流物聯網平臺云云接入協議,拆箱即用
  2. 產商云與開發者云的模型轉化被數據庫配置化,可由頁面進行可視化配置他方云模型與我方云模型的轉化關系。
  3. 是物聯網云云接入協議技能平臺的一個完整(從架構功能,授權到可視化頁面)流程的解決方案

問:定位是什么?

:以天貓精靈官網的結構圖為例:

本項目平臺介于天貓精靈第三方設備控制云之間,將本該由開發云進行控制協議、發現協議等設備交互的云云協議轉化,全權由本項目平臺進行全平臺通用的可配置模式的轉化

問:怎么用?

答: 下載代碼,運行數據庫文件,各使用者根據自身情況修改一個類中的代碼。部署項目,打開前后端不分離的配置頁面,配置各平臺中開發云與產商云設備模型轉化。

流程與架構圖

云云接入協議流程如下:

本平臺 = 產商云技能

以設備控制為例,簡單的流程是:

  1. 用戶語音觸發三方平臺,以下以發起 打開空調 為例
  2. 三方平臺根據 打開空調 找到對應設備,將設備id與 打開空調 動作通過HTTP接口調用的方式,轉遞給產商云
  3. 產商云根據 控制設備 指令協議進行接口對接,將其消耗至內部云服務中,進行實施的設備控制

云云接入的核心也將圍繞著將對方模型轉換為我方模型這一理念進行設計,大致架構圖為:

平臺部署與代碼調整

部署環境:

環境版本
JDK8
Mysql不限
Redis不限
Rabbitmq不限
Google-auth1.19.0

數據庫見voice_cloud.sql文件

以下選讀

因為各開發云的業務不同,本平臺一定得由使用者進行一定的代碼調整,下面將以百度為例進行代碼跟蹤;

入口:PortalController

	@PostMapping("baidu")public String baidu(@RequestBody String payload) {return thirdPartyPortalService.portal(payload, ThirdPartyCloudEnum.BAIDU);}

使用策略模式走到 BaiduCloudHandler

該類中進行如下動作

  1. 刷新產商云在平臺的token
  2. 檢查場景類特殊設備
  3. 調用協議執行方法

以百度的發現設備報文為例:

{"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

  • 物聯網語音云云接入

  • 云云對接協議中的值組裝

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23472.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23472.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python pip 安裝

如果您不確定pip的安裝路徑,可以通過以下命令來查詢: pip show pip 這個命令會顯示pip的詳細信息,其中包括pip安裝的路徑。如果您想修改pip的默認安裝路徑,可以使用pip的"--target"參數指定目標路徑,例如&a…

8.7k Star!Khoj:你的AI第二大腦、開源RAG Cop??ilot、平替 MS Copilot與ChatGPT

原文鏈接:(更好排版、視頻播放、社群交流、最新AI開源項目、AI工具分享都在這個公眾號!) 8.7k Star!Khoj:你的AI第二大腦、開源RAG Cop??ilot、平替 MS Copilot與ChatGPT 🌟你的AI第二大腦。…

zynq-7015啟動分析及裸機BootLoader編寫(未完待續)

使用lwip-tcp遠程對QSPI進行更新、QSPI FLASH啟動 W25Q128資料: W25Q128JV datasheet(1/78 Pages) WINBOND | 3V 128M-bit serial flash memory with dual/quad spi (alldatasheet.com) UG585資料: Zynq 7000 SoC Technical Reference Manual-UG585 翻譯…

【ARFoundation自學05】人臉追蹤(AR Face manager)實現

1. 修改攝像機朝向渲染方式-選中user 這個方式就會調用前置攝像頭 2 創建 AR Session、XR Origin,然后在XR Origin上面添加組件 注意:XR Origin 老版本仍然叫 AR Session Origin 接下來在XR Origin上面添加AR Face Manager組件,如下圖&am…

劇本殺市場仍在快速發展,劇本殺小程序成為了新的機遇

近年來,劇本殺一直是年輕人的娛樂游戲方式之一,劇本殺行業呈現出了井噴式發展的形勢,成為了當下爆火的娛樂方式。目前,劇本殺行業擁有了完善的劇本資源和呈現方式,發展前景非常大。 根據當下的數據顯示,劇…

NextJs 實現自定義點火操作

NextJs 實現自定義點火操作 前言實現自定義點火 前言 我希望在Nextjs 啟動的時候,能夠自定義實現一些項目的初始化邏輯,也可以說是一些點火操作,比如資源的加載,數據的初始化等操作。 實現自定義點火 我們可以在根目錄下創建一…

Android 開機動畫的啟動過程BootAnimation(基于Android10.0.0-r41)

文章目錄 Android 開機動畫的啟動過程BootAnimation(基于Android10.0.0-r41)1.開機動畫的啟動過程概述2.為什么設置了屬性之后就會播放? Android 開機動畫的啟動過程BootAnimation(基于Android10.0.0-r41) 1.開機動畫的啟動過程概述 下面就是BootAnimation的重要部…

移動app測試重要性體現在哪些方面?專業app測試報告獲取

移動app測試是指對手機應用進行各種測試和評估的過程,以確保應用的功能、性能和用戶體驗達到要求。在現代社會中,移動應用已經成為人們日常生活的一部分。無論是社交娛樂、購物支付還是工作學習,移動應用都發揮著不可替代的作用。因此&#x…

常微分方程 (ODE) 和 隨機微分方程 (SDE)

常微分方程(Ordinary Differential Equations, ODE)和隨機微分方程(Stochastic Differential Equations, SDE)是數學中描述系統動態行為的重要工具。它們有一些相似之處,但在處理隨機性方面存在顯著差異。 常微分方程…

Oracle數據庫面試題-5

81. 請解釋Oracle數據庫中的自動空間重新壓縮(Automatic Space Recompression)的概念。 Oracle 數據庫中的自動空間重新壓縮(Automatic Space Recompression) 自動空間重新壓縮是 Oracle 數據庫中的另一個重要特性,它…

Vue響應式系統分支切換與cleanup - 清除遺留的副作用函數

文章目錄 前言分支切換與cleanup分支切換的問題依賴集合的收集cleanup的實現完整的代碼展示 前言 本篇文章代碼思路來自 Vue3.0 源碼, 部分理解來源于霍春陽 《Vue.js設計與實現》這本書的理解, 感興趣的小伙伴可以自行購買閱讀。可以非常明確的感受到作者對 Vue 的深刻理解以及…

每天寫java到期末考試(6.6)-java文件輸入輸出流實驗

1、用字節流讀寫二進制文件 要求:用DataOutputStreamFileOutputStream類將1,2,…,100,這100個數字寫入到文件 d:\out1.bin里,然后再用DatalnputStreamFilelnputStream類將d:\out1.bin的內讀出來,并輸出到屏幕上。 用DataOutputStreamFileOutputStream寫入二進制數據時,直接調…

單元測試AIR原則:提升代碼質量的秘密武器

文章目錄 引言一、AIR原則1. Automatic(自動化)2. Independent(獨立性)3. Repeatable(可重復性) 二、Automatic(自動化)三、Independent(獨立性)四、Repeatab…

【MySQL】sql語句之表操作(上)

序言 在上一篇的數據庫操作的內容中,學習了兩種屬性和常用的七種操作,學習是循序漸進的,庫的操作學完了,就要開始學習表的操作了,而表可與數據強相關,比如DDL,即數據定義語言,DML&am…

DVWA-XSS(Stored)

Low 觀察后端代碼,對輸入進行了一些過濾和轉義。trim(string,charlist) 函數用于移除字符串兩側的空白字符或其他預定義字符,charlist 參數可以規定從字符串中刪除哪些字符。stripslashes() 函數用于刪除反斜杠。mysqli_real_escape_string() 函數用于對…

SAAS系統架構設計剖析

多租戶數據隔離 用戶擔心數據安全性,也就是要做數據隔離,不允許 A 租戶查到 B 租戶的數據 1、軟隔離 數據在一起,只不過帶著租戶 id 查詢 在底層驅動 jar 上進行封裝,強制帶上租戶 id 比如:MySQL、MQ、Redis&#…

【論文精讀】DCRNN-擴散圖卷積循環神經網絡

DCRNN 模型是南加州大學的 Li 等人發表在 I C L R 2018 ICLR 2018 ICLR2018 會議上一個用于交通預測的時空預測模型,論文題目為: 《DIFFUSION CONVOLUTIONAL RECURRENT NEURAL NETWORK: DATA-DRIVEN TRAFFIC FORECASTING》,文章地址為: https://arxiv.org/abs/1707.01926。 …

vs中運行程序時,報不能運行解決方式

問題 在vs中編譯運行程序中,如果程序還在運行,編譯會報錯,但是在后臺又找不到對應的程序 解決方式 1、tasklist | find “進程名” 2、taskkill /PID

【實戰】kafka3.X kraft模式集群搭建

文章目錄 前言kafka2.0與3.x對比準備工作JDK安裝kafka安裝服務器增加hosts 修改Kraft協議配置文件格式化存儲目錄 啟動集群停止集群測試Kafka集群創建topic查看topic列表查看消息詳情生產消息消費消息查看消費者組查看消費者組列表 前言 相信很多同學都用過Kafka2.0吧&#xf…

二叉樹的鏡像--c++【做題記錄】

【問題描述】 給定擴展二叉樹的前序序列,構建二叉樹。 求這課二叉樹的鏡像,并輸出其前序遍歷序列。 【輸入形式】 輸入擴展二叉樹的前序序列。 【輸出形式】 輸出鏡像二叉樹的前序遍歷序列。 【樣例輸入】 ab##cd##e## 【樣例輸出】 鏡像后二叉樹的前序遍…