在上一篇([41]使用Chatdown做Chatbot的UI Prototyping),介紹完了可以用來做Prototyping的UI工具Chatdown之後,這個系列想要介紹的東西都介紹完了。
這篇想要整個重新在review一次整個開發chatbot的開發流程(lifecycle),并且看看再每一個環節這個系列都介紹了什麽可以使用。
Chatbot的開發流程
還記得下面這張圖嗎?這張圖在(02 bbb)的時候有介紹過,這個其實不只是針對chatbot,而是軟件開發基本上都會經歷過的流程:
現在這個系列介紹到了尾聲,可以看的出來那些篇幅屬於那個環節嗎?
Plan 階段
好的開始是成功的一半,因此Plan的完不完整,瞭不瞭解需求以及問題,打算怎麽開發,整合那些服務都是在plan階段要做的事情。
有些在Plan階段可以思考的問題:
- 找到end user是誰,他們的問題是什麽,chatbot能夠怎麽解決他們的問題
- 定義chatbot是怎麽和end user溝通 - 例如透過文字、卡片式、語音還是客製方式?
- 整個交談過程是怎麽個方式執行:一來一回、引導式、上下文對應式
- 使用什麽語言開發 - 偏工程面需要考量,要用什麽語言開發,甚至用什麽框架開發
上面的問題完全會影響之後在開發的時候的開發方式,因此Plan階段好好想,可以少走很多冤枉路。
微軟在Plan這個階段提供了一些工具幫助Planning變得更加簡單,其中最重要的是Chatdown + Bot Emulator來做Prototyping。透過這個工具,能夠定義出:
- Chatbot流程怎麽走
- 對話用什麽方式 - 文字、卡片式還是一些特殊的卡片
- 交談模式是什麽
當SA和用戶透過這個確認好需求之後,工程師照著做舊肯定沒有問題,詳細可以參考: [41]使用Chatdown做Chatbot的UI Prototyping
Build 階段
Build階段就是實際開始往下去開發啦,在這個部分不止Chatbot本身的開發,還包含其他服務的串接例如Cognitive Service。
在整個系列主要Focus的都是Build階段的部分:
- Bot Builder SDK基本概念
- IDialog、卡片式、FormFlow的使用方式
- 整合語言識別LUIS
- 整合Computer Vision做到OCR
- 使用Custom Vision自己建立image classifier的Model
- 使用Translator Speech API做語音轉文字
- 使用QnA Maker建立知識庫
- 維護Cognitive Service的小工具
Test 階段
開發過程當然需要不斷的測試功能避免開發出來的東西不如預期。
這邊主要的測試工具還是Bot Emulator測試執行結果:
Publish 階段
開發好了,測試也完成了,這個時候就是要發佈上去給大家做測試了。
使用Bot Framework有至少兩個服務需要發佈:
- Bot Channel Registration - 注冊Bot的地方,管理Connect 階段的部分
- Bot程式碼的hosting位置
發佈Bot程式碼host在Azure上面有兩個做法:
- Web App
- Azure Function - 這個沒有介紹有興趣可以看看屬於Azure的Serverless服務
一些和publish有關的文章:
Connect 階段
Bot Framework的好處之一是寫一次,多個平臺可以使用。這個就是透過Bot Channel Registration來控制。
這系列介紹了兩個Channel,FB以及Direct Line。有了Direct Line其實任何平臺都可以接的上:
- [12]準備上綫 - 用Bot Channel Registration注冊chatbot
- [13]上綫 - 開啓web control channel
- [14]上綫 - 把facebook粉絲頁和chatbot接上
- [15]上綫 - 透過Direct Line把chatbot和任意程式做連接
因此,像是微信、Line這些不再内建Channel裡面要提供和内建Channel例如FB的一致體驗也是沒有問題。
Evaluate 階段
上線了之後,最重要的一點是持續的追蹤以及精進。因爲End User使用的方式,可能和當初預期的不同。
這個時候,把程式碼做調整,或者把Cognitive Service做調整就變得非常的重要。
和Evaluate有關這個系列介紹了:
結語
這篇可以看作是這個系列的一個總綱,透過這個可以看到要完成開發一個Chatbot并且持續精進沒有想象中的困難,但是也沒有想象中的簡單。
Chatbot和任意的程式開發一樣,要快速開發出來可以,但是要做的很好需要花很多功夫在計劃以及設計上面。
這篇除了做個總結之外,另外一個目的是想點出每一個階段其實還有很多可以在看的地方。在這個系列不會在介紹這些,不過未來的部落格文章還是有可能會介紹,因此別忘記持續關注幾個有關的tag哦
這篇看完了過去,下一篇([43]结束?一切正要開始 - 下一步是什麽)想看看未來,也就是下一步怎麽走?如果對AI以及Chatbot開發想更深入應該看哪方面。