OpenClaw 中文文档 — Discord 与 Slack 接入

本文覆盖 Discord 和 Slack 两个渠道的完整接入配置。前者定位开发者社区和游戏社群,后者面向企业团队协作场景。两者的接入复杂度都高于 Telegram,但功能也更丰富。

Discord

接入架构

Discord 渠道通过官方 Discord Gateway 接入,使用 discord.js 框架。支持服务器频道和私信两种通信模式。

配置流程

Discord 的设置步骤较多,涉及 Developer Portal 操作:

第 1 步:创建应用和 Bot

Discord Developer Portal 创建应用,进入 Bot 页面设置用户名。

第 2 步:启用特权意图

意图 必要性 说明
Message Content Intent 必需 不开则收到的消息内容为空
Server Members Intent 推荐 角色白名单和名称解析所需
Presence Intent 可选 仅在线状态更新需要

第 3 步:获取 Bot Token 和 ID

  • Bot 页面点 Reset Token 获取 Bot Token
  • 开启 Developer Mode(User Settings → Advanced)
  • 右键服务器图标获取 Server ID
  • 右键自己头像获取 User ID

第 4 步:邀请 Bot 到服务器

OAuth2 页面生成邀请 URL,勾选 bot + applications.commands,权限选择:View Channels、Send Messages、Read Message History、Embed Links、Attach Files。

第 5 步:配置 OpenClaw

{
  channels: {
    discord: {
      enabled: true,
      token: "YOUR_BOT_TOKEN",
    },
  },
}

环境变量备选:DISCORD_BOT_TOKEN=...(仅默认账户)。Token 也支持 SecretRef 值。

第 6 步:配对

需要先在 Discord 服务器的 Privacy Settings 中开启 Direct Messages,否则 Bot 无法发送配对码。

openclaw pairing list discord
openclaw pairing approve discord <CODE>

服务器工作区配置

Discord 的一个特色是可以将服务器设置为完整的工作区,每个频道拥有独立的 Agent 会话:

{
  channels: {
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        "SERVER_ID": {
          requireMention: true,
          users: ["USER_ID"],
        },
      },
    },
  },
}

值得注意的是,Discord 使用 guilds 而非 groups 作为服务器配置键——这与 Discord 内部术语一致(Discord 称服务器为 Guild)。

私人服务器(仅自己和 Bot)可设置 requireMention: false,无需 @提及即可回复。

特性概述

  • 线程支持:每个线程可有独立会话
  • 按频道配置:不同频道可配不同工具权限和系统提示词
  • 斜杠命令:支持注册和使用
  • 多账户:支持多个 Discord Bot 账户

Slack

接入架构

Slack 渠道基于 Bolt SDK,支持两种连接模式:Socket Mode(默认,推荐)和 HTTP Events API。

Socket Mode 配置

Socket Mode 不需要公网入口,适合大多数场景。

第 1 步:创建 Slack 应用

  • 启用 Socket Mode
  • 创建 App Token(xapp-...),权限 connections:write
  • 安装应用并获取 Bot Token(xoxb-...

第 2 步:订阅事件

订阅 Bot 事件:app_mentionmessage.channelsmessage.groupsmessage.immessage.mpimreaction_addedreaction_removed 等。同时启用 App Home 的 Messages Tab。

第 3 步:配置

{
  channels: {
    slack: {
      enabled: true,
      mode: "socket",
      appToken: "xapp-...",
      botToken: "xoxb-...",
    },
  },
}

HTTP Events API 配置

适合需要公网 webhook 的场景:

{
  channels: {
    slack: {
      enabled: true,
      mode: "http",
      botToken: "xoxb-...",
      signingSecret: "your-signing-secret",
      webhookPath: "/slack/events",
    },
  },
}

多账户 HTTP 模式下,每个账户需要唯一的 webhookPath 以避免冲突。

Token 模型

模式 所需 Token
Socket Mode botToken + appToken
HTTP botToken + signingSecret

可选的 userTokenxoxp-...)默认为只读行为,用于操作/目录读取。

访问控制

频道策略

频道白名单使用稳定的频道 ID。名称到 ID 的解析在启动时进行(需 Token 有相应权限)。默认使用 ID 优先匹配,直接名称匹配需显式启用 dangerouslyAllowNameMatching: true

{
  channels: {
    slack: {
      groupPolicy: "allowlist",
      channels: {
        "C01234567": {
          requireMention: true,
          users: ["U01234567"],
        },
      },
    },
  },
}

按频道配置支持的选项:requireMentionusers(白名单)、allowBotsskillssystemPrompttoolstoolsBySender

特色功能

交互式回复

{
  channels: { slack: { capabilities: { interactiveReplies: true } } },
}

启用后,Agent 可以生成 Slack Block Kit 控件:

  • [[slack_buttons: Approve:approve, Reject:reject]]
  • [[slack_select: Choose | Option1:val1, Option2:val2]]

交互回调通过 Slack 交互事件路径路由回 Agent。如果生成的区块超过 Slack 限制,自动回退到纯文本。

原生流式传输

通过 Slack Agents and AI Apps API 实现实时流式输出。需要 assistant:write 权限和 Agents and AI Apps 功能启用。

流程:首个分块启动流(chat.startStream)→ 后续分块追加(chat.appendStream)→ 结束(chat.stopStream)。媒体和非文本回退到正常投递。

命令系统

Slack 的原生命令自动模式默认关闭(与 Telegram 不同)。需要显式启用:

{ channels: { slack: { commands: { native: true } } } }

命令菜单自适应渲染:5 个以下选项用按钮,6-100 用静态选择菜单,100 以上用异步过滤。

线程行为

  • thread.historyScope 默认 thread
  • thread.initialHistoryLimit 控制新线程会话的历史注入量(默认 20)
  • replyToMode 控制回复线程行为

值得注意的差异:Slack 的 replyToMode="off" 会禁用所有回复线程(包括显式标签),而 Telegram 在 off 下仍处理显式标签。这反映了平台差异——Slack 线程将消息从频道流中隐藏,Telegram 回复在主流中可见。

故障排查

症状 检查项
频道无回复 groupPolicy → 频道白名单 → requireMention → users
私信被忽略 dm.enabled → dmPolicy → 配对/白名单
Socket 连不上 Bot Token + App Token + Socket Mode 启用状态
HTTP 无事件 signing secret → webhook 路径 → Slack Request URL

架构对比

维度 Discord Slack
框架 discord.js Bolt SDK
连接模式 Gateway Socket Mode / HTTP
群组模型 Guild → Channel Workspace → Channel → Thread
白名单标识 数字 ID Channel ID (C*) / User ID (U*)
交互控件 基础按钮 Block Kit(按钮、菜单、模态框)
流式传输 消息编辑 原生 Streaming API
命令 斜杠命令 斜杠命令 + 自适应菜单
配置复杂度 中等 较高

从架构层面来看,Slack 的功能更丰富(Block Kit、原生流式 API、自适应命令菜单),但配置复杂度也更高。Discord 相对简洁,但服务器工作区模式为每个频道提供了良好的会话隔离。

本文是渠道篇的第三篇。下一篇覆盖 iMessage 和 Signal 的接入配置。


完整中文文档:OpenClaw 中文文档

GitHub 仓库:openclaw/openclaw

posted @ 2026-03-23 22:08  wakeupxm  阅读(2)  评论(0)    收藏  举报