OpenClaw

OpenClaw LINE 頻道

即時通訊
中等

透過官方 Messaging API 將 OpenClaw 連接到 LINE。此基於外掛的整合讓您的 AI 助手可以在 LINE 上收發訊息 — LINE 是日本、台灣、泰國和東南亞最受歡迎的通訊平台之一。OpenClaw 透過 Webhook 接收事件,並透過 Messaging API 回覆,支援豐富的訊息類型,包括 Flex Messages、範本訊息、快速回覆和媒體分享。

快速資訊
難度中等
分類即時通訊
支援功能數3 / 6

LINE 支援功能

文字訊息

支援

媒體與檔案

支援

表情回應

不支援

討論串

不支援

語音訊息

不支援

群組聊天

支援

LINE 前置條件

  • LINE Developers 帳號(可在 developers.line.biz 免費註冊)
  • 在 LINE Developers Console 中建立 Provider 和 Messaging API 頻道
  • 從 Messaging API 頻道設定中取得 Channel access token 和 Channel secret
  • OpenClaw Gateway 已執行,且可透過公開 HTTPS URL 存取(Webhook 所需)
  • 已安裝 LINE 外掛:openclaw plugins install @openclaw/line

LINE 快速設定

1

建立 LINE Messaging API 頻道

登入 LINE Developers Console,建立 Provider(或選擇現有的),然後建立新的 Messaging API 頻道。記錄您的 Channel ID、Channel secret,並從頻道設定頁面核發 Channel access token。

2

安裝 LINE 外掛並新增設定

執行 'openclaw plugins install @openclaw/line' 以安裝 LINE 外掛。然後將 LINE 頻道設定新增到 ~/.openclaw/openclaw.json,填入您的 channelAccessToken 和 channelSecret。也可以使用環境變數 LINE_CHANNEL_ACCESS_TOKEN 和 LINE_CHANNEL_SECRET。

3

設定 Webhook URL

在 LINE Developers Console 中,導覽至頻道的 Messaging API 分頁。將 Webhook URL 設為 'https://<your-gateway-host>/line/webhook' 並啟用「Use webhook」。點選 Verify 確認端點可連線。在 LINE Official Account Manager 中停用自動回覆和問候訊息,以防止重複回覆。

4

傳送測試訊息

掃描機器人的 QR Code(可在 Console 中找到)將 LINE 機器人加為好友。向機器人傳送訊息。如果使用預設的 pairing 策略,請在終端機中透過 'openclaw pairing approve line <code>' 核准發送者。

LINE 設定範例

config.json
{
  "channels": {
    "line": {
      "enabled": true,
      "channelAccessToken": "YOUR_CHANNEL_ACCESS_TOKEN",
      "channelSecret": "YOUR_CHANNEL_SECRET",
      "dmPolicy": "pairing"
    }
  }
}

LINE 深入了解

架構概述

OpenClaw 透過官方 Messaging API 與 LINE 整合 — 這是一種基於 Webhook 的架構,LINE 平台將事件(訊息、追蹤、加入)推送到您的 Gateway,OpenClaw 則使用 REST API 進行回覆。 流程如下:使用者傳送訊息 → LINE 平台 → Webhook POST 到您的 Gateway → OpenClaw 使用 AI 處理 → 透過 Messaging API 回覆 → LINE 平台 → 使用者收到回覆。 與逆向工程協定不同,Messaging API 由 LINE Corporation 官方支援,提供穩定、有文件記錄的端點和保證的相容性。OpenClaw 自動處理 Webhook 簽名驗證(使用您的 Channel secret 進行 HMAC-SHA256 驗證),以確保所有傳入事件的真實性。 LINE 外掛透過 'openclaw plugins install @openclaw/line' 單獨安裝。此模組化架構保持核心 Gateway 輕量,同時允許 LINE 特定功能獨立維護。
您的 Gateway 必須可透過具有有效 SSL 憑證的公開 HTTPS URL 存取。LINE 的 Webhook 系統不接受自簽憑證。
對於多帳號設定,每個帳號可以有自訂的 webhookPath,以在同一 Gateway 上的不同端點接收事件。

