跳到內容

將 LINE 整合進 OpenClaw:從基礎配置到 Flex 訊息

串接通訊軟體的 API 總是讓人頭痛,尤其是處理 Webhook 驗證和各種訊息格式轉換的時候。如果你正打算把你的 AI 代理程式接到 LINE 上,這篇指南會幫你快速搞定,讓你少走彎路。

LINE 透過 LINE Messaging API 連接到 OpenClaw。這個外掛程式在 Gateway 上作為 Webhook 接收器執行,並使用你的 Channel Access Token 和 Channel Secret 進行身份驗證。

狀態:透過外掛程式支援。支援直接訊息、群組聊天、多媒體、位置、Flex 訊息、範本訊息和快速回覆。目前不支援貼圖反應 (Reactions) 和討論串 (Threads)。

安裝 LINE 外掛程式:

Terminal window
openclaw plugins install @openclaw/line

本地檢出(從 git 儲存庫執行時):

Terminal window
openclaw plugins install ./path/to/local/line-plugin
  1. 建立 LINE Developers 帳號並開啟 Console:https://developers.line.biz/console/
  2. 建立(或選擇)一個 Provider 並新增一個 Messaging API 頻道。
  3. 從頻道設定中複製 Channel access token 和 Channel secret。
  4. 在 Messaging API 設定中啟用 Use webhook。
  5. 將 Webhook URL 設定為你的 Gateway 端點(必須使用 HTTPS):
https://gateway-host/line/webhook

Gateway 會回應 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_TOKEN
  • LINE_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",
},
},
},
},
}

直接訊息預設為配對模式。未知的傳送者會收到配對碼,在獲得核准前,他們的訊息都會被忽略。

Terminal window
openclaw pairing list line
openclaw pairing approve line <CODE>

允許清單與策略:

  • channels.line.dmPolicy: pairing | allowlist | open | disabled
  • channels.line.allowFrom: 允許傳送直接訊息的 LINE User ID 清單
  • channels.line.groupPolicy: allowlist | open | disabled
  • channels.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)。

使用 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!"

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。

想要更輕鬆地完成設定嗎?試試我們的 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。