OpenClaw

OpenClaw Slack 頻道

企業
中等

透過 Socket Mode(預設)或 HTTP Events API 將 OpenClaw 連接到 Slack。這個企業級整合讓您的 AI 助手在 Slack 工作區中運行 — 處理私訊、頻道對話、表情回應、討論串和斜線命令。Socket Mode 透過 WebSocket 連接,無需公網 URL;HTTP 模式使用 Slack Events API,適用於公網可存取的部署。

快速資訊
難度中等
分類企業
支援功能數5 / 6

Slack 支援功能

文字訊息

支援

媒體與檔案

支援

表情回應

支援

討論串

支援

語音訊息

不支援

群組聊天

支援

Slack 前置條件

  • 擁有管理員權限的 Slack 工作區(用於安裝自訂應用程式)
  • 在 api.slack.com/apps 建立的 Slack 應用程式
  • App Token(xapp-...),需具有 connections:write 權限範圍(Socket Mode 需要)
  • Bot Token(xoxb-...),安裝應用程式到工作區後取得
  • OpenClaw Gateway 已執行並完成設定

Slack 快速設定

1

建立 Slack 應用程式並啟用 Socket Mode

前往 api.slack.com/apps,點選 'Create New App' → 'From scratch'。為應用程式命名並選擇您的工作區。在側欄中進入 'Socket Mode' 並啟用。產生一個具有 'connections:write' 權限範圍的 App-Level Token — 這就是 xapp-... Token。

2

設定 OAuth 權限範圍並安裝到工作區

進入 'OAuth & Permissions',新增必需的 Bot Token Scopes(chat:write、channels:history、channels:read、im:write、im:history、im:read、users:read、reactions:read、reactions:write、files:write 等)。點選 'Install to Workspace' 並授權。複製 Bot User OAuth Token(xoxb-...)。然後進入 'Event Subscriptions',啟用事件訂閱並訂閱:message.channels、message.groups、message.im、message.mpim、app_mention、reaction_added、reaction_removed。

3

新增設定、啟動 Gateway 並邀請機器人

將 Slack 頻道設定新增到 ~/.openclaw/openclaw.json,填入 appToken 和 botToken。啟動 Gateway — 它將透過 Socket Mode 連接到 Slack。在 Slack 中輸入 '/invite @您的機器人名' 將機器人邀請到目標頻道。傳送訊息進行測試。

Slack 設定範例

config.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-YOUR_APP_TOKEN",
      "botToken": "xoxb-YOUR_BOT_TOKEN"
    }
  }
}

Slack 深入了解

架構概述

OpenClaw 透過兩種模式連接 Slack: • Socket Mode(預設)— 從您的伺服器向 Slack 發起 WebSocket 連接。無需公網 URL 或防火牆設定。適用於開發、內部部署和 NAT 後的環境。 • HTTP 模式(Events API)— Slack 將事件推送到您伺服器的 HTTPS 端點。需要公網可存取的 URL。更適合搭配負載平衡器的高可用性生產部署。 兩種模式下,機器人都會接收即時事件(訊息、表情回應、@提及)並透過 Slack API 回應。工作階段路由取決於上下文:私訊使用代理的主工作階段,頻道對話為每個頻道建立隔離的工作階段(agent:<agentId>:slack:channel:<channelId>),斜線命令則為每位使用者建立獨立工作階段。
Socket Mode 推薦用於大多數自託管情境 — 無需任何網路設定即可在防火牆和 NAT 後運作。
可透過環境變數設定 Token:SLACK_APP_TOKEN 和 SLACK_BOT_TOKEN,或在設定檔中設定。

建立 Slack 應用程式

