申請完 Line 機器人的帳號後,接下來要做的就是建立一個自動回覆的 api 程式,Line 也有提供 python 的套件 - line-bot-sdk,所以只要下載後,依照範例,就可以建立一個簡單的自動回覆。
pip install line-bot-sdk flask
ps: flask 是 python 的一個輕量化 web server 套件
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, TextMessage, TextSendMessage
app = Flask(__name__)
# 把昨天 copy 的兩個 token 貼到這裡來
line_bot_api = LineBotApi('CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('CHANNEL_SECRET')
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
print("Invalid signature. Please check your channel access token/channel secret.")
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TExtSendMessage(text=event.message.text)
)
if __name__ == "__main__":
app.run()
python main.py
這時會看到你的 server 已經跑起來了,路徑為 http://127.0.0.1:8080
再來讓 LineBot 可以連接到這個 api,因為還在測試中,所以暫時先放在本機電腦裡,這時可以利用 ngrok 為本機建立一個連外的網址,讓 LineBot 可以找到我們的 api
ngrok authtoken [剛剛複制的 authtoken]
ngrok http 8080
這時會看到以下的圖,Forwarding 的部份就是對外的網址
回到 Line developers 的 Messaging API,把這個網址後面加 /callback 貼到 Webhook URL
設定好後,可以按下 [Verify] 檢查一下,如果有跳出 Success 的提示,代表你已經連結成功,這時就可以到 Line 測試,在和這個 LineBot 的對話視窗打字,它會回你一模一樣字內容
如果有預設的自動回覆,可以在 line 官方帳號 裡關閉預設的自動回覆。
ps: Line 官方帳號這裡有不少自動回覆的功能可以設定,不過這不是我們介紹的重點,有興趣的朋友可以可以試試