Skip to content

Synology Chat(插件)

状态:通过插件支持,作为使用 Synology Chat webhook 的私信渠道。 插件接收来自 Synology Chat 出站 webhook 的消息,并通过 Synology Chat 入站 webhook 发送回复。

需要安装插件

Synology Chat 基于插件实现,不属于默认核心渠道。

从本地 checkout 安装:

bash
openclaw plugins install ./extensions/synology-chat

详情:插件系统

快速配置

想把小龙虾放进你的群晖,按以下步骤操作:

  1. 安装并启用 Synology Chat 插件。
    • openclaw onboard 现在会在与 openclaw channels add 相同的渠道设置列表中显示 Synology Chat。
    • 非交互式配置:openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  2. 在 Synology Chat 集成中:
    • 创建一个入站 webhook 并复制其 URL。
    • 创建一个出站 webhook 并设置你的 secret token。
  3. 将出站 webhook URL 指向你的 OpenClaw Gateway:
    • 默认:https://gateway-host/webhook/synology
    • 或使用自定义的 channels.synology-chat.webhookPath
  4. 在 OpenClaw 中完成配置:
    • 引导式:openclaw onboard
    • 直接配置:openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  5. 重启 Gateway 并向 Synology Chat 机器人发送私信。

最小配置示例:

json5
{
  channels: {
    "synology-chat": {
      enabled: true,
      token: "synology-outgoing-token",
      incomingUrl: "https://nas.example.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=...",
      webhookPath: "/webhook/synology",
      dmPolicy: "allowlist",
      allowedUserIds: ["123456"],
      rateLimitPerMinute: 30,
      allowInsecureSsl: false,
    },
  },
}

环境变量

对于默认账号,可以使用以下环境变量:

  • SYNOLOGY_CHAT_TOKEN
  • SYNOLOGY_CHAT_INCOMING_URL
  • SYNOLOGY_NAS_HOST
  • SYNOLOGY_ALLOWED_USER_IDS(逗号分隔)
  • SYNOLOGY_RATE_LIMIT
  • OPENCLAW_BOT_NAME

配置文件中的值会覆盖环境变量。

私信策略与访问控制

  • dmPolicy: "allowlist" 是推荐的默认值。
  • allowedUserIds 接受 Synology 用户 ID 列表(或逗号分隔字符串)。
  • allowlist 模式下,空的 allowedUserIds 列表被视为配置错误,webhook 路由不会启动(如需允许所有人,使用 dmPolicy: "open")。
  • dmPolicy: "open" 允许任何发送方。
  • dmPolicy: "disabled" 屏蔽所有私信。
  • 回复接收方绑定默认使用稳定的数字 user_idchannels.synology-chat.dangerouslyAllowNameMatching: true 是应急兼容模式,会重新启用可变的用户名/昵称查找用于回复投递。
  • 配对批准方式:
    • openclaw pairing list synology-chat
    • openclaw pairing approve synology-chat <CODE>

出站投递

使用数字 Synology Chat 用户 ID 作为目标。

示例:

bash
openclaw message send --channel synology-chat --target 123456 --text "Hello from OpenClaw"
openclaw message send --channel synology-chat --target synology-chat:123456 --text "Hello again"

支持基于 URL 的文件投递发送媒体。

多账号

channels.synology-chat.accounts 下支持多个 Synology Chat 账号。每个账号可以独立覆盖 token、incoming URL、webhook 路径、私信策略和频率限制。私信会话按账号和用户隔离,同一数字 user_id 在两个不同 Synology 账号上不共享对话记录。

每个已启用的账号必须有独立的 webhookPath。OpenClaw 现在会拒绝完全重复的路径,并拒绝仅继承共享 webhook 路径的命名账号启动。如确实需要传统继承模式,可在该账号或 channels.synology-chat 上设置 dangerouslyAllowInheritedWebhookPath: true,但仍会拒绝完全重复路径(故障关闭)。建议每个账号显式指定路径。

json5
{
  channels: {
    "synology-chat": {
      enabled: true,
      accounts: {
        default: {
          token: "token-a",
          incomingUrl: "https://nas-a.example.com/...token=...",
        },
        alerts: {
          token: "token-b",
          incomingUrl: "https://nas-b.example.com/...token=...",
          webhookPath: "/webhook/synology-alerts",
          dmPolicy: "allowlist",
          allowedUserIds: ["987654"],
        },
      },
    },
  },
}

安全注意事项

  • 保管好 token,泄露后立即轮换。
  • 除非明确信任自签名本地 NAS 证书,否则保持 allowInsecureSsl: false
  • 入站 webhook 请求经过 token 验证和按发送方限速。
  • 生产环境推荐使用 dmPolicy: "allowlist"
  • 除非明确需要传统用户名回复投递,否则保持 dangerouslyAllowNameMatching 关闭。
  • 除非在多账号场景中明确接受共享路径路由风险,否则保持 dangerouslyAllowInheritedWebhookPath 关闭。