[玩具系列]快速建立一個Azure Bot Service 服務

每次要幫小孩分辨玩具歸屬是一件很累人的事情,有時候自己又無法確定該玩具是屬於誰的(現在玩具實在太多種類~~),所以,避免家長自己搞錯,最好方式透過AI+BOT方式來幫助識別。
要建立一個Bot 服務,最簡單就是透過Azure的Web App Bot服務。首先在Market Place地方搜尋Web App Bot
就可以開始建立

把要建立Bot的資訊填好,選擇Echo Bot範本,如果想要更多功能的範本,可以選擇基本Bot,不過,目前我只想要做一個簡單回應互動訊息的Bot,使用Echo Bot範本就夠用了,就等待一點時間讓它建立吧

建立完成後,就可以到 Web App Bot開始建立Bot相關互動。

如果一開始本身自己電腦沒有相關BOT開發環境,就必須要先建立相關BOT開發環境,包含了BOT模擬器。可以在 Web App Bot的組建內可以取得相關開發資訊

當下載完原始碼,我會建議把裡面的Package更新一遍,然後就可以啟動服務並搭配模擬器做測試,如果用模擬器測試發生這個錯誤

把專案內的appsettings.json內的
- MicrosoftAppId
- MicrosoftAppPassword
這兩個值填入到模擬器ApplicationID和Application Password內

就可以解決掉上面問題。當問題解決後,要簡單測試一下訊息部分,主要會是在EchoBot.cs
下面這一段處理,只要稍微修改這段程式碼,就可以測試你和Bot的訊息互動
處理相片資訊
上面提到,主要想要處理玩具的歸屬問題,所以,最重要部分就是需要先能把相片丟到Bot去處理,要分辨是否試圖檔、檔案或是文字,可以透過turnContext.Activity
屬性識別。如下圖就是一般文字

下圖就是具有檔案資訊的屬性,也可以透過turnContext.Activity
的ContentType識別是哪一種檔案

因為後續要做影像識別,必須將上傳的圖片進行處理,這邊比較快速的處理方式就是將使用者上傳圖片先暫時儲存後,再轉換成Binary方式。下面是先將收到的圖片檔案,放在一個暫時的區域,轉換成功後就將其刪除
而在OnMessageActivityAsync
則修改成這樣
佈署程式
以上完成之後,就可以將系統佈署上傳到Azure Web App內,佈署成功後,就可以在Web App Bot那邊進行測試。這時候還未接其他平台的BOT的,所以就用上面的在 WebChat 中測試
做測試

後續只要將需要判斷或是橋接到其他BOT部分再加工。一個簡單交互訊息的Bot就這樣可以完成。而這邊有一個不好地方在於圖片需要落地,最好方式因該連圖片都不要落地,因該會更好
參考資料
- https://docs.microsoft.com/en-us/azure/bot-service/bot-service-debug-emulator?view=azure-bot-service-3.0&tabs=csharp
- https://github.com/Microsoft/botbuilder-tools
- https://docs.microsoft.com/zh-tw/azure/bot-service/bot-builder-howto-send-messages?view=azure-bot-service-4.0&tabs=csharp
- https://stackoverflow.com/questions/55258245/how-to-send-images-which-are-in-local-folder-in-microsoft-botframework-sdk-v4-us/55271200#55271200
- https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/csharp_dotnetcore/15.handling-attachments