使用C#開發Linebot(26) - 利用ngrok讓你的Line bot可以使用localhost作為WebHook
過去,我們大多是建議開發人員直接將asp.net WebApi所撰寫的WebHook佈署到IIS或Azure Web Site站台上去測試,勤快一點寫寫Log和try…catch,大致上基本的除錯也都能處理,但碰到真的需要設定中斷點單步執行或除錯的時候,也只能使用『遠端偵錯』這個殺手鐧了。
但無奈遠端偵錯的速度實在不快,碰到比較複雜的程式碼,跑起來需要不少的初始時間。沒有其他的辦法嗎?
其實是有的,坊間有一個可以把localhost轉成網際網路上特定endpoint的工具,稱為ngrok。
你只要從底下網址下載這個工具即可:
https://ngrok.com/download
下載回來解壓縮後,其實只有一個小小的.exe檔案:
它是一個命令列工具,你只需要將你透過Visual Studio開發好的asp.net web API運行起來,然後執行底下這樣的指令:
ngrok http 31217 -host-header="localhost:31217"
畫面上會出現類似底下的內容:
這表示,ngrok已經幫你把 http://c5bfcbb9.ngrok.io 這個位址的所有往來封包轉向到你的 localhost:31217 這個位置,如此一來,我們只需要在Line bot後台輸入WebHook的地方,將底下這樣的url作為WebHook位置即可:
http://c5bfcbb9.ngrok.io/api/{你的route}
你會發現,Line bot所接收到的所有訊息,如今會轉傳到你的localhost:31217的應用程式中,你可以大方的在本機電腦上測試WebHook,甚至設置中斷點了。
不錯吧?
ngrok是一個好用的測試工具,但如果長時間使用可能不很適合,同時間它也有免費使用的限制,具體的費用可以參考:
https://ngrok.com/pricing
但不管如何,它對於我們的Line bot WebHook測試來說,確實提升了不小的便利性,大夥不妨可以試試看。
-----------
線上課程:https://www.udemy.com/line-bot/
電子書:http://studyhost.blogspot.tw/2017/12/line-bot.html
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。
留言