設定 Slack 應用程式需要在 Slack API 入口網站中設定多個元件: 1. 前往 api.slack.com/apps,點選 'Create New App' → 'From scratch' 2. 為應用程式命名並選擇目標工作區 3. 啟用 Socket Mode(Settings → Socket Mode → Enable)。產生具有 connections:write 權限的 App-Level Token 4. 在 OAuth & Permissions 下新增 Bot Token Scopes: • chat:write、im:write — 傳送和管理訊息 • channels:history、groups:history、im:history、mpim:history — 讀取訊息歷史 • channels:read、groups:read、im:read、mpim:read — 讀取對話資訊 • users:read — 查詢使用者個人檔案 • reactions:read、reactions:write — 管理表情回應 • pins:read、pins:write — 管理釘選訊息 • emoji:read — 列出自訂表情 • files:write — 上傳檔案 5. 將應用程式安裝到工作區並複製 Bot Token(xoxb-...) 6. 啟用 Event Subscriptions 並訂閱機器人事件: • message.channels、message.groups、message.im、message.mpim • app_mention • reaction_added、reaction_removed • member_joined_channel、member_left_channel • channel_rename、pin_added、pin_removed 7. 可選:在 Slash Commands 下建立 /openclaw 斜線命令 8. 在 App Home 中啟用 Messages Tab 以支援私訊 提示:在建立應用程式時可使用提供的 App Manifest 一次性自動設定所有權限範圍和事件。
請妥善保管您的 Token。App Token(xapp-...)和 Bot Token(xoxb-...)可完全控制您的應用程式。如果洩露,請立即在 Slack API 入口網站中重新產生。
建立應用程式時使用 Manifest 選項可一步設定所有必需的權限範圍、事件和功能。
請確保啟用 Event Subscriptions 並訂閱必需的機器人事件。否則機器人會連線成功但無法接收任何訊息。

私訊安全(配對機制)

Slack 私訊策略控制誰可以與您的 AI 助手進行私訊互動。OpenClaw 支援兩種模式: • pairing(預設)— 未知的私訊傳送者會收到一個限時配對碼(1 小時後過期)。透過 'openclaw pairing approve slack <code>' 在終端機中審核。審核通過後即可自由對話。每個頻道最多 3 個待處理的配對請求。 • open — 任何人向機器人傳送私訊都會收到回覆。需要設定 dm.allowFrom=["*"] 才能生效。在大型工作區中請謹慎使用。 允許清單支援多種格式: • Slack 使用者 ID(如 "U01ABCDEF") • @使用者名稱參照 • 電子郵件地址 可透過 'openclaw pairing list slack' 查看待處理的配對請求。
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "dm": {
        "policy": "pairing",
        "allowFrom": ["U01ABCDEF", "user@company.com"]
      }
    }
  }
}
在多使用者工作區中使用配對策略可防止未授權的 AI 使用。每個配對碼在 1 小時後過期。
在 open 模式下,將 allowFrom 設為 ["*"] 允許所有使用者,或指定特定使用者 ID/電子郵件以限制存取。

頻道設定(群組策略)

頻道策略控制機器人在哪些 Slack 頻道中運作以及如何運作: 頂層 groupPolicy: • open — 機器人在所有被邀請的頻道中回應 • disabled — 機器人忽略所有頻道訊息 • allowlist — 機器人只在明確設定的頻道中回應 單頻道設定允許您精細調整各個頻道的行為: • allow — 在 allowlist 模式下啟用/停用該頻道 • requireMention — 機器人是否需要被 @提及才回應 • users — 該頻道的使用者允許清單 • skills — 限制該頻道可用的技能/工具 • systemPrompt — 該頻道的自訂 AI 指令 • allowBots — 是否處理來自其他機器人的訊息(預設:false) • enabled — 完全啟用/停用該頻道
openclaw.json
{
  "channels": {
    "slack": {
      "groupPolicy": "allowlist",
      "channels": {
        "C01ABCDEF": {
          "allow": true,
          "requireMention": true,
          "users": ["U01ABCDEF"],
          "skills": ["search", "docs"],
          "systemPrompt": "保持簡短且技術性的回答。"
        },
        "#general": {
          "allow": true,
          "requireMention": true
        }
      }
    }
  }
}
頻道鍵可以是頻道 ID(C01ABCDEF)或頻道名稱(#general)。使用 ID 更可靠,因為頻道重新命名後 ID 不會改變。
使用單頻道 systemPrompt 為不同頻道賦予 AI 不同的角色 — 例如在 #engineering 中技術化,在 #watercooler 中輕鬆隨意。

回覆討論串

OpenClaw 支援靈活的 Slack 回覆討論串功能,控制機器人在主頻道回覆還是建立討論串。 全域 replyToMode: • off(預設)— 在主頻道回覆。僅當觸發訊息已在討論串中時才使用討論串回覆。 • first — 第一則回覆進入討論串,後續回覆在主頻道。 • all — 所有回覆都作為討論串回覆傳送。 按聊天類型覆寫 replyToModeByChatType: • direct — 一對一私訊對話 • group — 群組私訊 / MPIM 對話 • channel — 標準 Slack 頻道 透過回覆標籤手動控制討論串: • [[reply_to_current]] — 回覆觸發機器人的那則訊息 • [[reply_to:<message_id>]] — 回覆指定訊息 ID
openclaw.json
{
  "channels": {
    "slack": {
      "replyToMode": "off",
      "replyToModeByChatType": {
        "direct": "all",
        "group": "first",
        "channel": "off"
      }
    }
  }
}
在活躍頻道中,使用 replyToMode: 'all' 將對話組織在討論串中,避免洗版主頻道。
按聊天類型覆寫設定可以讓私訊使用討論串但頻道回覆保持內嵌,反之亦然。

使用者 Token(可選)

除了 Bot Token,您還可以選擇性設定一個 User Token(xoxp-...)以取得增強的讀取權限。User Token 可提供更豐富的歷史記錄、釘選、表情回應、自訂表情和成員資訊資料。 Token 使用優先順序: • 讀取操作 — 優先使用 User Token;不可用時回退到 Bot Token • 寫入操作 — 預設始終使用 Bot Token userTokenReadOnly 旗標(預設:true)確保 User Token 永遠不會用於寫入操作。僅當您希望 AI 以使用者身份操作時才設為 false(需要 User Token 具有額外的寫入權限)。 要新增 User Token,在 OAuth & Permissions 的 'User Token Scopes' 下設定使用者 Token 權限 — 通常是唯讀權限如 channels:history、channels:read、users:read、reactions:read、pins:read、emoji:read、search:read。
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "userToken": "xoxp-...",
      "userTokenReadOnly": true
    }
  }
}
將 userTokenReadOnly 設為 false 允許 AI 以安裝使用者的身份執行寫入操作(傳送訊息、新增表情回應、釘選訊息)。僅在您了解安全影響的情況下啟用此選項。

