本页内容

本页内容

主流消息传递

Slack 运输

哪种 Slack 传输适合您的部署形状,以及套接字模式在运行时的行为方式。

选择传输方式

Socket Mode 和 HTTP Request URLs 在消息、斜杠命令、App Home 和交互性方面功能齐全。请选择部署形态,而不是按功能选择。

关注点 Socket Mode(默认) HTTP 请求 URL
公共网关 URL 不需要 需要(DNS、TLS、反向代理或隧道)
出站网络 必须能够访问至 wss-primary.slack.com 的出站 WSS 无出站 WS;仅入站 HTTPS
所需令牌 机器人身份:机器人令牌 + 具有 connections:write 权限的应用级令牌;用户身份:用户令牌 + 应用级令牌 机器人身份:机器人令牌 + 签名密钥;用户身份:用户令牌 + 签名密钥
开发笔记本 / 防火墙后方 开箱即用 需要公共隧道(ngrok、Cloudflare Tunnel、Tailscale Funnel)或预发布网关
水平扩展 每台主机上的每个应用使用一个 Socket Mode 会话;多个网关需要使用不同的 Slack 应用 无状态 POST 处理程序;多个网关副本可以在负载均衡器后共享一个应用
单个网关上的多账户 支持;每个账户都会建立自己的 WS 连接 支持;每个账户都需要唯一的 webhookPath(默认为 /slack/events),以避免注册冲突
斜杠命令传输 通过 WS 连接交付; slash_commands[].url 被忽略 Slack 发布到 slash_commands[].url;命令调度需要该字段
请求签名 不使用(身份验证依赖应用级令牌) Slack 会对每个请求进行签名;OpenClaw 使用 signingSecret 进行验证
连接断开时恢复 Slack SDK 自动重连使能; OpenClaw 还会以有限的退避重新启动失败的套接字模式会话。适用固定的 15 秒客户端 pong 超时。 无需断开持久连接;重试是针对来自 Slack 的每个请求

中继模式

中继模式将 Slack 入口与 OpenClaw gateway 分离。受信任的路由器拥有唯一的 Slack Socket Mode 连接,选择目标 gateway,并通过已认证的 websocket 转发带类型的事件。gateway 仍然使用自己的 bot token 来执行外发的 Slack Web API 调用。

json5
{  channels: {    slack: {      mode: "relay",      botToken: { source: "env", provider: "default", id: "SLACK_BOT_TOKEN" },      relay: {        url: "wss://router.example.com/gateway/ws",        authToken: { source: "env", provider: "default", id: "SLACK_RELAY_AUTH_TOKEN" },        gatewayId: "team-gateway",      },    },  },}

中继 URL 必须使用 wss://,除非它以 localhost 为目标。将承载令牌和路由器路由表视为 Slack 授权边界的一部分:路由事件作为授权激活进入正常的 Slack 消息处理程序。 websocket hello 帧中路由器提供的 slack_identity 可以设置默认的出站用户名和图标;调用者提供的显式身份仍然获胜。中继连接以与套接字模式相同的有界退避时间重新连接,并在断开连接时清除路由器提供的身份。

中继 WebSocket 连接遵循网关主机的代理环境(HTTPS_PROXY、HTTP_PROXY、ALL_PROXY、小写变体和 NO_PROXY)。配置代理时,wss:// 中继使用 HTTP CONNECT 隧道。匹配的 NO_PROXY 条目或本地主机 ws:// URL 直接连接。报告代理错误,而不是默默地退回到直接中继连接。

Socket Mode 传输调优

OpenClaw 将 Socket Mode 的 Slack SDK 客户端 pong 超时设置为 15 秒。这是固定的内部默认值,操作员无法配置。

注意:

  • channels.slack.socketMode 对象(包括 clientPingTimeout、serverPingTimeout 和 pingPongLoggingEnabled)已弃用,运行时不再读取。openclaw doctor 会针对已弃用的布局调优配置项显示一般性提示,而不是显示逐项路径。openclaw doctor --fix 会移除这些字段在任何位置的配置,包括频道根目录和 accounts.<accountId> 下,并在 socketMode 对象为空后将其删除。你在其中添加的任何其他键都会保留,因此请手动删除。
  • 应用消息和事件仍属于应用状态,而不是传输存活信号。
  • Socket Mode 重启退避时间从约 2 秒开始,最大约为 30 秒。可恢复的启动、等待启动和断开连接失败会一直重试,直到频道停止。永久性的账户和凭据错误(例如身份验证无效、令牌被撤销或缺少权限范围)会快速失败,而不会无限重试。
本页有帮助吗?