[chatbot + AI = 下一代操作模式][10]用IDialog全部重構 - 階段性總結
![[chatbot + AI = 下一代操作模式][10]用IDialog全部重構 - 階段性總結.jpg](/posts/2018/07/2018-07-14-bot-framework-with-ai-cognitive-service-10-refactor-all-using-idialog-and-show-built-in-idialog/64fd12d8-96bf-4344-bcc1-898ae00dda20.jpg)
在上一篇([09]使用IDialog來實現SoC)介紹了怎麽使用IDialog來拆分邏輯,并且一步一步的用取得名字的邏輯拆成為一個NameDialog。
在這一篇我們將會把所有的邏輯重構成爲IDialog,并且對於目前學習到的Bot Builder SDK做一個階段性的總結。
![[chatbot + AI = 下一代操作模式][10]用IDialog全部重構 - 階段性總結.jpg](/posts/2018/07/2018-07-14-bot-framework-with-ai-cognitive-service-10-refactor-all-using-idialog-and-show-built-in-idialog/64fd12d8-96bf-4344-bcc1-898ae00dda20.jpg)
在上一篇([09]使用IDialog來實現SoC)介紹了怎麽使用IDialog來拆分邏輯,并且一步一步的用取得名字的邏輯拆成為一個NameDialog。
在這一篇我們將會把所有的邏輯重構成爲IDialog,并且對於目前學習到的Bot Builder SDK做一個階段性的總結。
![[chatbot + AI = 下一代操作模式][09]使用IDialog來實現SoC.jpg](/posts/2018/07/2018-07-13-bot-framework-with-ai-cognitive-service-9-refactor-using-idialog-for-better-soc/d10f4aa9-bfc1-4ce0-a868-44b89ad1d1ca.jpg)
在上一篇([08]如何微調FormFlow讓使用上更流暢)介紹完FormFlow之後,我們需要回來看一下目前最大的問題,也就是程式碼都寫在一隻RootDialog裡面。
Bot Builder SDK有考慮到這件事情,因此内建用IDialog來解決這個問題。
這篇來看看IDialog怎麽做到SoC (Seperation of Concern)。
![[chatbot + AI = 下一代操作模式][08]如何微調FormFlow讓使用上更流暢.jpg](/posts/2018/07/2018-07-12-bot-framework-with-ai-cognitive-service-8-tweak-formflow-to-provide-better-user-experience/d72fc894-3e34-4cff-979c-04e4f3649b0b.jpg)
在上一篇([07]使用FormFlow讓Chatbot搜集表單資訊更容易)我們瞭解了如何透過使用建立Model然後搭配FormFlow的方式讓我們的chatbot可以從使用者那邊搜集到表單類型的資訊。
不過我們也開始遇到一些問題,舉例來説,欄位名稱是英文,如果中途退出就gg了等等的細節問題。這些問題需要我們對Model或者FormFlow建立的時候做一些調整。
這篇將和大家介紹一下,如何做這些調整。
![[chatbot + AI = 下一代操作模式][07]使用FormFlow讓Chatbot搜集表單資訊更容易.jpg](/posts/2018/07/2018-07-11-bot-framework-with-ai-cognitive-service-7-user-FormFlow-to-create-form-input-chatbot/f62d9068-22df-4c0a-bccd-ffa0c8bcd418.jpg)
在上一篇([06]不只能輸出文字 - 看看各種内建卡片模式以及可自定的Adaptive Card)介紹了如何透過Rich Card把bot輸出的内容變成更加漂亮的卡片樣式。
到目前爲止,所有的邏輯都在一起,作爲開發人員會開始覺得程式碼已經開始有些味道了(smell)了。如果今天我們想要透過交談對話中取得一些使用者的資訊,例如填寫表單,那可以想象要寫更多的if/else來處理。感覺程式碼會更加臟。
還好Bot Builder SDK在表單類型的溝通有一個模組叫做FormFlow,在這一篇將來介紹如何使用FormFlow來設計從使用者收集資料。

在上一篇([05]深入IDialogContext - 處理上下文、對外的聯係和state)看了IDialogContext的作用以及如何用3個主要作用的state的部分來儲存使用者相關的訊息。
到目前爲止我們的機器人回復的内容都是文字。如果今天我的内容比較豐富,例如有圖片+文字怎麽辦?有沒有更好的呈現方式。
這篇將來看看Activity裡面的Attachment搭配Card呈現多元樣式的概念。
![[chatbot + AI = 下一代操作模式][05]深入IDialogContext - 處理上下文以及對外的聯係.jpg](/posts/2018/07/2018-07-09-bot-framework-with-ai-cognitive-service-5-IDialogContext-Deep-Dive-and-how-to-store-state/4ff79c80-eedf-46d3-b363-632b5471ee52.jpg)
在上一篇([04]瞭解Bot Builder SDK的組成)完整看了EchoBot的程式碼組成,并且瞭解了Bot Builder SDK一些常見的物件。并且依照所學調整了部分程式碼。
這一篇將會聚焦在其中一個管理上下文以及對來連綫的物件IDialogContext。
![[chatbot + AI = 下一代操作模式][04]瞭解Bot Builder SDK的架構.jpg](/posts/2018/07/2018-07-07-bot-framework-with-ai-cognitive-service-4-bot-builder-architecture/9415b647-b987-4c49-8aa7-747219e6cd1a.jpg)
在上一篇([03]建立第一個chatbot - EchoBot)透過使用Project Template建立出一個EchoBot出來,并且透過了bot emulator瞭解了如何和chatbot做測試。
這篇將會深入一些,看看Bot Builder SDK的組成以及一些比較重要的class。