Chatbot 開發使用Bot Framework V4 - 起始化設定

在前一篇我們概要的說明了一下基於 ASP.NET Core 的 Bot.Framework V4 Chatbot 專案,其中在 Startup.cs 裡 Configure方法主要是配置HTTP request pipeline,而ConfigureServices方法則是配置相依性注入,那麼到底配置了些什麼東西呢,才能讓整個 Chatbot 可以執行,本篇就來做些說明。
 

ASP.NET Core 要懂得相依性注入

首先 ConfigureServices,由 appsettings.json 讀取整個應用程式的設定值,在 Chatbot 專案裡,取得 botFilePath & botFileSecret 的值,並將其載入到 BotConfiguration 單一實例裡,而 BotConfiguration 的作用是在一個 Chatbot 裡,通常會一些 Chatbot 的基本設定值,例如 endpoint、name、version等,並且我們通常會結合其它額外的服務,來實現 Chatbot 的應用,例如:加入LUIS自然語言理解服務、加入compute vision電腦視覺辨識服務、QnA 問答服務等,而這些服務及基本設定值需要一個設定檔來做為管理,在 Bot.Framework V4 Chatbot 專案裡,這個設定檔就是 *.bot 檔案,所以在 ConfigureServices 會先由 appsettings.json 得到 *.bot 檔案所在路徑,然後 BotConfiguration 再由這個 *.bot 檔案裡載入設定值。

前一篇我們提到在 ASP.NET Core 專案裡,採用了相依性注入機制,會在服務容器中註冊相依性,ASP.NET Core 內建了服務容器 IServiceProvider,服務則會在 Startup.ConfigureServices 方法中註冊,因此 ConfigureServices 會實現DI注入的處理,在這裡我們可以看到一個型別是 IServiceCollection 的 services 參數物件,這個物件就是DI容器,而上面的 BotConfiguration 單一實例會被加入到這個物件裡

接著我們會看到 conversationState 物件,這個物件用來做為 chatbot 對話過程中的狀態管理物件,可以想像成就像網頁一樣是無狀態的,所以網頁會有session/cookie等機制來保存一些必要的資訊,Chatbot 也是需要有一個機制來做為記錄保存狀態的管理,同樣的這個 conversationState 物件也會被加入到 DI 容器 services 裡。

最後同樣以DI的方法把 chatbot 服務注入,並且設定認證方式及攔截 chatbot 在對談期間所發生的錯誤並記錄它,而這個 chatbot 服務就是專案裡的 EchoBotV4Bot 類別

而在 Configure 裡則是用來指定處理 HTTP 請求的回應方式,所以在這個方法裡把 bot framework 給設定進去

最後當 Chatbot 應用程式啟動時,runtime就會呼叫 ConfigureServices 和 Configure。

經過這二篇的簡要說明,大致上應該對於基於 ASP.NET Core 的 Bot.Framework V4 Chatbot 專案,在基本的設定上有一些基礎的認知,下一篇將開始針對 Chatbot 的運作機制進行深入理解。

 

若本文對您有所幫助,歡迎轉貼,但請在加註【轉貼】及來源出處,並在附上本篇的超連結,感恩您的配合囉。

By No.18