使用.NET Web API 2來建立一個Line Bot 的Web Hook
並利用AppHarBor當作API的放置站台
因為LINE Bot 需要 HTTPS 而且是一個Public 的Domain Name
因此會需要申請一個網頁空間,如果沒有用過AppHarbor 可以參考網誌中其他系列文章AppHarbor
先來新增一個API的專案吧
點選Visual C# / Web/再點選右邊的ASP.NET Web 應用程式
因為我們要用AppHarbor 所以右下角的Azure就不勾選了~
不過如果你有Azure 就會建議你勾選囉!!
挖屋 一個API的雛型已經完成了!
點選Controller新增一個有關LineBot的Controller吧
選一個空白的就好!!
請先安裝LineBot SDK 這個SDK是 David提供的,他是一位MVP,我最先看到LineBot也是從David的網誌看到的哦!
下圖就是LineBot Controller的內容 , 因為這個範例我會放在GitHub上,
在第21行,請輸入你的Channel Access Token, Exception的部份是我在debug的時候用的
Controller的內容大致上就這樣 ,非常簡單,因為David已經把需要HttpPost的工給做掉了
(感謝David 大大)
之後只要把這個網站Commit上AppHarbor
然後再把此AppHarbor的URL 設定至LINE WebHook上即可
我在開發的時候遇到的問題如下:
1.要怎麼使用Http Post來測試我的AppHarbor的API是活著的?
可以到我的GitHub上下載testPostAP來用,這個AP只能傳送json
也只有post功能,因為是For 以前專案來模擬的非常簡陋,不嫌棄再用啦!!XDD
不然也可以用Fiddler來模擬Post
先選到Composer的Tab\點POST\輸入你的API URL(右邊的HTTP/1.1的協定不要動)
輸入Content-Type:Application/json
下方可以隨意輸入一個json的字串來測試
2.我把LineBot加入好友之後傳訊息給他都已讀不回
不是你的Bot很機車,可能是因為你的API發生Exception所以無法回應,
如果你有用testPostAP或者是Fiddler就會發現,是500 error
在我的程式中為了debug方便,有把Exception log到DB,
如果你的Bot翅膀硬了已讀不回了,可以參考這個方式來除錯
3.新增Web Hook到LINE裡面 按下VERIFY的時候出現失敗?
其實這個錯誤可以不用理會,因為其實LINE只會傳一個無意義的訊息到你的API
可能你在解析這個訊息的時候發生Exception然後沒有回覆OK
所以他認為你的API死翹翹了
在我的範例中,無論正常或是Exception都會回覆OK!
4.在LINE設定WebHook的頁面上出現
The dummy webhook contains a reply token, but you cannot use it to callReply API. 這是甚麼?
這個可以不用理會,好像是因為LINE有修改政策,所以會出現這樣的訊息,並不影響你的Bot回覆訊息
5.為什麼LineBot好像有的時候回覆得很慢?
如下圖,我是覺得因為我的API放在AppHarbor上,畢竟是一個free的網頁空間
所以可能會發生這樣的狀況
參考文章: http://studyhost.blogspot.tw/search/label/LineBot
-----------------------------------------
有時在會走之前你就得跑
你不解決問題 就等問題解決你