關於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 Task Post([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等其他的對談介面上。

留言

這個網誌中的熱門文章

在POC或迷你專案中使用 LiteDB

使用 Airtable 在小型需求上取代傳統資料庫

專業的價值...

使用Qdrant向量資料庫實作語意相似度比對

精彩(且驚人)的Semantic Kernel入門範例