斜線命令與 App Home

OpenClaw 支援 Slack 斜線命令和 App Home 設定: 斜線命令: 在 Slack API 入口網站的 'Slash Commands' 下建立 /openclaw 命令。在 Socket Mode 中無需設定請求 URL — Slack 透過 WebSocket 連接路由命令。如使用原生命令,可按需建立額外的斜線命令。 App Home: 在 App Home 下啟用 'Messages Tab',允許使用者從應用程式頁面直接與機器人私訊。這提供了簡潔、專用的一對一對話介面。 工作階段路由: • 私訊 → 主工作階段(agent:main:main) • 頻道訊息 → agent:<agentId>:slack:channel:<channelId> • 斜線命令 → agent:<agentId>:slack:slash:<userId> 用於 cron/CLI 的投遞目標: • user:<userId> — 向指定使用者傳送私訊 • channel:<channelId> — 傳送到指定頻道
openclaw.json
{
  "channels": {
    "slack": {
      "slashCommand": {
        "enabled": true,
        "name": "openclaw",
        "sessionPrefix": "slack:slash",
        "ephemeral": true
      }
    }
  }
}
暫態(ephemeral)斜線命令回應僅對呼叫者可見。設定 ephemeral: false 使回應對頻道中所有人可見。
必須在 App Home 中啟用 Messages Tab 才能使用私訊功能 — 否則使用者無法與機器人發起對話。

權限範圍(Scopes)

Slack 使用 OAuth 權限範圍來控制應用程式的能力。以下是必需和可選的權限範圍: Bot Token 必需權限: • chat:write — 傳送、更新和刪除訊息 • im:write — 開啟私訊對話 • channels:history、groups:history、im:history、mpim:history — 讀取訊息歷史 • channels:read、groups:read、im:read、mpim:read — 讀取對話資訊 • users:read — 查詢使用者個人檔案 • reactions:read、reactions:write — 讀取和新增表情回應 • pins:read、pins:write — 管理釘選訊息 • emoji:read — 列出工作區自訂表情 • files:write — 上傳檔案和媒體 User Token 可選權限(唯讀): • channels:history、groups:history、im:history、mpim:history — 增強的歷史存取 • channels:read、groups:read、im:read、mpim:read — 增強的對話資訊 • users:read — 使用者個人檔案查詢 • reactions:read、pins:read、emoji:read — 讀取表情回應、釘選、表情 • search:read — 搜尋訊息和檔案
先只設定 Bot Token 權限。僅當需要增強讀取能力(如 search:read)時再新增 User Token 及其權限。
提供的 App Manifest 包含所有推薦權限 — 在建立應用程式時使用它可以最快完成設定。

HTTP 模式(Events API)