LINE Developers Console 設定

設定 LINE 機器人需要在 LINE Developers Console 中建立正確的資源: 1. 建立 Provider — 代表您或您的組織。一個 Provider 可包含多個頻道。 2. 建立 Messaging API 頻道 — 選擇 Messaging API 類型(非 LINE Login)。填寫必要資訊:頻道名稱、說明、類別和子類別。 3. 核發 Channel access token — 前往頻道設定中的 Messaging API 分頁,點選「Issue」以產生長期有效的 Channel access token。此 Token 用於驗證您的 API 呼叫。 4. 記錄 Channel secret — 位於 Basic Settings 分頁中。用於 Webhook 簽名驗證。 5. 設定 Webhook — 在 Messaging API 分頁中,將 Webhook URL 設為 Gateway 的 LINE 端點並啟用「Use webhook」。 6. 停用自動回覆 — 在 LINE Official Account Manager(從 Console 連結)中,關閉問候訊息和自動回覆,以避免與 AI 機器人衝突。 LINE 使用特定的 ID 格式:使用者 ID 以 'U' 開頭後接 32 個十六進位字元,群組 ID 以 'C' 開頭,房間 ID 以 'R' 開頭。
openclaw.json
{
  "channels": {
    "line": {
      "channelAccessToken": "YOUR_TOKEN",
      "channelSecret": "YOUR_SECRET"
    }
  }
}
請妥善保管您的 Channel secret 和 access token。切勿提交到版本控制。正式部署時請使用環境變數(LINE_CHANNEL_ACCESS_TOKEN、LINE_CHANNEL_SECRET)或基於檔案的 Token(tokenFile、secretFile)。

Channel Access Token

LINE 提供四種類型的 Channel access token,具有不同的有效期和使用情境: • 長期有效 Token — 不會過期。從 Console 核發。每個頻道只能存在一個;重新核發會使前一個失效。是自託管機器人最簡單的選項。 • 短期有效 Token(v2.1)— 最長 30 天過期。透過 API 使用 JWT 斷言核發。每個頻道最多 30 個 Token。推薦用於需要 Token 輪替的正式部署。 • 無狀態 Token — 15 分鐘過期。核發數量無限制。無法撤銷。適用於需要極短 Token 有效期的高安全性場景。 • 短期有效(舊版)— 30 天過期。每個頻道最多 30 個;超過限制時最舊的會被自動撤銷。 OpenClaw 支援所有 Token 類型。對於大多數自託管設定,長期有效 Token 是最簡單的選擇。可直接在設定中配置,或透過 LINE_CHANNEL_ACCESS_TOKEN 環境變數設定。
對於需要 Token 輪替的正式環境,使用 tokenFile 設定選項指向一個由外部 Token 重新整理程序更新的檔案。
避免過於頻繁地核發 Token — 如果在短時間內建立太多 Token,LINE 可能會暫時限制核發。

私訊策略

私訊(DM)策略控制誰可以在一對一聊天中與您的 LINE 機器人互動。OpenClaw 支援四種策略: • pairing(預設)— 向機器人發訊息的新使用者會收到一個隨機配對碼。在終端機中透過 'openclaw pairing approve line <code>' 進行核准。核准後即可自由聊天。配對碼在 1 小時後過期,每個頻道最多 3 個待處理請求。 • allowlist — 僅 allowFrom 中列出的 LINE 使用者 ID 可以給機器人發訊息。其他人將被靜默忽略。LINE 使用者 ID 格式為 'U' + 32 個十六進位字元。 • open — 任何將機器人加為好友並發送訊息的人都會收到回覆。需要將 '*' 加入 allowFrom 作為安全確認。 • disabled — 完全關閉私訊功能。 要查找使用者的 LINE ID,請在使用者發送訊息時檢查 Gateway 記錄 — 每個 Webhook 事件都會記錄來源 userId。
openclaw.json
{
  "channels": {
    "line": {
      "dmPolicy": "allowlist",
      "allowFrom": ["U1234567890abcdef1234567890abcdef"]
    }
  }
}
LINE 使用者 ID 按 Provider 唯一 — 同一位實際使用者在不同 Provider 中會有不同的 ID。請確保 allowFrom 中的 ID 與正確的 Provider 相符。
使用 'openclaw pairing list line' 查看所有待處理的配對請求及其配對碼。

