前言
Microsoft Botframework V4,簡稱 BFv4 已經 Release 了哦! 是使用 .net core 來開發,所以用 Mac 也可以開發哦!
在從 Bot 送訊息到 IM Channel 時,加入額外的 Header 資訊中,我們是透過 DI 去將 ConnectorClient 置換成我們的 MyConnectorClient ,然後在 MyConnectorClient 去新增 HttpClient 的 Header。
在 BFv4 中,我們要如何達到這樣子的需求呢?
實作
以下是 Microsoft 文件中說明 Bot 的運作過程,
所以我們可以透過 Middleware 來達到我們的需求,在 Middleware 中取出 ConnectorClient 然後再加入 Header 就可以了,如下,
增加 Middleware
1 | public class GssAdapterMiddleware : IMiddleware |
設定 Middleware (Startup.cs)
1 | services.AddBot<EmptyBotBot>(options => |
所以回覆的內容中,都會多了一個 Header 哦! 如下,
BFv4 新東東
bot adapter
封裝 authentication 的處理,從 Bot Connector Service 收到 activities 後,建立 TrunContext 傳給 Bot ,並負責將 Bot 要傳送結果回去給 User Channels 。
Middleware
介於 bot adapter 與 Bot 之間。這與 asp.net core 的 Middleware 作用類似,只是它的作用域是在 bot 之中哦!
Turn
從 bot 接到 activity (例如收到使用者的一個輸入內容) , 進行處理並回覆使用者。
在 Trun 中的 TrunContext 包含許多有用的資訊,例如 Conversation, Activity, State 等等。
Dialogs and Conversation flow
- Dialog: 一個簡單的 trun,例如一個簡單的問與答,無法包含另一個 Dialog 。
- Prompt: 跟 BFv3 差不多,封裝一些常用的問句(text, numbers, dates, confirmation or choices)。
- DalogContainer: Dialog or Prompt 的集合,在 WaterfallStep 中依序的來執行裡面的 Dialog/Prompt,跟 BFv3 的 Dialog 類似。
- WaterfallStep:
- DialogSet: Dialog, Prompt or DialogContainer 的集合。
參考資源
How bots work
Implement custom storage for your bot
Bot Builder v4 でボット開発 : ボットが起動する仕組みを理解する
Microsoft Bot Framework v4 完全制覇 : 目次