iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 7
0

前言

經過好幾篇繁複的設定:我們註冊 Bot、匯入 Bot Template 、安裝了模擬器、上傳了範本程式到 Azure Web Appliaction 與設定兩個通訊軟體(Facebook message 與 Slack)。接下來終於可以開始嘗試寫一些程式來完成些基本需求:透過簡單的文字判斷,回傳想要的資訊。


Skype Bot 設定

相對於 Slack 與 Facebook messages,對於自家產品 Skype 的設定很友善,建立 Bot 後在 Channel 頁籤即可以看見 Skype bot 已經加入。
https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512915189510_image.png

只需要點選 Skype後,加入聯絡人即可。
註:若要開啟群組對話、撥打電話或進階設定,請點選 Edit 內設定。
https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512915210681_image.png

https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512915410290_image.png


程式

首先開啟我們的 Visual Studio 2017 → 透過 Bot 範本建立一個 Bot application
若您還有印象,我們的 MessagesController 內有一個 api/Messages 的 API

註:請參考這一篇 03. Microsoft Bot Framework 介紹:下載 Bot 的 Project template 與 Item template 章節

https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512915732845_image.png

我們先使用 Ctrl + 滑鼠左鍵點選傳入參數 Activity,檢視內部有哪些性質是我們需要用到的?似乎有 ChannelId、From、Text、Type 等多個性質名稱可以猜到用途。

https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512915822276_image.png

我們先建立一個 Resources 資料夾 → 右鍵 → 加入 → 新增項目 → Resources Files (未來有機會可以延伸作為多國語系)

註:因為我在我的2017找不到 Resources Files。若您與我相同,嘗試建立文字檔案並更改附檔名為res,並確定性質自訂工具為 ResXFileCodeGenerator 與建置動作為內嵌資源。

https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512916453508_image.png

https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512916840625_image.png

我們在資源檔案內加入一些資料
https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512917474885_image.png

開啟 RootDialog.cs 這隻程式,將 MessageReceivedAsync 方法改成如下:
註:您可以 Ctrl + 點選 PostAsync 方法,您會發現程式註解說明:透過前一則傳入資訊參數,建立連線回傳資料給使用者。應該是直接做回覆動作。

private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
    {
        var activity = await result as Activity;

        var commands = activity.Text;
        var replayMessage = string.Empty;

        if (commands.IndexOf("ein number") >= 0 || commands.IndexOf("統編") >= 0 || commands.IndexOf("統一編號") >= 0)
        {
            replayMessage = Resources.Messages.EINNumber;
        }

        if (commands.IndexOf("office address") >= 0 || commands.IndexOf("辦公室地址") >= 0)
        {
            replayMessage = Resources.Messages.OfficeAddress;
        }

        await context.PostAsync($"{replayMessage}");
        context.Wait(MessageReceivedAsync);
    }

啟動程式後 → 開啟模擬器 → 輸入辦公室地址

註:若您沒下載或設定過模擬器,請參考:請參考這一篇 03. Microsoft Bot Framework 介紹:透過模擬器測試您的 Bot 章節

https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512918057038_image.png

https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512917909987_image.png

接下來我們可以把機器人程式重新發布 Azure Web appliction
https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512918590244_image.png

發行完成後,透過 Skype 測試,效果似乎不錯。
因為自己有使用 Skype 手機板,以後若需要查詢只需要透過手機即可。
https://d2mxuefqeaa7sj.cloudfront.net/s_4BD31EC08DAC6681F125ECB2893F87311C2A9E8644E7E0D9FAA1622819FD5464_1512918483449_image.png


範例

https://github.com/matsurigoto/BotFrameworkExample01


上一篇
06. Bot Framework 應用: Facebook Messages 機器人
下一篇
08. Open data 介紹與使用指南
系列文
利用 MS Bot framework 與 Cognitive Service 建構自用智慧小秘書31

尚未有邦友留言

立即登入留言