群組聊天管理

OpenClaw 支援 LINE 群組聊天和多人聊天,具有可設定的存取控制: • disabled(預設)— 忽略所有群組和房間訊息 • open — 回應所有群組成員的訊息 • allowlist — 僅核准的使用者 ID(透過 groupAllowFrom)可在群組中觸發機器人 當 LINE 機器人加入群組時,會收到一個 'join' 事件。群組對話與私訊隔離 — 每個群組維護自己的對話上下文和歷史記錄。 LINE 中的群組 ID 格式為 'C' + 32 個十六進位字元。房間 ID 使用 'R' + 32 個十六進位字元。可在收到群組訊息時從 Gateway 記錄中查看這些 ID。 注意:機器人必須由群組成員加入群組。LINE 機器人無法自行加入群組。
openclaw.json
{
  "channels": {
    "line": {
      "groupPolicy": "open",
      "historyLimit": 50
    }
  }
}

豐富訊息:Flex 與範本

LINE 支援超越純文字的豐富訊息類型,OpenClaw 充分利用了這些功能: • Flex Messages — 使用 JSON 結構的高度可自訂卡片式版面。OpenClaw 會在可行時自動將 AI 回覆中的程式碼區塊轉換為 Flex Message 卡片。您也可以使用 '/card' 命令產生預設的 Flex 範本。 • 範本訊息 — 帶有按鈕、輪播、確認和圖片輪播的結構化訊息。適用於向使用者展示選項。 • 快速回覆 — 最多 13 個動作按鈕顯示在訊息下方。支援訊息動作、URI 動作、Postback 動作、日期時間選擇器、相機/相簿動作和位置動作。使用者點選後快速回覆會消失。 • 貼圖 — LINE 的招牌功能。機器人可以透過指定 packageId 和 stickerId 傳送官方貼圖。僅 LINE 公佈的可傳送貼圖清單中的貼圖可透過 API 使用。 • 位置訊息 — 分享帶有地址標籤的經緯度座標。 Markdown 格式會自動從 AI 回覆中移除,因為 LINE 原生不支援。程式碼區塊會轉換為 Flex 卡片以提高可讀性。
使用 LINE Flex Message Simulator(可在 Console 中取得)在編碼前設計和預覽自訂 Flex 版面。
快速回覆僅在 LINE for iOS 和 Android 上支援 — 不會在桌面版或網頁版客戶端中顯示。

媒體與附件

OpenClaw 處理 LINE 上的媒體檔案,包括圖片、影片、音訊和檔案。從使用者接收的媒體內容會由 Gateway 自動下載和處理。 入站媒體從 LINE 的內容 API 擷取,並傳遞給 AI 進行處理(如圖片分析)。預設最大檔案大小為 10 MB(可透過 mediaMaxMb 設定)。 出站媒體透過 Messaging API 上傳。LINE 支援: • 圖片 — JPEG 和 PNG,最大 10 MB • 影片 — MP4,最大 200 MB(某些情境最長 1 分鐘) • 音訊 — M4A,最大 200 MB LINE 使用帶有訊息 ID 的內容擷取 API — 媒體內容不會直接包含在 Webhook 載荷中,而需要單獨擷取。OpenClaw 會自動處理此流程。
openclaw.json
{
  "channels": {
    "line": {
      "mediaMaxMb": 10
    }
  }
}

