Developer and self-hosted

Synology Chat

Status: gebundeld Plugin voor direct-message-kanaal dat Synology Chat-webhooks gebruikt. De Plugin accepteert inkomende berichten van uitgaande webhooks van Synology Chat en verstuurt antwoorden via een inkomende webhook van Synology Chat.

Gebundelde Plugin

Synology Chat wordt meegeleverd als gebundelde Plugin in huidige OpenClaw-releases, dus normale pakketbuilds hebben geen aparte installatie nodig.

Als je een oudere build gebruikt of een aangepaste installatie waarin Synology Chat is uitgesloten, installeer deze dan handmatig:

Installeren vanuit een lokale checkout:

openclaw plugins install ./path/to/local/synology-chat-plugin

Details: Plugins

Snelle installatie

  1. Zorg dat de Synology Chat-Plugin beschikbaar is.
    • Huidige pakketversies van OpenClaw leveren deze al mee.
    • Oudere/aangepaste installaties kunnen deze handmatig toevoegen vanuit een source-checkout met de bovenstaande opdracht.
    • openclaw onboard toont Synology Chat nu in dezelfde lijst voor kanaalinstellingen als openclaw channels add.
    • Niet-interactieve installatie: openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  2. In Synology Chat-integraties:
    • Maak een inkomende webhook en kopieer de URL.
    • Maak een uitgaande webhook met je geheime token.
  3. Laat de URL van de uitgaande webhook naar je OpenClaw-Gateway wijzen:
    • https://gateway-host/webhook/synology standaard.
    • Of je aangepaste channels.synology-chat.webhookPath.
  4. Rond de installatie af in OpenClaw.
    • Begeleid: openclaw onboard
    • Direct: openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
  5. Herstart de Gateway en stuur een DM naar de Synology Chat-bot.

Details voor webhook-authenticatie:

  • OpenClaw accepteert het token van de uitgaande webhook uit body.token, daarna ?token=..., en daarna headers.
  • Geaccepteerde headervormen:
    • x-synology-token
    • x-webhook-token
    • x-openclaw-token
    • Authorization: Bearer <token>
  • Lege of ontbrekende tokens falen gesloten.

Minimale configuratie:

{
  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,
    },
  },
}

Omgevingsvariabelen

Voor het standaardaccount kun je env vars gebruiken:

  • SYNOLOGY_CHAT_TOKEN
  • SYNOLOGY_CHAT_INCOMING_URL
  • SYNOLOGY_NAS_HOST
  • SYNOLOGY_ALLOWED_USER_IDS (komma-gescheiden)
  • SYNOLOGY_RATE_LIMIT
  • OPENCLAW_BOT_NAME

Configuratiewaarden overschrijven env vars.

SYNOLOGY_CHAT_INCOMING_URL kan niet worden ingesteld vanuit een workspace-.env; zie Workspace-.env-bestanden.

DM-beleid en toegangscontrole

  • dmPolicy: "allowlist" is de aanbevolen standaard.
  • allowedUserIds accepteert een lijst (of komma-gescheiden string) van Synology-gebruikers-ID's.
  • In de modus allowlist wordt een lege lijst allowedUserIds als misconfiguratie behandeld en zal de webhookroute niet starten (gebruik dmPolicy: "open" met allowedUserIds: ["*"] om iedereen toe te staan).
  • dmPolicy: "open" staat publieke DM's alleen toe wanneer allowedUserIds "*" bevat; met beperkende vermeldingen kunnen alleen overeenkomende gebruikers chatten.
  • dmPolicy: "disabled" blokkeert DM's.
  • Koppeling van antwoordontvangers blijft standaard gebaseerd op stabiele numerieke user_id. channels.synology-chat.dangerouslyAllowNameMatching: true is een break-glass-compatibiliteitsmodus die opzoeking via veranderbare gebruikersnaam/bijnaam opnieuw inschakelt voor antwoordbezorging.
  • Koppelingsgoedkeuringen werken met:
    • openclaw pairing list synology-chat
    • openclaw pairing approve synology-chat &lt;CODE&gt;

Uitgaande bezorging

Gebruik numerieke Synology Chat-gebruikers-ID's als doelen.

Voorbeelden:

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"
openclaw message send --channel synology-chat --target synology:123456 --text "Short prefix"

Mediaverzendingen worden ondersteund via bestandsbezorging op basis van URL's. Uitgaande bestands-URL's moeten http of https gebruiken, en privé- of anderszins geblokkeerde netwerkdoelen worden geweigerd voordat OpenClaw de URL doorstuurt naar de NAS-webhook.

Meerdere accounts

Meerdere Synology Chat-accounts worden ondersteund onder channels.synology-chat.accounts. Elk account kan token, inkomende URL, webhookpad, DM-beleid en limieten overschrijven. Direct-message-sessies zijn per account en gebruiker geïsoleerd, zodat dezelfde numerieke user_id op twee verschillende Synology-accounts geen transcriptiestatus deelt. Geef elk ingeschakeld account een eigen webhookPath. OpenClaw weigert nu dubbele exacte paden en weigert genoemde accounts te starten die in configuraties met meerdere accounts alleen een gedeeld webhookpad erven. Als je bewust verouderde overerving nodig hebt voor een genoemd account, stel dan dangerouslyAllowInheritedWebhookPath: true in op dat account of bij channels.synology-chat, maar dubbele exacte paden worden nog steeds fail-closed geweigerd. Geef de voorkeur aan expliciete paden per account.

{
  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"],
        },
      },
    },
  },
}

Beveiligingsnotities

  • Houd token geheim en roteer het als het is gelekt.
  • Houd allowInsecureSsl: false tenzij je expliciet een zelfondertekend lokaal NAS-certificaat vertrouwt.
  • Inkomende webhookverzoeken worden per afzender met token geverifieerd en aan snelheidslimieten onderworpen.
  • Controles op ongeldige tokens gebruiken constante-tijd geheime vergelijking en falen gesloten.
  • Geef voor productie de voorkeur aan dmPolicy: "allowlist".
  • Houd dangerouslyAllowNameMatching uitgeschakeld tenzij je expliciet verouderde antwoordbezorging op basis van gebruikersnaam nodig hebt.
  • Houd dangerouslyAllowInheritedWebhookPath uitgeschakeld tenzij je expliciet het routeringsrisico van gedeelde paden accepteert in een configuratie met meerdere accounts.

Probleemoplossing

  • Missing required fields (token, user_id, text):
    • de payload van de uitgaande webhook mist een van de vereiste velden
    • als Synology het token in headers verstuurt, zorg er dan voor dat de Gateway/proxy die headers behoudt
  • Invalid token:
    • het geheim van de uitgaande webhook komt niet overeen met channels.synology-chat.token
    • het verzoek komt terecht bij het verkeerde account/webhookpad
    • een reverse proxy heeft de tokenheader verwijderd voordat het verzoek OpenClaw bereikte
  • Rate limit exceeded:
    • te veel pogingen met ongeldige tokens vanaf dezelfde bron kunnen die bron tijdelijk buitensluiten
    • geauthenticeerde afzenders hebben ook een aparte berichtsnelheidslimiet per gebruiker
  • Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:
    • dmPolicy="allowlist" is ingeschakeld maar er zijn geen gebruikers geconfigureerd
  • User not authorized:
    • de numerieke user_id van de afzender staat niet in allowedUserIds

Gerelateerd