從零開始玩人工智能-機器人服務-01

     image

        原來並不打算寫下來,因爲除了很久以前寫Delphi,後來寫一點腳本,基本上沒怎麼寫過代碼。

        時代不同了,年紀也大了,不知道自己還能不能學習多少東西。想想,要不就當學習筆記吧,也許後面就沒法繼續寫,寫多少算多少。

        微軟及行業近幾年滄桑鉅變,一覺醒來,感覺已經被時代拋棄。所以非常焦慮。總得擠一點時間學習一下,沒法跟別人比,至少自己對新名詞有些認識體會吧。看了看,其實很多新東西會有所交匯。例如,我想讓樹莓派上運行Cortana,根據環境傳感器和互聯網信息,利用認知服務和我交流,管理家裏的電器,通過機器學習,越來越主動的完成生活工作的輔助……有多少東西需要學習啊!所以,我得從零開始學習。

        這算是一個開始吧,學習一個機器人如何工作,集成到cortana裏,慢慢的開始。

        說起機器人框架,其實並不陌生。最早微博微信,就有聊天機器人,根據你的對話自動給出響應。微信裏有小冰,人工智能在不斷進化。而我希望通過初步的學習,讓機器人框架能夠幫助設備更加懂我的要求,交互更加有趣。

        有關機器人框架,微軟有很完整的網站及很多示例代碼來幫助人學習開發。我就是這麼開始的。網站地址:https://docs.microsoft.com/en-us/Bot-Framework/index

        開始學習寫一個機器人之前,可以快速的瞭解一下工作機理。

    architecture-resize

        從上圖看,機器人框架還是相當厲害的。基於SDK開發的代碼,利用機器人連接服務,連接到很多服務,例如自己的數據庫、API接口,Azure的機器學習,搜索……連接到很多交互頻道,例如Web聊天、郵件、UC軟件和各種社交應用…利用認知服務,例如自然語言、機器翻譯、機器視覺……完成很多以前需要花費不少人力時間的事情。舉個例子,約個飯,機器人框架首先可以通過告知的人員,利用社交和其他信息瞭解個人喜好,通過地理位置和社交評價推薦餐廳,通過個人的日程安排商量時間,通過郵件短信社交軟件來約人……簡直是我輩懶人的福音和未來~

        雖然美好的未來需要依託Azure的衆多服務,但是並不意味着沒有Azure就無法開始玩機器人框架。可以先下載一個機器人框架模擬器:Bot Framework Emulator 

       同時,開始寫代碼也不用上來就是宇宙第一開發平臺 Visual Studio~ 完全可以用開源的神器,Visual Studio Code。輕巧簡便跨平臺。機器人框架代碼支持.Net和Node.js,作爲一個完全的小白,我向懂開發的朋友瞭解了下,決定從node.js開始學習~

       萬事開頭難,還好機器人框架網站從最簡單的示例代碼開始。可我一開始就掉坑裏了。裝完Code,再裝完一堆很牛的擴展,接着就是安裝Node.js了。

       安裝完Node.js,接着就是安裝SDK的包。

       npm install --save botbuilder

       安裝完SDK包之後,就可以跑起來最簡單的代碼了。

       var builder = require('botbuilder');

       var connector = new builder.ConsoleConnector().listen();

       var bot = new builder.UniversalBot(connector, function (session) {

                 session.send("You said: %s", session.message.text);

        });

       把代碼貼到Code裏面就能跑起來了~連我沒寫過任何java的,看這段也沒啥太困難。可我也遇到問題了。提示我缺少botbuilder包。我不是剛安裝的麼……

       仔細想想,剛纔npm init的時候,好像問了一堆問題,是不是自動生成了啥配置文件之類?這幾行代碼我重新保存了一個路徑,難道找不到剛纔的配置了?

       clip_image001[5]

       我重新在當前路徑初始化試試……

       clip_image001

       把SDK也重新裝一下~

       node app.js

       終於能運行了。

       然後繼續裝restify包,爲了讓機器人能夠連接,這是必須的~

       clip_image001[8]

       有了restify包,就可以修改一下代碼。

       var restify = require('restify');

       var builder = require('botbuilder');

       // Setup Restify Server

       var server = restify.createServer();

       server.listen(process.env.port || process.env.PORT || 3978, function () {

               console.log('%s listening to %s', server.name, server.url);

        });

       // Create chat connector for communicating with the Bot Framework Service

       var connector = new builder.ChatConnector({

               appId: process.env.MICROSOFT_APP_ID,

               appPassword: process.env.MICROSOFT_APP_PASSWORD });

      // Listen for messages from users

      server.post('/api/messages', connector.listen());

      // Receive messages from the user and respond by echoing each message back (prefixed with 'You said:')

      var bot = new builder.UniversalBot(connector, function (session) {

               session.send("You said: %s", session.message.text);

       });

       和之前的代碼比較,一個是多了連接微軟雲的Bot Framework Service的憑據。然而運行本地Bot Framework Emulator並不需要連接這個雲服務,所以我把這幾行都註釋掉了。

       另一個就是把本地輸入回顯的交互,變成了通過restify的post,然後機器人回覆“You said:”加上你的輸入的簡單交互。

       打開機器人框架模擬器,在藍色框內,輸入運行代碼時的地址,就可以測試機器人框架了。

       clip_image001[10]

       右下角還能提示POST和GET的來往消息。看,從來沒寫過java代碼,沒用過node.js的我,就開始了第一個機器人程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章