在開始繼續機器人架構的學習之前,我需要首先解決Code運作編譯js的問題,畢竟為了偷懶研究機器人架構的,每次手動輸入 node app.js 啥的,多傻啊。
畢竟以前沒用過Code,一時不知如何下手。突然想起之前裝了Python,好像可以直接在Code裡面F5鍵運作調試。那Node.js肯定也可以吧?研究下。
進入調試界面,仔細看了看,在調試後面有個下拉框,Python的各種調試都在裡面了,研究了一下,原來是有一個launch.json的配置檔案,照貓畫虎的把找到的node運作調試的加上去了。咦?為啥不能直接運作?這個運作路徑好像不對。改成${file}試試~ 果然,可以了。
嗯,繼續機器人架構的學習。根據文檔的介紹,其實人和機器人的互動可以叫做一次交流,每個交流可以有多次對話,每個對話裡機器人的響應其實都是瀑布式 (waterfall) 的。是不是感覺很眼熟?我覺得這和程式的邏輯沒啥不同嘛。
要開始真正的人機互動,需要從對話(dialog)開始。首先看看官方文檔,然後貼一段示例代碼過來跑跑~這是一段模拟訂餐的人機對話。
很遺憾……報錯了……提示 bot.dialog 沒有定義。我也知道需要begindialog(),可你執行個體代碼就是這麼寫的啊…塞哪也沒用… 糾結了半天,決定先繼續往下看。
看到下一章,這個問題就解決了。原來使用bot.dialog()在主程式之外定義的對話,然後在主程式裡的預設dialog使用session.begindialog()來調用。再貼代碼來跑跑~
這次跑的人機對話終于有點樣子了,有個幾回合的互動。
不改代碼,怎麼學習?我覺得通過改代碼來了解一下它是如何運作的。首先我希望在有關預訂内容之前,增加詢問稱呼的對話,然後後面的對話多一個稱呼,顯得禮貌一些。
照着示例代碼的樣子,寫了一個bot.dialog(“askForName”),卻發現無論如何跑起來都報錯。
第一個錯,出在第一個function我多加了results,某處又少了代碼行結尾的”;”,結果一直提示session出錯。
第二個錯,出在我照葫蘆畫瓢,在第二個function裡使用session.dialogdata.userName來引用變量。一直提示我userName未定義。後來我猜這個session.dialogdata.*估計是用來跨函數的全局變量,直接在目前函數指派居然不能立刻引用…估計寫法不對?反正我改成results.response,就好了。
那麼,機器人支援中文麼?我也得試試。
沒問題啊~估計你得問,這tm哪裡有人工智能了?我用VBS腳本都能寫!且慢,請看看輸入時間的地方~
builder.EntityRecognizer.resolveTime([results.response])
嘗試了幾種不同的輸入,都能正确的解析成UTC時間格式,其實這裡調用了簡單的recognizer的功能,做了最簡單的智能分析。畢竟這才剛開始,後面機器人還可以內建LUIS語音識别,Bing的搜尋,Cortana的智能協助……如果我能完成學習的話~
本文轉自HaoHu 51CTO部落格,原文連結:,http://blog.51cto.com/haohu/1970425如需轉載請自行聯系原作者