前幾天稍微打了一個關於.net部屬在AWS的文章其實是在研究是否AWS會
"無痛"支援Microsoft一些服務(我似乎聽到笑聲了)!別這樣!部屬網站或是架虛擬機器當然是可以的啦!但是要做一些會使用不同廠商的平台功能就有可能吃閉門羹,所以今天要大家分享以及當作學習的筆記囉!。
今天要分享的是使用Microsoft 提供的bot framework來建造多平台的ChatBot,Microsoft建置了bot framework提供使用者簡單製造自己的機器人,大家要先到他的官網: https://dev.botframework.com/
※先註冊Microsoft帳號喔!
其中可以看看他的documentation詳細說明了使用方法,如果要看寫得很好的網站我推薦http://aihelpwebsite.com/Blog/EntryId/6/Creating-a-Hello-World-Bot-Using-The-Microsoft-Bot-Framework
這網站寫得很清楚,可能比官網還清楚...噓!!!,那小弟就稍微介紹一下Bot Framework:

※Bot Framework圖
Bot Builder是說我們可以透過一些開發者元件與人家寫好的工具來撰寫你的機器人,可以使用C#、Node.js...等等來開發
Developer Portal這裡是說明撰寫好的機器人,透過他來跟使用者端做溝通,現在的Bot Framework:並不是所有平台都支援,而現在有哪些平台有支援呢?如下圖所示囉!

※Bot Framework所支援的平台
Bot Directory是指你有那些機器人並做管理。
簡單介紹完之後我們開始先準備工具吧!
首先我們要準備的工具有:
- Virtual Studio 2015(建議使用 不建議2013)因為小弟是2013所以有些問題
- 下載Bot Builder SDK 網址: https://github.com/Microsoft/BotBuilder
- 模擬器 網址: https://github.com/Microsoft/BotFramework-Emulator#download
- 準備一個Web server(不強制 如果只想在本機試試的話就不用了)
假設現在你的本機已經有了Virtual Studio,我們把下載下來的Bot Builder SDK解壓縮至%USERPROFILE%\Documents\Visual Studio 2015
(按照使用的版本)\Templates\ProjectTemplates\Visual C#
接下來打開你的Virtual Studio會發現你多了一個機器人開發選項如下圖所示

※機器人開發選項
建立完以後來檢視一下裡面有什麼東西吧!
其實裡面最重要的兩個檔案是MessagesController.cs 與Web.config如下兩張圖

※Web.config

※MessagesController.cs
Web.config 是用來設定機器人使用的,MessagesController.cs是機器人程式端,也就是說你想要機器人說什麼做什麼事都是在這裡做的。
其實你什麼都不做這個程式就可以跑囉!(小弟有做一個小小的修改,activity.CreateReply(Hello!);)接著打開模擬器與執行專案,並在模擬器的網址列輸入http://localhost:3979/api/messages 然後就可以跟他說話囉!!如下圖所示:

因為小弟的Port是3979所以就輸入3979囉!但是如果要上線的話,網址的協定要從http改成https喲!
接下來要說明如何部屬與設定你的專案為機器人所使用首先先建立一個機器人
進入https://dev.botframework.com/之後點選Register a bot,然後進入頁面如下圖所示:
進入https://dev.botframework.com/之後點選Register a bot,然後進入頁面如下圖所示:

Name是機器人名稱,可以自己取名,但是Bot handle必須要記一下,設完他以後他是唯一值,接下來要創建Bot ID 與 password,如下圖:

點選create Microsoft app id and password,進來以後會出現以下頁面:

這裡要注意一下,密碼要記起來,因為他只出現這一次爾以,而且找不到喔! 好了以後按Finish按鈕如下所示:

好的!這裡初步的都設定好囉!
接下來回到主頁面看看

剛剛所設定的資訊,除了密碼以外都在上面了!
接下來就是部屬你的機器人專案囉!回到Web.config頁面如下:

我們把剛剛的資料都打上去:BotId 就是Bot handle,AppId跟AppPassword就是剛剛按鈕生成的資訊,隨後把資訊Key上。 在來就是要部屬發行了不過要有Microsoft Azure的帳號如果大家想試試的話可以申請一個試用版的(有一個月的6300額度)
我們在專案右方點右建按發行,如下圖所示:

進入選後Microsoft Azure Web應用程式,接下來就是設定一些東西囉!如下圖:

設定完成後會載入帳號以及網域的資訊按下發行,如下圖

之後輸入網域後結果如下:

表示我們機器人專案已經部屬成功了!再來回到機器人管理頁面點開編輯,如下圖所示:

點擊後在下圖地方填上網域,以下圖範例:https://botkevintest01.azurewebsites.net/api/messages

與測試不一樣的點是http要改成https
最後到機器人頁面之後點擊Test後看到是Endpoint authorization succeeded,表示你的機器人可以測試了!如下圖


大致上差不多是這樣子,其實沒有想像中的複雜,接下來就可以玩玩看裡面的平台囉!