8.16 广播群组

Broadcast Groups(广播群组)让你用一条消息同时投递到多个目的地(跨不同渠道)。适合统一通知、事故告警、跨团队同步等场景。

状态

实验性(Experimental)。新增于 2026.1.9。

概述

  • 一个 broadcast group 是一组 {channel, to} 目标。
  • 投递时网关进行 fanout:对每个目标独立发送。
  • 仅影响外发消息,不会合并会话或消息上下文。

使用场景

  • 管理员通知:同时发到 Slack + Telegram
  • 多渠道状态更新:公告推送到多个空间/群组
  • 多区域/多团队同步:同一消息分发给不同群组
  • 紧急告警:在所有通信平台发布关键通知

创建广播群组

在配置中声明广播组(示例:ops):

{
  channels: {
    broadcast: {
      groups: {
        ops: [
          { channel: "slack", to: "channel:C1234567890" },
          { channel: "telegram", to: "-1001234567890" },
          { channel: "discord", to: "channel:123456789012345678" }
        ]
      }
    }
  }
}

每个目标遵循该渠道的 to 格式(如 Slack 的 channel ID、Telegram 的 chat ID、Discord 的 channel ID)。

发送到广播群组

通过 CLI 发送:

openclaw message send --channel broadcast:ops   --message "Maintenance starts in 5 minutes. Expect downtime."

在代理中使用 message 工具:

await message({
  channel: "broadcast:ops",
  message: "Maintenance starts in 5 minutes. Expect downtime."
});

工作原理

Fanout

网关会把一条消息展开为多条“单播”消息,并交由各渠道适配器发送。失败不会阻塞其它目的地。

顺序

同一目标的顺序会保持,但跨目标不保证一致顺序。

会话模型

  • 每个目标使用自己的会话键(由频道 + 目标 ID 派生)。
  • 广播不会产生统一的“组会话”。
  • 回复仍回到各自的渠道/空间/群组。

兼容性

  • 可用于所有接受 channel 的路径:CLI、工具调用、cron 交付等。
  • 配对/权限策略仍由各渠道自身规则控制。

故障排除

  • 若报 “unknown broadcast group”,检查配置中是否存在该组名。
  • 个别目标发送失败,请查看对应渠道日志与权限设置。