如果您的 Gateway 可透過 HTTPS 公開存取,可以使用 HTTP 模式代替 Socket Mode。在 HTTP 模式下,Slack 將事件直接推送到您伺服器的端點。 設定步驟: 1. 建立 Slack 應用程式但不要啟用 Socket Mode 2. 從 'Basic Information' → 'App Credentials' 取得 Signing Secret 3. 安裝應用程式以取得 Bot Token 4. 在 'Event Subscriptions' 中將 Request URL 設為:https://您的閘道位址/slack/events 5. 在 'Interactivity & Shortcuts' 中設定相同的 Request URL 6. 在 'Slash Commands' 中將 Request URL 設為同一端點 HTTP 模式不需要 App Token — 它使用 Signing Secret 來驗證傳入的請求確實來自 Slack。
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "mode": "http",
      "botToken": "xoxb-...",
      "signingSecret": "your-signing-secret",
      "webhookPath": "/slack/events"
    }
  }
}
在 HTTP 模式下,所有三個端點(Events、Interactivity、Slash Commands)都應指向同一 URL:https://您的位址/slack/events。
HTTP 模式使用 Signing Secret(非 App Token)。Signing Secret 透過 HMAC-SHA256 簽章驗證請求真實性。
HTTP 模式需要有效的 SSL 憑證和公網可存取的端點。請確保您的伺服器可從 Slack 的 IP 範圍存取。

進階設定

OpenClaw 提供多項進階設定用於精細調整 Slack 行為: 歷史與上下文: • historyLimit(預設:50)— AI 上下文中包含的最近訊息數。設為 0 停用歷史注入。 文字與媒體: • textChunkLimit(預設:4000)— 長回覆每則訊息的最大字元數 • chunkMode: "newline" — 按段落邊界分割而非硬字元限制 • mediaMaxMb(預設:20)— 最大媒體檔案大小(MB) 工具操作閘控: 控制代理可以執行哪些 Slack 操作: • reactions: true — 新增和列出表情回應 • messages: true — 讀取/傳送/編輯/刪除訊息 • pins: true — 釘選/取消釘選/列出釘選訊息 • memberInfo: true — 查詢工作區成員資訊 • emojiList: true — 列出工作區自訂表情 安全注意事項: • 寫入操作預設使用 Bot Token,維持應用程式層級的權限隔離 • 當 userTokenReadOnly 為 false 且設定了 User Token 時,寫入操作可能使用 User Token(以安裝使用者身份操作) • 在頻道上啟用 allowBots 時,結合 requireMention 和使用者允許清單以防止機器人之間的回應迴圈
openclaw.json
{
  "channels": {
    "slack": {
      "historyLimit": 50,
      "textChunkLimit": 4000,
      "chunkMode": "newline",
      "mediaMaxMb": 20,
      "actions": {
        "reactions": true,
        "messages": true,
        "pins": true,
        "memberInfo": true,
        "emojiList": true
      }
    }
  }
}

Slack 設定參考

enabled
Type: booleanDefault: true

啟用或停用 Slack 頻道

mode
Type: stringDefault: "socket"

連線模式。選項:socket(Socket Mode,預設)、http(Events API)

appToken
Type: stringDefault: ""

Slack App-Level Token(xapp-...),Socket Mode 需要。也可使用 SLACK_APP_TOKEN 環境變數

botToken
Type: stringDefault: ""

Slack Bot User OAuth Token(xoxb-...)。也可使用 SLACK_BOT_TOKEN 環境變數

userToken
Type: stringDefault: ""

可選的 Slack User Token(xoxp-...),用於增強讀取權限

userTokenReadOnly
Type: booleanDefault: true

限制 User Token 為唯讀操作。設為 false 允許以安裝使用者身份執行寫入操作

signingSecret
Type: stringDefault: ""

HTTP 模式請求驗證的 Signing Secret(來自 Basic Information → App Credentials)

webhookPath
Type: stringDefault: "/slack/events"

HTTP 模式的 Webhook 端點路徑

dm.policy
Type: stringDefault: "pairing"

私訊存取控制策略。選項:pairing(基於配對碼審核)、open(任何人可私訊)

dm.allowFrom
Type: string[]Default: []

允許向機器人傳送私訊的使用者。支援使用者 ID、@使用者名稱、電子郵件和萬用字元(*)

dm.enabled
Type: booleanDefault: true

是否接受私訊

dm.groupEnabled
Type: booleanDefault: false

啟用群組私訊(MPIM)處理

dm.groupChannels
Type: string[]Default: []

允許的群組私訊頻道 ID

groupPolicy
Type: stringDefault: "open"

頻道處理策略。選項:open(所有頻道)、disabled(無頻道)、allowlist(僅設定的頻道)

