本篇延續系列文 Day 13 搭建好 Python 的 Flask 服務,此時你的 LINE Channel 需要設定 Webhook 才能連動。在我們將程式佈署在雲端伺服器 Heroku 之前,先透過 ngrok 索取一個臨時連結來測試服務吧!
安裝及執行 ngrok
ngrok http 5000 即可開啟服務。
$ ngrok http 5000

https://{一串亂碼}.ap.ngrok.io ,等等用來建立 webhook 用。建立 Webhook
網址+\callback,像是https://{一串亂碼}.ap.ngrok.io/callback這樣按upload。
\callback是對應您的 Python 程式@app.route("/callback", methods=['POST'])這段描述,讓兩者相同作為互動通道。
app.run('debug=True') 開啟了除錯模式,可以看的到來自 LINE 傳來的請求內容,是個以大括號{}包起來的JSON物件(Object),接著我們就在請求內找到對應的 user_id ,發現在 event 的 suorce 的 usrID 裡,這串字就是我們要找的!
handle_message() ,增加一段如果 event.source.user_id == {前面收到在 LINE 按 verify 時回傳的 user_id} ,兩者相同時回傳 OK。
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    if event.source.user_id =='Udeadbeefdeadbeefdeadbeefdeadbeef': #填入line在verify時回傳的user_id
        return 'OK'
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))
handle_message()。app.py 是在執行狀態( Flask 伺服器開啟中),終端機顯示 http://127.0.0.1:5000/ 字樣,尚未按 Ctrl + C中斷。ngrok http 5000後方增列--region=ap,即以 ngrok 的亞洲伺服器啟用此服務。
$ ngrok http 5000 --region=ap