Synology Chat(插件)

状态:通过插件支持作为直接消息频道,使�?Synology Chat webhook�? 插件接受来自 Synology Chat 出站 webhook 的入站消息,并通过 Synology Chat 入站 webhook 发送回复�?

需要插�?

Synology Chat 基于插件,不属于默认核心频道安装�?

从本地检出安装:

openclaw plugins install ./extensions/synology-chat

详情:Plugins

快速设�?

  1. 安装并启�?Synology Chat 插件�?
  2. �?Synology Chat 集成中:
    • 创建一个入�?webhook 并复制其 URL�?
    • 使用你的密钥令牌创建一个出�?webhook�?
  3. 将出�?webhook URL 指向你的 OpenClaw 网关�?
    • 默认 https://gateway-host/webhook/synology�?
    • 或你自定义的 channels.synology-chat.webhookPath�?
  4. �?OpenClaw 中配�?channels.synology-chat�?
  5. 重启网关并向 Synology Chat 机器人发送私聊�?

最小配置:

{
  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" 阻止私聊�?
  • 配对批准可以�?
    • openclaw pairing list synology-chat
    • openclaw pairing approve synology-chat <CODE>

出站传�?

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

示例�?

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 账户�? 每个账户可以覆盖令牌、入�?URL、webhook 路径、私聊策略和限制�?

{
  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 请求按发送者进行令牌验证和速率限制�?
  • 生产环境优先使用 dmPolicy: "allowlist"�?