[LineBot]建立一個WebAPI for LineBot

使用.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

 

-----------------------------------------

有時在會走之前你就得跑

你不解決問題 就等問題解決你