使用MS Bot Framework建立一隻支援LINE Bot的對談機器人
令人期待的事情總是拖得比較久。
但MS Bot Framework支援LINE Bot的這一天總算是來臨了。
先說說為何大夥們會希望Bot Framework支援LINE? 其中最基本的因素大概是Bot Framework目前已經支援多種Channel、本身又內建狀態管理機制、可以很方便的串接自然語言對談和撰寫程式碼,這讓開發人員有機會,只需要寫一次Bot核心Business Logic的code,就讓前端同時支援Web/Skype/FB Messenger/LINE/Telegram…等多種IM:
過去Bot Fx是沒有支援LINE這個Channel的,在眾多開發人員的催促下,微軟從善如流的照做了…好,我們這就來看看Bot Fx如何支援LINE?
首先,請在Azure Portal上用最基本的方式(Web App Bot)建立一支Bot:
稍微留意一下底下的輸入畫面:
現在的Azure Portal,常常在我們建立一個資源時,同時建立很多資源。這啥意思? 例如我們要建立一個支援LINE的Bot,但其實他後面有Azure Web App,Storage,甚至LUIS或QnA Maker(看你的選擇),所以這一建常常一堆資源出現,因此我們都會建議讀者把這些資源建立在同一個新開的資源群組(Resource Group),以便於日後要刪一起刪方便維護,請參考上圖2。
至於機器人範本,我們建議選擇Echo Bot,先維持簡單就好(上圖5)。
建立好之後,我們立刻到這個資源來看看:
到了該資源之後,我們可以先點選頻道,你會看到預設狀況下已經有一個頻道(Web Chat)在跑步了…(唉,跑什麼步啊…是running啦…)
你可以點選在WebChat中測試,系統會用Web UI讓您測試:
沒錯,他跑起來了,就是一個Echo Bot…
接著,我們要讓他支援LINE,請進入頻道設定,輸入下圖中1,2的資訊:
等等,上面的『頻道秘密』和『頻道存取權杖』是什麼?
如果你有建立過LINE Bot應該就知道(沒建立過可以參考這邊),它是你可以從LINE Bot後台找到的 Channel Secret和Channel access token啦(btw, 建立的LINE Bot必須支援Push):
別忘了,剛才上一張圖中的WebHook URL(標示3),你必須回填到LINE Bot的管理後台:
設定完成之後,我們立刻加入這隻LINE Bot瞧瞧:
YA,可以work囉…就這樣。
沒了…很簡單吧…至於這Echo Bot的程式碼是怎麼寫的? 該如何調整呢?
請看Azure Portal上的組建,其實有非常完整的說明:
好啦,這讓我們開發LINE Bot又有一個更方便的選擇,有興趣的朋友別錯過囉…
------------------
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
相關課程:http://www.studyhost.tw/NewCourses/LineBot
線上課程:https://www.udemy.com/line-bot/
更多內容,請參考電子書:https://www.pubu.com.tw/ebook/103305
LINE Bot實體書籍:https://www.tenlong.com.tw/products/9789865020354
留言
在Line跑步的地方收到訊息是
「There was an error sending this message to your bot: HTTP status code InternalServerError」
是何問題?
錯誤 Web deployment task failed. (無法連線到遠端電腦 ("testforlinebot.azurewebsites.net")。請確定已在遠端電腦上安裝 Web Deploy,並已啟動必要的處理程序 ("Web Management Service")。 如需詳細資訊,請造訪: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE。)
The requested resource does not exist, or the requested URL is incorrect.
Error details:
無法連線到遠端電腦 ("testforlinebot.azurewebsites.net")。請確定已在遠端電腦上安裝 Web Deploy,並已啟動必要的處理程序 ("Web Management Service")。 如需詳細資訊,請造訪: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE。
遠端伺服器傳回一個錯誤: (404) 找不到。 BasicBot 0