將 LINE 整合進 OpenClaw:從基礎配置到 Flex 訊息
串接通訊軟體的 API 總是讓人頭痛,尤其是處理 Webhook 驗證和各種訊息格式轉換的時候。如果你正打算把你的 AI 代理程式接到 LINE 上,這篇指南會幫你快速搞定,讓你少走彎路。
LINE (plugin)
Section titled “LINE (plugin)”LINE 透過 LINE Messaging API 連接到 OpenClaw。這個外掛程式在 Gateway 上作為 Webhook 接收器執行,並使用你的 Channel Access Token 和 Channel Secret 進行身份驗證。
狀態:透過外掛程式支援。支援直接訊息、群組聊天、多媒體、位置、Flex 訊息、範本訊息和快速回覆。目前不支援貼圖反應 (Reactions) 和討論串 (Threads)。
安裝外掛程式
Section titled “安裝外掛程式”安裝 LINE 外掛程式:
openclaw plugins install @openclaw/line本地檢出(從 git 儲存庫執行時):
openclaw plugins install ./path/to/local/line-plugin- 建立 LINE Developers 帳號並開啟 Console:https://developers.line.biz/console/
- 建立(或選擇)一個 Provider 並新增一個 Messaging API 頻道。
- 從頻道設定中複製 Channel access token 和 Channel secret。
- 在 Messaging API 設定中啟用 Use webhook。
- 將 Webhook URL 設定為你的 Gateway 端點(必須使用 HTTPS):
https://gateway-host/line/webhookGateway 會回應 LINE 的 Webhook 驗證 (GET) 和入站事件 (POST)。如果你需要自定義路徑,請設定 channels.line.webhookPath 或 channels.line.accounts.<id>.webhookPath 並相應更新 URL。
安全筆記:
- LINE 的簽章驗證依賴於 body(對原始 body 進行 HMAC),因此 OpenClaw 在驗證前會套用嚴格的預驗證 body 限制與逾時設定。
- OpenClaw 會從驗證過的原始請求位元組處理 Webhook 事件。為了確保簽章完整性與安全,上游中間層轉換過的
req.body值會被忽略。
最簡配置:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}環境變數(僅限預設帳號):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Token/Secret 檔案:
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}tokenFile 和 secretFile 必須指向一般檔案,不接受符號連結 (Symlinks)。
多個帳號:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}直接訊息預設為配對模式。未知的傳送者會收到配對碼,在獲得核准前,他們的訊息都會被忽略。
openclaw pairing list lineopenclaw pairing approve line <CODE>允許清單與策略:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: 允許傳送直接訊息的 LINE User ID 清單channels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: 允許群組功能的 LINE User ID 清單- 個別群組覆寫:
channels.line.groups.<groupId>.allowFrom - 執行時筆記:如果完全缺少
channels.line配置,執行時在進行群組檢查時會回退到groupPolicy="allowlist"(即使設定了channels.defaults.groupPolicy也是如此)。
LINE ID 區分大小寫。有效的 ID 格式如下:
- 使用者:
U+ 32 位十六進位字元 - 群組:
C+ 32 位十六進位字元 - 聊天室:
R+ 32 位十六進位字元
- 文字會以 5000 字元為單位進行分段。
- Markdown 格式會被移除;在可能的情況下,程式碼區塊和表格會轉換為 Flex 卡片。
- 串流回應會被緩衝處理;在 Agent 運作時,LINE 會收到帶有載入動畫的完整區塊。
- 多媒體下載受限於
channels.line.mediaMaxMb(預設為 10)。
頻道數據(豐富訊息)
Section titled “頻道數據(豐富訊息)”使用 channelData.line 來傳送快速回覆、位置、Flex 卡片或範本訊息。
{ text: "Here you go", channelData: { line: { quickReplies: ["Status", "Help"], location: { title: "Office", address: "123 Main St", latitude: 35.681236, longitude: 139.767125, }, flexMessage: { altText: "Status card", contents: { /* Flex payload */ }, }, templateMessage: { type: "confirm", text: "Proceed?", confirmLabel: "Yes", confirmData: "yes", cancelLabel: "No", cancelData: "no", }, }, },}LINE 外掛程式還提供了一個 /card 指令,用於 Flex 訊息預設集:
/card info "Welcome" "Thanks for joining!"ACP 支援
Section titled “ACP 支援”LINE 支援 ACP (Agent Communication Protocol) 對話綁定:
/acp spawn <agent> --bind here會將目前的 LINE 聊天綁定到 ACP 工作階段,而不會建立子討論串。- 已配置的 ACP 綁定和啟動中的對話綁定 ACP 工作階段在 LINE 上的運作方式與其他對話頻道相同。
詳細資訊請參閱 ACP agents。
LINE 外掛程式支援透過 Agent 訊息工具傳送圖片、影片和音訊檔案。多媒體會透過 LINE 特定的傳送路徑發送,並帶有適當的預覽和追蹤處理:
- 圖片:作為 LINE 圖片訊息發送,並自動生成預覽圖。
- 影片:發送時會包含明確的預覽圖和內容類型處理。
- 音訊:作為 LINE 音訊訊息發送。
當沒有 LINE 特定路徑可用時,一般多媒體發送會回退到現有的僅限圖片路徑。
- Webhook 驗證失敗:請確保 Webhook URL 是 HTTPS,且
channelSecret與 LINE Console 中的內容一致。 - 沒有入站事件:確認 Webhook 路徑與
channels.line.webhookPath相符,且 LINE 可以連線到你的 Gateway。 - 多媒體下載錯誤:如果多媒體檔案超過預設限制,請調高
channels.line.mediaMaxMb。
- Channels Overview — 所有支援的頻道
- Pairing — 直接訊息驗證與配對流程
- Groups — 群組聊天行為與提及門檻
- Channel Routing — 訊息的工作階段路由
- Security — 存取模型與強化
想要更輕鬆地完成設定嗎?試試我們的 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。