知道了line bot sdk python上的程式的功能是回復你和你傳送相同的訊息。這邊會看成是在做什麼並在之後去修改程式成你要的功能。
這裡在驗證封包是否來源於LINE,在Webhook那篇有提到webhook溝通的條件
@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'
@app.route("/callback", methods=['POST'])
在主網域下註冊/callback網址
def callback():
建立一個回呼函式,函式內容如下
signature = request.headers['X-Line-Signature']
提取請求標頭內的數位簽章
body = request.get_data(as_text=True)
提取請求本體
app.logger.info("Request body: " + body)
將請求本體添加至log info紀錄
try: handler.handle(body, signature) except InvalidSignatureError: print("Invalid signature. Please check your channel access token/channel secret.") abort(400)
透過你的頻道密鑰計算並驗證請求本體是否與數位簽章一致,如果一致預設會回復狀態代碼200,否則回覆狀態代碼400
這段程式在bot server裡處理接收的訊息跟回復的訊息
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
@handler.add(MessageEvent, message=TextMessage)
用來監聽接收到的MessageEvent這個Webhook事件中類型為TextMessage的訊息
def handle_message(event):
建立一個處理訊息的函式,處理接收到的event
line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.message.text))
line_bot_api.reply_message():為回覆訊息的函式,前面的參數是reply_token,可以從Webhook事件中獲得,後面的參數為要傳送的訊息
參考:
https://developers.line.biz/en/reference/messaging-api/#webhook-event-objects