channels.<id>.allow
Type: booleanDefault: true

在 allowlist 模式下允許或拒絕此頻道

channels.<id>.requireMention
Type: booleanDefault: false

機器人是否需要 @提及才在此頻道中回應

channels.<id>.users
Type: string[]Default: []

此頻道的使用者允許清單(ID、@使用者名稱或電子郵件)

channels.<id>.skills
Type: string[]Default: []

限制此頻道可用的技能(空 = 所有技能)

channels.<id>.systemPrompt
Type: stringDefault: ""

此頻道的自訂 AI 系統提示

channels.<id>.allowBots
Type: booleanDefault: false

在此頻道中處理來自其他機器人的訊息

replyToMode
Type: stringDefault: "off"

回覆討論串模式。選項:off(主頻道)、first(首則回覆以討論串傳送)、all(所有回覆以討論串傳送)

replyToModeByChatType
Type: objectDefault: {}

按聊天類型覆寫討論串模式。鍵:direct、group、channel。值:off、first、all

reactionNotifications
Type: stringDefault: "off"

哪些表情回應觸發代理通知。選項:off、own、all

historyLimit
Type: numberDefault: 50

AI 上下文中包含的最近訊息數量。設為 0 停用

textChunkLimit
Type: numberDefault: 4000

長 AI 回覆每則訊息的最大字元數

chunkMode
Type: stringDefault: "split"

長回覆的分割方式。選項:split(硬字元限制)、newline(段落邊界)

mediaMaxMb
Type: numberDefault: 20

最大媒體檔案大小(MB)

slashCommand.enabled
Type: booleanDefault: true

啟用斜線命令處理

slashCommand.name
Type: stringDefault: "openclaw"

斜線命令名稱(不含 /)

slashCommand.ephemeral
Type: booleanDefault: true

斜線命令回應是否僅對呼叫者可見

Slack 常見問題

Slack 故障排除

機器人在頻道中不回應

頻道被 groupPolicy 阻擋,或機器人不在允許清單中,或機器人未被邀請到頻道。

檢查 groupPolicy 設定。如果使用 'allowlist',請確保頻道 ID 或名稱已設定 'allow: true'。確認機器人已被邀請到頻道(/invite @您的機器人名)。檢查 Gateway 記錄中的 'blocked by group policy' 訊息。
傳送給機器人的私訊被忽略

私訊策略設為 'pairing' 且傳送者未被審核通過,或 App Home 中未啟用 Messages Tab。

如使用配對模式,透過 'openclaw pairing list slack' 查看待處理配對並透過 'openclaw pairing approve slack <code>' 審核。在 App Home 中啟用 Messages Tab(Slack API 入口網站 → App Home → Show Tab)。確認 dm.policy 未設為 'disabled'。
Socket Mode 連線失敗或持續斷開

App Token(xapp-...)無效或已過期,或伺服器與 Slack 之間存在網路問題。

確認 App Token 正確且具有 connections:write 權限。如需要可在 Slack API 入口網站中重新產生。檢查 Gateway 記錄中的 WebSocket 連線錯誤。確保伺服器能穩定存取 wss://wss-primary.slack.com。
API 錯誤(missing_scope 或 invalid_auth)

Bot Token 缺少必需的 OAuth 權限範圍,或 Token 已被撤銷/重新產生。

前往 Slack API 入口網站的 OAuth & Permissions 確認所有必需權限已新增。如果最近新增了權限,需要重新將應用程式安裝到工作區以套用新權限。檢查設定中的 Token 與入口網站中的目前 Token 是否一致。
斜線命令顯示 'dispatch_failed' 或不出現

未在 Slack API 入口網站中建立斜線命令,或請求 URL 設定錯誤(HTTP 模式)。

在 API 入口網站的 Slash Commands 下建立 /openclaw 命令。Socket Mode 不需要 URL。HTTP 模式需將 Request URL 設為 https://您的位址/slack/events。新增命令後可能需要重新安裝應用程式到工作區。
訊息被截斷或分成多段傳送

較長的 AI 回覆超過了 OpenClaw 的 textChunkLimit(預設 4,000 字元),會被自動分成多則訊息傳送。注意:Slack 自身的限制為每個 section block 3,000 字元,每則訊息 text 欄位 40,000 字元。

這是預期行為。調整 textChunkLimit 控制分塊大小(預設:4000)。設定 chunkMode 為 'newline' 按段落邊界分割以取得更自然的分塊效果。也可透過 systemPrompt 指示 AI 保持回覆簡潔。