💬 LINE Messaging API
用於開發、調試或與 LINE Messaging API 互動(包括 Webhook 事件、簽章驗證、發送回覆/推送/群組/廣播訊息以及管理圖文選單)。
概述 (Overview)
此技能提供與 LINE Messaging API 整合和互動的結構化參考。涵蓋常見規範、Webhook 處理、簽章驗證、訊息格式和圖文選單管理。
何時使用 (When to Use)
- 實作 Webhook 路由以接收來自 LINE 平台的訊息和事件對象。
- 驗證 Webhook 請求簽章 (
x-line-signature) 以確保安全性。 - 發送回覆、推送、多播 (multicast) 或廣播訊息。
- 獲取使用者個人檔案資訊或下載使用者傳送的媒體內容(圖片、影片、音訊、檔案)。
- 建立和管理圖文選單 (rich menus)(上傳圖片、將圖文選單連結/取消連結至使用者)。
核心模式 (Core Pattern)
在處理事件之前,務必對傳入的 Webhook 進行簽章驗證,並立即向 LINE 平台回傳 200 OK 回應。
Webhook 簽章驗證 (Python 範例)
import hmac
import hashlib
import base64
# 驗證標頭 'x-line-signature'
channel_secret = "YOUR_CHANNEL_SECRET"
body = request_raw_body_string
hash = hmac.new(
channel_secret.encode('utf-8'),
body.encode('utf-8'),
hashlib.sha256
).digest()
signature = base64.b64encode(hash).decode('utf-8')
# 將簽章與請求標頭進行比較(標頭鍵值不區分大小寫)
is_valid = hmac.compare_digest(signature, request_headers.get('x-line-signature'))
快速參考 (Quick Reference)
網域名稱 (Domain Names)
| 網域名稱 | 用途 |
|---|---|
api.line.me |
標準 API 端點(訊息、個人檔案、圖文選單等) |
api-data.line.me |
媒體資料端點(訊息下載/上傳、圖文選單圖片、受眾檔案) |
核心 API 端點 (Essential Endpoints)
| API 端點 | 方法 | 路徑 | 描述 |
|---|---|---|---|
| 發送回覆 (Reply) | POST |
/v2/bot/message/reply |
使用一次性的 replyToken 進行回覆 |
| 發送推送 (Push) | POST |
/v2/bot/message/push |
直接向特定使用者、群組或聊天室發送訊息 |
| 發送多播 (Multicast) | POST |
/v2/bot/message/multicast |
向多個使用者發送推送訊息(最多 500 人) |
| 發送廣播 (Broadcast) | POST |
/v2/bot/message/broadcast |
向所有好友發送訊息 |
| 取得訊息內容 | GET |
/v2/bot/message/{messageId}/content |
取得媒體內容(圖片、影片等)需經由 api-data.line.me |
| 顯示載入動畫 | POST |
/v2/bot/chat/loading/start |
在聊天室中顯示載入中指示器 |
| 建立圖文選單 | POST |
/v2/bot/richmenu |
建立新的圖文選單物件 |
| 上傳圖文選單圖片 | POST |
/v2/bot/richmenu/{richMenuId}/content |
上傳 JPEG 或 PNG 圖片 需經由 api-data.line.me |
| 連結圖文選單 | POST |
/v2/bot/user/{userId}/richmenu/{richMenuId} |
將圖文選單連結至特定使用者 |
實作步驟 (Implementation Steps)
- 取得憑證:在 LINE Developers 控制台建立通道,並複製 Channel Secret 和 Channel Access Token。
- 設定路由:建立一個與您註冊的 Webhook URL 相符的 HTTPS 路由。
- 驗證並回應:驗證
x-line-signature中的簽章。立即回傳 HTTP200 OK狀態,即使 Webhook 包含空的事件陣列。 - 處理事件:遍歷
events[]。處理常見的事件類型,如message、follow和postback。 - 建構承載資料 (Payloads):進行回覆或推送時,請正確格式化訊息物件(例如:
{ "type": "text", "text": "Hello" })。
常見錯誤 (Common Mistakes)
- 上傳/下載網域錯誤:嘗試使用
api.line.me而不是api-data.line.me來上傳圖文選單圖片或下載訊息內容將會失敗。 - 重複使用/延遲回覆 Token:回覆 Token 會迅速過期且只能使用一次。請立即使用,或在處理較慢時改用推送訊息 (Push)。
- 標頭區分大小寫:Webhook 標頭欄位名稱可能不區分大小寫(例如
X-Line-Signature與x-line-signature)。請以不區分大小寫的方式進行解析。 - 超出大小限制:Messaging API 的 Payload 大小限制為 2MB。請確保您的附件/文字承載資料不超過此限制。
- 未處理 Standby 模式:如果 Bot 的模式為
standby(其他模組處於作用中狀態),請避免發送訊息以防止混淆使用者。