關於bot framework (2) - 建立一個最基本的bot(v1舊版)
在瞭解了bot framework的架構之後,我們來看看如何建立一個最基本的bot。
前面提到過,微軟提供了一個簡單但完整的visual studio project template,你可以從底下這邊找到:http://aka.ms/bf-bc-vstemplate
下載後的檔案是Bot Application.zip,請依照指示複製到 %USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C# 資料夾底下。
完成之後,你開啟VS2015,會看到:
這表示你可以開發Bot了,但先別急,請先用MS Account登入,到https://dev.botframework.com/bots/new 註冊一個bot
註冊時,你會發現需要填一堆資料,其中要留意endpoint,這個地方要填寫https開頭的WebAPI位置,由於我們還沒有建立好這個WebAPI網站,因此先隨意填寫一個假的即可(但別忘了建立好WebSite之後要回來改):
另外,底下有個Config info那一欄,主要是填寫一個你自己取的bot識別碼,用來識別你的bot,只要是唯一值即可(此欄位未來不得修改):
欄位都填寫完成之後,按下底下的Register,建立一個bot,完成後你會看到底下畫面:
注意上圖中紅框的Details部分,因為Endpoint我們剛才是亂填的(為了先建立一個bot),所以待會把WebAPI寫好,把網站上傳到azure web app之後,要來改這個位置。
還記得我們剛才安裝好了bot template嗎?
回到VS2015,我們利用安裝好的template建立一個專案,建立好之後,找到該專案的Web.Config:
其中的AppId和AppSecret,就是你剛才建立好的Bot的Details畫面上的內容: (app secret要按一下show才看得到唷)
更新好Web.config之後,我們打開範本中的WebApi看一下:
你會發現當有人傳遞訊息給我們的Bot,他會以post的方式傳入MessagesController,我們可以透過Message物件取得,我們把程式碼稍微改一下:
public async TaskPost([FromBody]Message message) { if (message.Type == "Message") { // calculate something for us to return int length = (message.Text ?? string.Empty).Length; // return our reply to the user return message.CreateReplyMessage("你剛才說了..."+ message.Text); } else { return HandleSystemMessage(message); } }
接著,請把修改好的網站上傳到我們預先建立好的azure web sites(什麼?還沒建立,那先趕快建立一個),完成之後,你就可以回頭去更新Bot的Endpoint這個配置了:
更新好了之後,你可以先在底下做一個簡單的測試:
你會發現輸入『測試』,Bot會回一個JSON,其中的text屬性是"你剛才說了...測試",…這表示你的bot已經可以順利回話了…
還記得我們前面說過嗎? Microsoft bot framework除了可以幫助我們建立bot的對談引擎之外,另一個好處是具有bot connector,這個機制讓我們可以輕易地讓我們寫好的bot串接到各種不同的UI,例如skype、FB、Slack…而最基本的UI,當然是Web介面。
因此我們就立刻看看,如何讓我們的bot可以以Web介面跟用戶對談。
要實現這個功能,請在bot管理畫面上,找到下圖中的Channels,在Web Chat項目上面點選Edit:
之後會看到底下畫面:
請點選 Generate Web Chat secret,接著會出現底下畫面:
如此一來,你就可以透過上圖中的Embed template把你的bot嵌入到你的網頁當中囉。在bot管理主畫面上,你也可以透過Get bot embed codes來取得嵌入碼:
點選後會出現底下畫面,你可以透過embed code與secret組出一個URL,該URL就是你的Bot位置:
當用戶連結到你的Bot, 實際對談的畫面如下:
透過這樣的方式開啟的對談,用戶是匿名的身分。改天,我們再來談裡面的程式碼,以及如何將bot串接到Skype等其他的對談介面上。
留言