iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
DevOps

30天的社群機器人之旅系列 第 4

Day 04 Line Bot 基本回聲機器人

  • 分享至 

  • xImage
  •  

今天終於要進入主題了,首先先幫各位複習一下 Day 02 的程式碼。

from flask import Flask, request, abort
from linebot import LineBotApi, WebhookHandler
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, TextMessage, TextSendMessage
import os


app = Flask(__name__)

line_bot_api = LineBotApi(os.environ['CHANNEL_ACCESS_TOKEN'])  # 可在無法取得值時返回異常
handler = WebhookHandler(os.environ['CHANNEL_SECRET'])  # 可在無法取得值時返回異常


@app.route("/callback", methods=['POST'])
def callback():
    # 抓 X-Line-Signature 標頭的值
    signature = request.headers['X-Line-Signature']
    # 抓 request body 的文字
    body = request.get_data(as_text=True)
    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        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(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))

我們先看到 14 行的位置,這個就是我們 Webhook 的進入點,我是使用 /callback 當作進入點的 URL ,各位如果有想要改成其他的 URL 也都可以,並沒有限制一定為 /callback ,接著裡面需要先用 Channel Secret 來驗證我們昨天說過的是否為 Line 平台傳送的訊息,驗證通過會自動送進對應的 Handler 進行處裡,這邊基本上為固定寫法,因此知道在幹嘛就好。

接著下面是註冊我們的 Handler ,讓前面驗證完有對應的 Handler 可以處裡,而最基本的就是文字訊息的處理器。

我們接著看到 29 行,handler 先加入了一個處理函式,並指定可處裡哪一類的訊息 (MessageEvent) ,然後函式中使用 line_bot 對我們的訊息進行回復,回復的內容為 TextSendMessage ,訊息內容為傳入的文字 event.message.text

那麼就先到這邊,今天主要是先解釋一下 Day 02 的內容,明天會詳細解釋一下過程。

大家掰~掰~


上一篇
Day 03 Line Bot 說明
下一篇
Day 05 Line Bot 訊息詳解
系列文
30天的社群機器人之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言