本页内容
本页内容
主流消息传递
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 调用。
中继 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 秒。可恢复的启动、等待启动和断开连接失败会一直重试,直到频道停止。永久性的账户和凭据错误(例如身份验证无效、令牌被撤销或缺少权限范围)会快速失败,而不会无限重试。
本页有帮助吗?