Skip to main content

Synology Chat

Synology Chat is useful when the NAS is already part of your internal collaboration stack and you want a lightweight webhook bridge instead of a full separate chat server. Fased accepts inbound events from Synology Chat outgoing webhooks and replies through the paired incoming webhook URL. Status: bundled channel extension as a DM-focused channel backed by Synology Chat webhooks.

Setup from Agent > Channels

Synology Chat ships with Fased as a local bundled channel extension. You do not need to download an npm package in a normal install. Open Agents, select the Agent, then use Agent > Channels > Synology Chat. Enter the outgoing token and incoming webhook URL, save the channel, then restart the gateway if the UI reports that the runtime still needs to load.

Quick setup

This integration is simplest when you keep it allowlisted and private. Start with one known user ID, then widen access only if you actually need it.
  1. In Synology Chat integrations:
    • Create an incoming webhook and copy its URL.
    • Create an outgoing webhook with your secret token.
  2. Point the outgoing webhook URL to your Fased gateway:
    • https://gateway-host/webhook/synology by default.
    • Or your custom channels.synology-chat.webhookPath.
  3. Configure Agent > Channels > Synology Chat in Fased.
  4. Restart the gateway if the UI asks for it, then send a DM to the Synology Chat bot.
Minimal config:
{
  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,
    },
  },
}

Environment variables

For the default account, you can use env vars:
  • SYNOLOGY_CHAT_TOKEN
  • SYNOLOGY_CHAT_INCOMING_URL
  • SYNOLOGY_NAS_HOST
  • SYNOLOGY_ALLOWED_USER_IDS (comma-separated)
  • SYNOLOGY_RATE_LIMIT
  • FASED_BOT_NAME
Config values override env vars.

DM policy and access control

  • dmPolicy: "allowlist" is the recommended default.
  • allowedUserIds accepts a list (or comma-separated string) of Synology user IDs.
  • In allowlist mode, an empty allowedUserIds list is treated as misconfiguration and the webhook route will not start (use dmPolicy: "open" for allow-all).
  • dmPolicy: "open" allows any sender.
  • dmPolicy: "disabled" blocks DMs.
  • Pairing approvals work with:
    • fased pairing list synology-chat
    • fased pairing approve synology-chat <CODE>

Outbound delivery

Use numeric Synology Chat user IDs as targets. Examples:
fased message send --channel synology-chat --target 123456 --message "Hello from Fased"
fased message send --channel synology-chat --target synology-chat:123456 --message "Hello again"
Media sends are supported by URL-based file delivery.

Multi-account

Multiple Synology Chat accounts are supported under channels.synology-chat.accounts. Each account can override token, incoming URL, webhook path, DM policy, and limits.
{
  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"],
        },
      },
    },
  },
}

Security notes

  • Keep token secret and rotate it if leaked.
  • Keep allowInsecureSsl: false unless you explicitly trust a self-signed local NAS cert.
  • Inbound webhook requests are token-verified and rate-limited per sender.
  • Prefer dmPolicy: "allowlist" for production.