前言
這篇是專門寫利用 ngrok 架設本地伺服器的設定方法 (LINE bot local server),
如果想要設定的是雲端伺服器,可以參考另外一篇 heroku 雲端伺服器服務的設定教學。
本地伺服器的好處就是方便 debug,缺點大概就是電腦要一直開著! (要開著才能提供服務啊!)
但雲端伺服器 debug 就比較麻煩一些 (還需要經過上傳),不過好處也就是電腦就不用一直開著囉XD!
- 「line webhook URL 修改傳送門」:https://developers.line.biz/console/
因為使用這個方法實在太常用到了,這邊也放一個,只要更新、重開 ngrok 都會用到。
ngrok 說明
ngrok 是一種將本地伺服器「映射到網際網路」上的方法(工具),
你可以想像成我們本地的電腦本身就可以當一個伺服器,
例如:「http://127.0.0.1:5000」、「http://localhost:5000」,
但因為只有在「自己的電腦上看得到」,所以我們才需要一個工具,
將這個只有在「自己的電腦上看得到」的伺服器,映射到網際網路上。
這樣就可以方便我們快速開發囉! (因為實際上我們都是在「本地端操作」)
你可能會想問那 ngrok 的缺點是?
其實也很簡單,我們都說了我們的伺服器是只有在「自己的電腦上看得到」,
所以,「電腦只要關機了」就沒有服務了。
另外,免費版的 ngrok 只有「8 小時」,超過時間其實重連就可以繼續用…
但「映射網址」會被換掉,這點要注意,表示我們要去更換「line webhook URL」。
- 「line webhook URL 修改傳送門」:https://developers.line.biz/console/
因為使用這個方法實在太常用到了,這邊也放一個,只要更新、重開 ngrok 都會用到。
step 1. 先去 ngrok 官方網站下載 ngrok 主程式
- ngrok 下載連結:https://ngrok.com/
進去後點「Get started for free」 請選擇你的作業系統:
step 2. 請「務必」記下下面內容與金鑰
- 接下來,我們會用到下面第一行啟用 ngrok 的金鑰
- 而第二行是在本地啟動 ngrok 的指令,後面的 port 可以自行修改 (必須對應到你的程式碼)
step 3. 啟動 ngrok 方法
打開你的終端機,將 step 2 那兩行複製貼上
注意:你必須先移動到你的 ngrok 所在路徑,
另外 ngork 請解壓縮出來… (我之前就傻傻以為下載不用解壓縮XD)
./ngrok authtoken <你的金鑰>
./ngrok http 8080
如果 Windows 碰到上面指令不能用,請試著前面去掉「./」應該就可以了!
(親身經驗,另外還有路徑要對)
step 4. ngrok 畫面 (此處以 Windows 示範,其他作業系統大同小異)
- 我們「反白的地方」就是我們的映射網址,請「務必複製下來」 (複製第二行 https 開頭那個)
題外話:terminal 複製小技巧
- Linux terminal 複製:「command + shift + C」
- Mac terminal 複製:「command + C」
- Windows terminal 複製可以用下圖的方式,如下圖
先「選取複製範圍」->「點上方視窗右鍵」-> 「編輯」-> 「複製」
step 5. 使用 step 4 複製的 ngrok 映射網址,修改 line webhook url 路徑
拿我們剛剛在 step 4 複製的 ngrok 映射網址,去修改 line webhook URL 路徑,
並在之後加入「/callback」,如下圖。
- line webhook URL 修改傳送門,之後更新都會用到:https://developers.line.biz/console/
★重要:因為免費版的 ngrok 最大只能連線 8hr,
重新連接的時候,http 映射位置會更新,記得去更新我們的 webhook
step 6. 驗證 ngrok 服務是否串接成功,按下 「Verify」
這邊我們按下「Verify」來驗證我們是否串接成功,記得下面的「Use Webhook」要打開。
這邊如果有跳以下 Error 先沒關係,主要是因為我們只有「啟動 ngrok」而「未啟動程式服務」
step 7. 按下 「Verify」之後,回到 ngrok 畫面
回去看我們的 ngrok 視窗,如果有出現新的 Post /callback 就成功了! (出現 502 Bad Gateway 也沒關係)
出現 502 Bad Gateway 是因為還沒有打開 localhost 的伺服器,也就是還「未啟動程式服務」。
到這邊我們就這設定完 ngrok 的本地伺服器囉 (LINE bot local server)
接下來,有了「伺服器」跟「機器人服務前端」,
我們就要來完成最重要的「機器人後端的服務」了! (可以想像成「機器人運作的邏輯」)
Reference
https://www.learncodewithmike.com/2020/06/python-line-bot.html
我想問 您說的未啟動服務 那要怎麼啟動服務呢?
我們寫的程式本身就是作為啟動服務使用的,換句話說就是你可能還沒有讓程式開始跑哦~
(至於要寫的程式服務是什麼並不在這一篇,這篇只是單純開伺服器而已)