Webhook 安全性

LINE 使用 HMAC-SHA256 簽名驗證來確保 Webhook 事件的真實性。每個 Webhook 請求都包含一個 'x-line-signature' 標頭,其中包含使用您的 Channel secret 作為金鑰計算的請求主體的 Base64 編碼 HMAC-SHA256 摘要。 OpenClaw 會自動驗證每個傳入 Webhook 事件的簽名。如果驗證失敗,事件將以 403 狀態被拒絕。這可防止偽造或篡改的事件被處理。 重要:簽名是根據原始請求主體字串計算的。在驗證前請勿解析、反序列化或重新格式化 JSON。OpenClaw 會正確處理此問題 — 只需確保您的反向代理或負載平衡器在到達 Gateway 之前不會修改請求主體。
如果 Webhook 驗證持續失敗,請仔細檢查您的 channelSecret 是否與 LINE Developers Console 中(Basic Settings 分頁)的值相符。
使用 Console 中的「Verify」按鈕測試您的 Webhook 端點。它會傳送一個帶有空 events 陣列的測試事件。

載入指示器與傳送

OpenClaw 在產生 AI 回覆時傳送載入指示器(輸入動畫)。LINE 的載入指示器 API 會在聊天中顯示一個最長 60 秒的轉圈動畫,提供機器人正在處理的視覺回饋。 對於較長的 AI 回覆,文字會自動在每則訊息 5,000 個字元處分段(LINE 的訊息大小限制)。分段對使用者是透明的 — 他們會收到多則連續訊息。 串流會被緩衝直到完成 — LINE 不像某些其他平台那樣支援串流訊息傳送。完整回覆會先產生,然後作為一則或多則訊息傳送。 LINE 的 Messaging API 支援在單次回覆中傳送最多 5 個訊息物件。OpenClaw 會盡可能將短訊息批次處理以最佳化傳送。
openclaw.json
{
  "channels": {
    "line": {
      "textChunkLimit": 5000,
      "chunkMode": "newline"
    }
  }
}

多帳號設定

OpenClaw 支援在單一 Gateway 實例上執行多個 LINE 機器人帳號。每個帳號擁有自己的憑證、Webhook 路徑和設定覆蓋。 這對於在不同 LINE 帳號上執行不同的 AI 人格,或在同一基礎設施上分離正式環境和測試環境的機器人非常有用。 每個帳號在自己的路徑上接收 Webhook 事件:/line/<accountId>/webhook(而非預設的 /line/webhook)。在每個帳號的 LINE Developers Console 中設定對應的 Webhook URL。
openclaw.json
{
  "channels": {
    "line": {
      "accounts": {
        "main": {
          "channelAccessToken": "TOKEN_1",
          "channelSecret": "SECRET_1",
          "webhookPath": "/line/main/webhook"
        },
        "support": {
          "channelAccessToken": "TOKEN_2",
          "channelSecret": "SECRET_2",
          "webhookPath": "/line/support/webhook"
        }
      }
    }
  }
}

LINE 設定參考

enabled
Type: booleanDefault: true

啟用或停用 LINE 頻道

channelAccessToken
Type: stringDefault: ""

LINE Messaging API 的 Channel access token。也可使用 LINE_CHANNEL_ACCESS_TOKEN 環境變數

channelSecret
Type: stringDefault: ""

用於 Webhook 簽名驗證的 LINE Channel secret。也可使用 LINE_CHANNEL_SECRET 環境變數

tokenFile
Type: stringDefault: ""

包含 Channel access token 的檔案路徑(內嵌設定的替代方案)

secretFile
Type: stringDefault: ""

包含 Channel secret 的檔案路徑(內嵌設定的替代方案)

dmPolicy
Type: stringDefault: "pairing"

