使用C#開發LineBot(12) – 在連續對話中加入ButtonsTemplate訊息
如果你實際開發過Chat bot,就會發現NLP(自然語言分析)本身就是一個很大的問題,即便現在有LUIS可以幫助我們做語意分析,但實務上分析結果要100%符合用戶(或開發人員)的心意不是易事,倘若可行,在商務應用時,Chat bot與用戶之間的一問一答對談,想要提高可用率,讓用戶以選項的方式回答還是比自然語言對談來的好很多。 舉例來說,在 上一篇 我們介紹的CIC類別當中,如果我們的chat bot要問用戶要請哪一種假別,與其讓用戶自己回答,不如讓用戶用選的乾脆一些。 原本對談的設計是: 但這風險很高,因為我們開放用戶自己用輸入的方式回答。 如果用戶偏偏要回答: 我今天想請事假 或 請婚假 或 什麼根本沒聽過的假… 對Chat bot來說都要做自然語言分析,就算分析的再正確,在開發上難度也提升不少,但如果用底下這樣的ButtonsTemplated Message詢問用戶,用戶只能在底下的選項中擇一回答,那就容易多了: 上一篇 說過,我們要透過繼承自ConversationEntity的LeaveReuqest類別來處理這對話邏輯,而這一版我們加上了支援ButtonsTemplate Message,你只需要使用ButtonsTemplateQuestion這個Attribute即可(注意第3行): 我們新建立的這個LeaveRequestV2,跟上一篇的LeaveRequest很像,但第一個詢問假別的問題,改用了ButtonsTemplateQuestion Attribute(注意,你必須把LineBotSDK升級至 0.5.7-beta ),程式碼就只需要做這一個小小的調整即可。 由於加上了ButtonsTemplate Message,chat bot WebApi Controller主程式碼也小幅修改一下: 只需要配合ButtonsTemplate Message在59-59行針對CIC的Process result,取得ResponseButtonsTemplateCandidat(64行)進行Reply即可。 其他的程式碼跟上一版幾乎完全一樣沒變。 而24-29行只是加了一小段判斷,規定用戶只能選擇事假、病假、公假其中之一…純粹只是寫著玩測試一下。 執行這段對話之後,chat bot可以蒐集用戶的回答,結果如下: 想要在Conv