Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps、C#, Asp .net Mvc、Azure、AI、Chatbot、Docker、Data Science

[chatbot + AI = 下一代操作模式][02]微軟的Bot Framework是什麽?

[chatbot + AI = 下一代操作模式][01]開篇 - 爲什麽應該學.jpg
圖片來源:https://pixabay.com/en/books-spine-colors-pastel-1099067/ 

在上一篇([01]開篇 - CaaP是什麽,爲什麽應該學)瞭解了下一個時代的操作模式:CaaP (Conversation as a Platform),那麽微軟的解決方案是什麽?這個解決方案的架構是什麽?

這一篇將會從high level的角度來看看微軟的整體解決方案,Microsoft Bot Framework。

開發一個chatbot需要經過什麽流程

開發一個chatbot和任意軟體一樣都會經歷過從最初期的規劃到最後面的持續監控:

bot-service-overview.png
Azure Bot Service想幫助解決的問題,參考可以看: https://docs.microsoft.com/en-us/azure/bot-service/bot-service-overview-introduction

微軟在這整個開發生命周期都有提供不同的工具/服務來讓開發者在每個階段更加的容易和方便。

這些工具我們會在之後適合的地方告訴大家,不過有兩個重要的工具/服務需要先知道,他們分別爲:

  1. Microsoft Bot Framework
  2. Azure Bot Service

Microsoft Bot Framework 是什麽?

Microsoft Bot Framework更多被簡稱為Bot Framework是一個開發chatbot最主要核心的工具,透過使用bot framework開發有一些好處:

  1. 寫一隻code,能夠部署到不同的平臺 - 例如我有客戶使用facebook、Telegram和Line,傳統來説我需要有三分code分別對應這些平臺做開發,但是透過bot framework,我只需要一份code就可以在這3個平臺使用(至少從chatbot的 code角度來説)
  2. 減少寫chatbot底層的一些處理,而專注在chatbot的業務邏輯 - chatbot有很多細節,例如如何記錄使用者之前回答過什麽(瞭解上下文),呈現的内容多元化(例如圖文式), 多元的互動模式(例如簡單的是否回答,以及選項式回答) - 這些底層的工bot framework都提供了

要達到上面説的目的以及好處,bot framework提供兩個重要的工具/服務:

  • BotBuilder - 開發的sdk
  • Bot Service - host chatbot的服務

這兩個部分分別對應到了開發工具(BotBuilder作爲sdk),以及host上去之後的服務(bot service)。那麽這兩個工具提供了什么幫助呢?

BotBuilder是什麽?

BotBuilder小檔案

Open Source的sdk
可以在github microsoft/botbuilder看到完整的source code。
版本

目前BotBuilder有兩個版本,V3 (stable) 以及 V4 (preview)。

V3 支援C#以及NodeJs,而V4支援C#,NodeJs,Python以及Java。

聽説V4會在今年9月份進入stable階段,但是不確定是否真實,目前這個系列將會使用V3的C# SDK做介紹。

從C#的角度來説,最大的差異(排除語法什麽的)V3使用.Net Framework而V4使用.Net Core。

C#版本基於Asp .Net Web Api
C#版本的底層就是Asp .Net Web Api,因此有寫過的話對於一些開發的模式會比較清楚。

BotBuilder是一個開發的sdk,方便我們在chatbot開發的時候提供了一些必要的服務,例如:

  • 上下文的處理 - chatbot最麻煩的一塊是記得使用者之前輸入了什麽,這個BotBuilder提供機制方便處理
  • 一些必要常見的輸出方式 - 例如圖文内容,讓使用者做選擇的輸出内容等等
  • 不同平臺的格式處理 - 讓業務邏輯處理同一種資料格式,而其他不同的平臺格式再底層的時候幫忙做對應轉換
因此,使用BotBuilder可以讓我們不用關注那些底層細節而是專注於我們的業務邏輯就好。

我覺得最混亂的地方是使用的naming,因爲bot framework一直持續在調整,因此有些地方把bot framework = botbuilder,但是實際上botbuilder只是bot framework其中一個部分而已。

當我們把服務開發好了之後,下一步就是做部署。怎麽樣部署才能夠達到多個平臺都能夠使用?這個就是bot service進來的地方。

01 botbuilder.png
只有BotBuilder怎么和其他地方接

Bot Service是什麽?

當我們開發好了之後,部署上去了之後怎麽樣能夠讓別的平臺也能夠接上?

不同平臺肯定有他們的資料格式以及傳輸内容,怎麽樣能夠讓我的chatbot code不改變的情況下都能夠使用?

熟悉開發的就知道,那就再做一層翻譯的把其他的服務轉成同樣語言然後做好對應注冊就可以啦。

因此有了Bot Service,bot service主要的工作就是用來做一個中間人,設定好chatbot的位置,以及其他平臺(channel)需要接上的部分,把兩個地方搭起來。至於實際不同格式的翻譯屬於botbuilder該處理的一部分。

02 Bot Framework.png
從結構的角度來説,兩個的分佈如下。有些細節的部分還沒介紹到,之後篇幅有細節在説明

Azure Bot Service是什么?

Bot Framework剛出現的時候,是有一個自己的獨立網頁用來設定以及注冊bot service。而bot service背後其實就是放在azure。那麽何不把他完整和azure整合呢?

因此Azure Bot Service出現了,基本上可以理解為bot service的進化版。bot service不在只提供免費版,如果需要更加穩定的服務,可以從azure上面設定對應的等級,然後費用從azure的帳單出。

azure bot service除了包括了之前bot service的功能之外,還有提供了一些別的服務,例如透過一鍵的方式直接在azure上面建立出chatbot(我個人是蠻反對這種模式,不過如果只是要快速嘗試chatbot倒是一個好方式), 因此讓整個chatbot服務和azure做了緊密的聯合。

03 azure bot service.png
Azure bot service的宣傳圖

快速看一下这篇提到的keyword

Microsoft Bot Framework
微軟的CaaP解決方案,簡單來説,只要和chatbot開發有關都屬於他的範疇。
BotBuilder
協助開發chatbot的sdk。目前有V3和V4,V4在preview,支援更多語言以及使用.net core開發。
Bot Service
用來協調channel的訊息和bot訊息轉換溝通的服務,後來整個整合到了Azure裡面變成Azure Bot Service。
Azure Bot Service
host chatbot相關都放在了azure上面,因此整合了變成一個服務。
Channel
不同的消息來源,例如line,FB,slack都是channel

結語

這篇對Microsoft Bot Framework的兩個重要工具做了非常high level的介紹,分別爲開發的BotBuilder以及hosting的Bot Service(Azure Bot Service)。

這篇的内容可以先有個概念就好,知道接觸到實際開發在回來看的話可能會更加容易理解。

爲了讓大家不在被這些理論搞到睡着,在下篇([03]建立第一個chatbot - EchoBot)將會來做一個chatbot的Hello World程式,并且感受一下開發chatbot是什麽feel。

comments powered by Disqus