iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Software Development

LINE Messaging API SDK for Python 實現群組團購輔助機器人系列 第 7

Day 07 line bot sdk python範例程式在做什麼

知道了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事件中獲得,後面的參數為要傳送的訊息

Webhook事件物件

  • Message event : 訊息事件
  • Unsend event : 收回訊息事件
  • Follow event : 追隨事件
  • Unfollow event : 封鎖事件
  • Join event : 加入事件
  • Leave event : 離開事件
  • Member join event : 成員加入事件
  • Member leave event : 成員離開事件
  • Postback event : 回發事件
  • Video viewing complete event : 影片觀看完成事件
  • Beacon event : Beacon事件
  • Account link event : 帳戶連接事件
  • Device link event : 裝置連接事件
  • Device unlink event : 裝置斷開連接事件
  • LINE Things scenario execution event : LINE Things場景執行事件

參考:
https://developers.line.biz/en/reference/messaging-api/#webhook-event-objects


上一篇
Day 06 Heroku、Heroku CLI、Git push建置
下一篇
DAY 08 讓Linebot回覆特定訊息
系列文
LINE Messaging API SDK for Python 實現群組團購輔助機器人30

尚未有邦友留言

立即登入留言