iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
自我挑戰組

嘗試使用Python與Open Data 打造自動化投資系列 第 28

Python與Line Bot(2):串接測試

  • 分享至 

  • xImage
  •  

Python Line Bot 和 Webhook 是實現即時通信和互動的關鍵元素,尤其在整合 Line Messaging API 和建立 Line 聊天機器人(Line Bot)的情境中。這篇文章將介紹它們之間的關聯,並提供 Python 程式碼和操作流程示例,以便您了解如何建立一個能夠接收和回應 Line 用戶消息的 Python Line Bot。

什麼是 Webhook
Webhook 是一個用於實時通知和事件觸發的概念。它允許應用程式接收特定事件的通知,而不需要持續的請求或輪詢。在 Line Bot 中,Webhook 用於通知 Bot 有新消息或事件需要處理。

Webhook 通常是一個 HTTP 端點(URL),當特定事件發生時,Line Messaging API 會向該端點發送 HTTP POST 請求。

前一篇建立好LINE BOT帳戶後
接下來幾個步驟

  1. 我們要設定 Webhook URL:
    在 LINE 開發者控制台中,設定 Webhook URL,這是 LINE Messaging API 將用戶消息和事件通知到的位置。
    您需要有一個可公開訪問的 Web 伺服器,以設定 Webhook URL。
  2. 然後建立 Python 應用程式:
    使用 Python 創建一個 Web 伺服器應用程式,以接收 LINE 的 Webhook 通知。
    使用 Python Line Bot SDK,如 line-bot-sdk,以簡化與 LINE Bot API 的互動。
  3. 處理 Webhook 通知:
    在您的 Python 應用程式中,建立一個 Webhook Handler,它將處理 LINE 發送的 Webhook 通知。
    根據接收到的消息和事件,處理用戶的請求並生成回覆消息。
  4. 回覆消息:
    使用 LINE Bot API,將生成的回覆消息發送給 LINE 用戶。
    LINE Bot API 提供了多種訊息類型,包括文字訊息、圖片、影片、貼圖等。
  5. Web 伺服器:
    部署 Python 應用程式到 Web 伺服器上,以確保它可以接收 LINE 的 Webhook 通知。您可以使用各種 Web 伺
    服器框架,如 Flask 或 Django。
    6.測試和驗證:

測試您的 LINE Bot 是否能夠正確處理 LINE 用戶的消息,以確保一切運作正常。
您可以使用 LINE Developers 測試工具 來模擬 LINE 用戶的操作和測試您的 Bot。

安裝必要的Python套件

pip install line-bot-sdk

這裡有許多pyhton串接linebot的一些line官方模組
https://pypi.org/project/line-bot-sdk/

from flask import Flask, request, abort

from linebot.v3 import (
    WebhookHandler
)
from linebot.v3.exceptions import (
    InvalidSignatureError
)
from linebot.v3.messaging import (
    Configuration,
    ApiClient,
    MessagingApi,
    ReplyMessageRequest,
    TextMessage
)
from linebot.v3.webhooks import (
    MessageEvent,
    TextMessageContent
)

可以開始編寫Python測試程式碼,以確保我們的Line Bot可以正確運作。以下是一個簡單的範例,用於發送一個歡迎訊息給Bot:

from linebot import LineBotApi
from linebot.models import TextSendMessage

# 設定你的Channel Access Token
channel_access_token = "你的Channel Access Token"

# 創建Line Bot API物件
line_bot_api = LineBotApi(channel_access_token)

# 用戶ID,這是你想要發送訊息的用戶
user_id = "用戶的ID"

# 要發送的訊息
message = TextSendMessage(text="歡迎使用Line Bot!")

# 發送訊息
line_bot_api.push_message(user_id, messages=message)

** 回覆用戶傳送的文本消息sample**

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)

# 以下請替換為您的 Channel Secret 和 Channel Access Token
line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('YOUR_CHANNEL_SECRET')

@app.route("/callback", methods=['POST'])
def callback():
    signature = request.headers['X-Line-Signature']
    body = request.get_data(as_text=True)
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)
    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    user_message = event.message.text
    reply_text = "您說了:" + user_message
    line_bot_api.reply_message(event.reply_token, TextSendMessage(text=reply_text))

if __name__ == "__main__":
    app.run()

執行測試
最後,你可以執行測試程式碼,並確保Line Bot能夠正確收到並回應訊息。請確保已經替換了正確的Channel Access Token和用戶ID。

執行測試程式碼後,你應該能夠在Line上收到一條歡迎訊息,這證明了Python與Line Bot的串接是正確的。


上一篇
股票訊號+Line Bot
下一篇
Python與Line Bot(3):多媒體訊息
系列文
嘗試使用Python與Open Data 打造自動化投資30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言