我的 Rokid 之路 附:记事本技能全部源代码
今天(2017年12月25號,圣誕節(jié),Rokid有心啦,木有收到圣誕節(jié)禮物的我,給我送來Rokid All in ONE 全棧語音智能開發(fā)套件作為圣誕節(jié)驚喜)
開箱后只能說做工相當(dāng)不錯(cuò),很精致。
廢話不多說,正式走一遍遇到的坑,官方的開發(fā)指南其中已經(jīng)寫好了很多必要的入門流程。
目前開發(fā)的技能
記事本
- 基本功能框架完成
- 歡迎各位開發(fā)提交PR
本人遇坑及經(jīng)驗(yàn)總結(jié)如下
本人測試通過的可信刷機(jī)鏡像(其實(shí)就是官方鏡像)
- Android
- Linux
在Windows下使用adb shell連接到開發(fā)板后,使用ls命令,如果出現(xiàn)類似如下的內(nèi)容,可能是自帶的字符串著色與Windows的console不兼容,登入shell后,直接執(zhí)行 alias ls='busybox ls --color=never' 即可。建議Rokid預(yù)安裝bash作為備用選項(xiàng),或者開發(fā)者自行下載使用Cmder軟件,可解決以上問題。(不怎么直接使用sh,一直用的bash或者zsh,沒有出現(xiàn)過類似問題)
[0;0mdefault.prop[0m [1;36mlib64[0m [1;34mopt[0m [1;34msrv[0m [1;34mdev[0m [1;34mlibexec[0m [1;34mproc[0m關(guān)于WiFi連接及配網(wǎng)
- 坑走完之后就是Demo了,能正式配置Rokid的WiFi連接,剩下的就很方便了,通過官方開發(fā)指南先做一個(gè)簡單的人機(jī)對話,在開發(fā)過程中與Rokid的直接交流語言的JavaScript,因此若要開發(fā)更為靈活的服務(wù)功能,需要依托其它的后臺接口開發(fā)。
關(guān)于入口詞的一些事
- Rokid 中可能涉及的入口詞問題,本人發(fā)現(xiàn)Rokid是針對技能貌似是獨(dú)占的(還沒有完全確定這一點(diǎn)),前期可能刺激開發(fā)者或者其他人員搶占入口詞,建議平臺針對這點(diǎn)進(jìn)行入口詞融合、增加針對用戶或者設(shè)備調(diào)試不同技能的優(yōu)先級功能。
順便來幾張開箱照(圖片太丑,請點(diǎn)擊下方鏈接查看):
- 未拆圖
- 已全拆圖
技能開發(fā)過程需要知道的事情
技能類型說明
| 公有 | 所有用戶 | 云端 |
| 私有 - 云端 | 指定用戶 | 云端 |
| 私有 - 本地 | 指定用戶 | 本地(/opt/apps或/data/apps目錄) |
關(guān)于rokidos-cli
整理中。。。關(guān)于語言交互的設(shè)置
詞表
- Rokid 預(yù)定義詞表
-
自定義詞表
$ROKID.YES_ZH $ROKID.NO_ZH
自定義詞表除了可以通過普通的一行一個(gè)詞的方式設(shè)定自己的詞表,還可以通過如下的方式引用其它詞表(引用詞表以 $ 符號開頭) -
setConfirm
{"intent": "RecordAny","slots": [{"name": "content","type": "ROKID.ANY"}],"user_says": ["!$content"] }
如果要通過setConfirm獲取用戶對話過程的任意內(nèi)容,可以參考如下方式
意圖定義:服務(wù)代碼中對應(yīng)handler中使用如下setConfirm語句:
this.setConfirm({confirmIntent: 'RecordAny',confirmSlot: 'content' });
Session
- this.setSession(key, value)中,所傳value為null時(shí),該值不會被記錄。
dbServer
- dbServer.set(key, value, callback) 該方法為異步形式,因此涉及數(shù)據(jù)庫操作時(shí),應(yīng)該將其后的業(yè)務(wù)邏輯放于callback中,否則數(shù)據(jù)還沒取回就執(zhí)行到后面的業(yè)務(wù)中。
- get:Rokid.dbServer.get(key, callback)與Rokid.dbServer.delete(key,callback)是否為異步形式尚未驗(yàn)證,建議同樣將數(shù)據(jù)庫操作之后的業(yè)務(wù)邏輯放于callback中。
- 鑒于關(guān)于數(shù)據(jù)庫操作為異步形式,因此建議相關(guān)開發(fā)者自建統(tǒng)一的數(shù)據(jù)庫存取管理的相關(guān)代碼以避免多層嵌套(具體參考代碼稍后會以GitHub的形式放出),或者改寫為Promise形式,目前尚未改寫成功。
- 集成測試中的后端服務(wù)測試與服務(wù)列表中的測試用例在邏輯上不屬于同一個(gè)會話,因此在調(diào)試中需要做區(qū)別,也就是數(shù)據(jù)庫里的數(shù)據(jù)不共享,需要單獨(dú)各自添加測試數(shù)據(jù)。
后續(xù)進(jìn)一步整合raspberry pi與Rokid
該文章持續(xù)更新中。。。
本文參與了 SegmentFault「Rokid 開發(fā)板試用,開啟你的嵌入式開發(fā)之旅」活動,歡迎正在閱讀的你申請?jiān)囉?#xff0c;一起交流開發(fā)心得。 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的我的 Rokid 之路 附:记事本技能全部源代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OC和JS互相调用小框架
- 下一篇: java SocketChannel a