Skip to content

開發文件:如何接收 LINE 消息(Webhook)

Reference

目錄

  1. 介紹
  2. 設置 Webhook URL
  3. 驗證簽名
  4. Webhook 事件類型
  5. 處理撤回事件
  6. Webhook 再傳送
  7. 獲取用戶發送的內容
  8. 獲取用戶資料
  9. 總結

介紹

每當用戶加好友或發送消息給你的 LINE 官方帳號時,LINE 平台會向你在 LINE 開發者控制台 中註冊的 webhook URL 發送 HTTP POST 請求,請求中包含 webhook 事件對象。

確保你的機器人服務器能夠正確處理這些 webhook 事件對象,否則 LINE 平台可能會暫停向你的機器人服務器發送 webhook。

設置 Webhook URL

  1. 登錄 LINE 開發者控制台,選擇你的頻道。
  2. 進入頻道設定,點擊 Messaging API 標籤。
  3. 在 Webhook 設置中,輸入你的機器人服務器的 URL,並啟用 Use webhook

驗證簽名

  1. 使用 HMAC-SHA256 算法計算請求體的摘要,密鑰為 channel secret
  2. 比對計算出的 Base64 編碼摘要與 x-line-signature 請求標頭中的簽名。

以下是 Python 代碼示例:

python
import base64
import hashlib
import hmac

channel_secret = '...' # Channel secret 字串
body = '...' # 請求體字串
hash = hmac.new(channel_secret.encode('utf-8'),
    body.encode('utf-8'), hashlib.sha256).digest()
signature = base64.b64encode(hash)
# 比對 x-line-signature 請求標頭中的簽名與計算出的簽名

Webhook 事件類型

你可以根據 webhook 事件對象中的數據控制你的機器人的反應。以下是一些常用的事件類型:

單聊或群聊中的 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當用戶觀看完指定 trackingId 的視頻消息時

處理撤回事件

當用戶撤回消息時,會發送 unsend event 到機器人服務器。建議服務提供商尊重用戶的撤回意圖,適當處理消息,以確保目標消息未來不可見或使用。

例如:

  • 取消管理界面上顯示的目標消息。
  • 刪除存儲在數據庫中的目標消息。

Webhook 再傳送

如果機器人服務器未能正常響應 webhook,LINE 平台會在一定時間內再次傳送該 webhook。為啟用該功能,請執行以下步驟:

  1. LINE 開發者控制台 打開頻道設置。
  2. 點擊 Messaging API 標籤。
  3. 啟用 Use webhook
  4. 啟用 Webhook redelivery

獲取用戶發送的內容

你可以通過 webhook 獲取用戶發送的圖片、視頻、音頻及文件。例如:

bash
curl -v -X GET https://api-data.line.me/v2/bot/message/{messageId}/content \
-H 'Authorization: Bearer {channel access token}'

獲取用戶資料

你可以通過 webhook 中包含的用戶 ID 獲取用戶的 LINE 資料。例如:

bash
curl -v -X GET https://api.line.me/v2/bot/profile/{userId} \
-H 'Authorization: Bearer {channel access token}'

成功後會返回 JSON 對象。

總結

本文件詳細介紹了如何設置和驗證 LINE 的 webhook 以及處理各種事件。希望這能幫助你更好地開發 LINE 的應用程序。

若有任何問題,請參考 LINE 官方文檔