控制誰可以私訊機器人。選項:pairing、allowlist、open、disabled

allowFrom
Type: string[]Default: []

dmPolicy 為 allowlist 時允許向機器人發訊息的 LINE 使用者 ID(U + 32 hex)

dmHistoryLimit
Type: numberDefault: 50

每個對話中作為 AI 上下文包含的最近私訊數量

groupPolicy
Type: stringDefault: "disabled"

群組聊天策略。選項:disabled、allowlist、open

groupAllowFrom
Type: string[]Default: []

groupPolicy 為 allowlist 時允許在群組中觸發機器人的 LINE 使用者 ID

historyLimit
Type: numberDefault: 50

作為 AI 上下文包含的最大群組訊息數。設為 0 可停用

textChunkLimit
Type: numberDefault: 5000

分段前每則外送訊息的最大字元數

chunkMode
Type: stringDefault: "length"

文字分段模式。選項:length(硬性分割)、newline(段落感知)

mediaMaxMb
Type: numberDefault: 10

最大入站媒體檔案大小(兆位元組)

webhookPath
Type: stringDefault: "/line/webhook"

此帳號的自訂 Webhook 路徑(適用於多帳號設定)

accounts.<id>.channelAccessToken
Type: stringDefault: ""

多帳號設定中每個帳號的 Channel access token

accounts.<id>.channelSecret
Type: stringDefault: ""

多帳號設定中每個帳號的 Channel secret

accounts.<id>.webhookPath
Type: stringDefault: "/line/<id>/webhook"

多帳號設定中每個帳號的 Webhook 路徑

configWrites
Type: booleanDefault: true

允許 /config 命令在執行時修改頻道設定

LINE 常見問題

LINE 故障排除

LINE Console 中 Webhook 驗證失敗

Gateway 無法從網際網路存取、URL 不正確,或 SSL 憑證問題。

驗證 Gateway 是否正在執行且可透過公開 URL 存取。確保 URL 為正確的 'https://<host>/line/webhook' 並具有有效的 SSL 憑證(非自簽)。檢查防火牆規則和連接埠轉發。從外部機器使用 'curl -X POST https://<host>/line/webhook' 進行測試。
已加為好友但機器人不回應訊息

Console 中未啟用 Webhook、自動回覆正在干擾,或發送者尚未透過 pairing 策略核准。

在 LINE Developers Console 中,確認 Messaging API 分頁上的「Use webhook」已啟用。在 LINE Official Account Manager 中,停用自動回覆和問候訊息。如果使用 pairing 策略,使用 'openclaw pairing list line' 檢查待處理的配對並核准發送者。
傳送回覆時出現 401 Unauthorized 錯誤

Channel access token 無效、已過期或已被撤銷。

前往 LINE Developers Console,導覽至頻道的 Messaging API 分頁,並核發新的 Channel access token。使用新 Token 更新您的 OpenClaw 設定或 LINE_CHANNEL_ACCESS_TOKEN 環境變數。如果使用 Token 輪替,請驗證您的重新整理程序是否正常運作。
收到訊息但回覆顯示「Invalid reply token」

LINE reply token 在 Webhook 事件傳送後 1 分鐘過期。如果 AI 處理時間較長,Token 會變為無效。

這是 LINE 平台的限制。OpenClaw 會在 reply token 過期時使用推播訊息作為備援方案。確保您的 channelAccessToken 具有推播訊息權限,且未超過每月推播訊息配額。
傳入 Webhook 的簽名驗證錯誤

設定中的 channelSecret 與 LINE Developers Console 中的 Channel secret 不符,或反向代理正在修改請求主體。

仔細檢查 channelSecret 值是否與 LINE Developers Console 的 Basic Settings 分頁中顯示的「Channel secret」相符。如果使用反向代理(nginx、Apache),請確保它轉發原始請求主體而不做修改。檢查 Content-Type 是否保留為 application/json。