在開發環境使用ngrok測試LINE bot(webhook) | line bot ngrok
在開發LINEbot途中遇到一個問題:如何在開發環境(本機)上取得、測試LINEmessage?LINEbot的運作流程是這樣的:1.使用者傳送訊息到LINEbot帳號2.LINEbot收到訊息後會將訊息post給WebhookURL3.WebhookURL就是我們所寫的webservice,負責實際處理收到的訊息問題發生在2到3之間:1.首先是WebhookURL必須是公開的網址才能讓LINEbot呼叫,而開發環境(本機)上一般都是私有網址如http://localhost/api/2.其次是LINEbot要求WebhookURL必須有SSL,也就是必須是https正規的做法就跟設定營運環境(production)一樣,買個publicdomain、弄個固定ip、...
在開發LINE bot途中遇到一個問題:如何在開發環境(本機)上取得、測試LINE message?LINE bot的運作流程是這樣的:1. 使用者傳送訊息到LINE bot帳號2. LINE bot收到訊息後會將訊息post給Webhook URL3. Webhook URL就是我們所寫的web service,負責實際處理收到的訊息
問題發生在2到3之間:1. 首先是Webhook URL必須是公開的網址才能讓LINE bot呼叫,而開發環境(本機)上一般都是私有網址如http://localhost/api/2. 其次是LINE bot要求Webhook URL必須有SSL,也就是必須是https
正規的做法就跟設定營運環境(production)一樣,買個public domain、弄個固定ip、申請ssl cert、安裝設定ssl cert & 網路環境...balabala
可以不用這麼麻煩
使用ngrok[1]可以幫我們搞定這一切ngrok使用時會產生一個公開網址(http://xxxxxxxx.ngrok.io),之後使用反向代理技術(reverse proxy)將由公開網址來的流量轉發(forwarding)到本機的私有網址上讓我們一步一步來首先運行開發環境上的web service,取得私有網址以及埠號
這是一個.net core的web service,從圖中可以看到監聽http://localhost:5000
之後在CMD中使用以下指令來啟動ngrok ngrok http -host-header "localhost:5000" 5000 其中"localhost:5000"即是web service監聽的私有網址以及埠號 如圖顯示,ngrok產生了一個公開網址https://d22eda92.ngrok.io,並且將流量轉發到localhost:5000現在將公開網址指定給LINE bot的Webhook URL
指定好之後按下旁邊的VERITY按鈕,LINE bot會發送測試訊息到該URL。可以看到在網址下方有個綠色Success顯示該網址...