Synology Chat
Statut : canal de message direct en plugin intégré utilisant les webhooks Synology Chat. Le plugin accepte les messages entrants des webhooks sortants de Synology Chat et envoie les réponses via un webhook entrant de Synology Chat.
Plugin intégré
Section intitulée « Plugin intégré »Synology Chat est fourni en tant que plugin intégré dans les versions actuelles d’OpenClaw, les versions packagées standard n’ont donc pas besoin d’une installation séparée.
Si vous utilisez une version ancienne ou une installation personnalisée qui exclut Synology Chat, installez-le manuellement :
Installer depuis un checkout local :
openclaw plugins install ./path/to/local/synology-chat-pluginDétails : Plugins
Configuration rapide
Section intitulée « Configuration rapide »- Assurez-vous que le plugin Synology Chat est disponible.
- Les versions packagées actuelles d’OpenClaw l’incluent déjà.
- Les installations anciennes/personnalisées peuvent l’ajouter manuellement depuis un checkout source avec la commande ci-dessus.
openclaw onboardaffiche désormais Synology Chat dans la même liste de configuration de canal queopenclaw channels add.- Configuration non interactive :
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Dans les intégrations Synology Chat :
- Créez un webhook entrant et copiez son URL.
- Créez un webhook sortant avec votre jeton secret.
- Faites pointer l’URL du webhook sortant vers votre passerelle OpenClaw :
https://gateway-host/webhook/synologypar défaut.- Ou votre
channels.synology-chat.webhookPathpersonnalisé.
- Terminez la configuration dans OpenClaw.
- Guidé :
openclaw onboard - Direct :
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Guidé :
- Redémarrez la passerelle et envoyez un DM au bot Synology Chat.
Détails de l’authentification du webhook :
- OpenClaw accepte le jeton du webhook sortant depuis
body.token, puis?token=..., puis les en-têtes. - Formes d’en-tête acceptées :
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- Les jetons vides ou manquants échouent de manière sécurisée.
Configuration minimale :
{ 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, }, },}Variables d’environnement
Section intitulée « Variables d’environnement »Pour le compte par défaut, vous pouvez utiliser des env vars :
SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(séparés par des virgules)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
Les valeurs de configuration remplacent les env vars.
SYNOLOGY_CHAT_INCOMING_URL ne peut pas être défini depuis un .env ; voir Fichiers .env de l’espace de travail.
Stratégie de DM et contrôle d’accès
Section intitulée « Stratégie de DM et contrôle d’accès »dmPolicy: "allowlist"est la valeur par défaut recommandée.allowedUserIdsaccepte une liste (ou une chaîne séparée par des virgules) d’ID utilisateur Synology.- En mode
allowlist, une listeallowedUserIdsvide est considérée comme une mauvaise configuration et la route du webhook ne démarrera pas (utilisezdmPolicy: "open"avecallowedUserIds: ["*"]pour tout autoriser). dmPolicy: "open"autorise les DMs publics uniquement lorsqueallowedUserIdsinclut"*"; avec des entrées restrictives, seuls les utilisateurs correspondants peuvent discuter.dmPolicy: "disabled"bloque les DMs.- La liaison du destinataire de la réponse reste sur un identifiant numérique stable
user_idpar défaut.channels.synology-chat.dangerouslyAllowNameMatching: trueest un mode de compatibilité d’urgence qui réactive la recherche mutable de nom d’utilisateur/pseudonyme pour la livraison des réponses. - Les approbations d’appairage fonctionnent avec :
openclaw pairing list synology-chatopenclaw pairing approve synology-chat <CODE>
Livraison sortante
Section intitulée « Livraison sortante »Utilisez les ID utilisateur numériques Synology Chat comme cibles.
Exemples :
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"Les envois de médias sont pris en charge par la livraison de fichiers basée sur une URL.
Les URL de fichiers sortants doivent utiliser http ou https, et les cibles réseau privées ou autrement bloquées sont rejetées avant que OpenClaw ne transfère l’URL au webhook du NAS.
Multi-compte
Section intitulée « Multi-compte »Plusieurs comptes Synology Chat sont pris en charge sous channels.synology-chat.accounts.
Chaque compte peut remplacer le jeton, l’URL entrante, le chemin du webhook, la stratégie de DM et les limites.
Les sessions de messages directs sont isolées par compte et par utilisateur, de sorte que le même user_id numérique
sur deux comptes Synology différents ne partage pas l’état de la transcription.
Donnez à chaque compte activé un webhookPath distinct. OpenClaw rejette désormais les chemins exacts en double
et refuse de démarrer les comptes nommés qui n’héritent que d’un chemin de webhook partagé dans les configurations multi-comptes.
Si vous avez intentionnellement besoin d’un héritage hérité pour un compte nommé, définissez
dangerouslyAllowInheritedWebhookPath: true sur ce compte ou à channels.synology-chat,
mais les chemins exacts en double sont toujours rejetés en échec fermé. Préférez les chemins explicites par compte.
{ 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"], }, }, }, },}Notes de sécurité
Section intitulée « Notes de sécurité »- Gardez
tokensecret et faites-le pivoter s’il fuit. - Conservez
allowInsecureSsl: falsesauf si vous faites explicitement confiance à un certificat NAS local auto-signé. - Les demandes webhook entrantes sont vérifiées par jeton et limitées par taux par expéditeur.
- Les vérifications de jeton invalides utilisent une comparaison secrète à temps constant et échouent de manière fermée (fail closed).
- Privilégiez
dmPolicy: "allowlist"pour la production. - Gardez
dangerouslyAllowNameMatchingdésactivé, sauf si vous avez explicitement besoin de la livraison des réponses basée sur le nom d’utilisateur hérité. - Gardez
dangerouslyAllowInheritedWebhookPathdésactivé, sauf si vous acceptez explicitement le risque de routage par chemin partagé dans une configuration multi-compte.
Dépannage
Section intitulée « Dépannage »Missing required fields (token, user_id, text):- la charge utile du webhook sortant manque l’un des champs requis
- si Synology envoie le jeton dans les en-têtes, assurez-vous que la passerelle/le proxy conserve ces en-têtes
Invalid token:- le secret du webhook sortant ne correspond pas à
channels.synology-chat.token - la requête atteint le mauvais compte ou le mauvais chemin de webhook
- un proxy inverse a supprimé l’en-tête du jeton avant que la requête n’atteigne OpenClaw
- le secret du webhook sortant ne correspond pas à
Rate limit exceeded:- trop de tentatives de jeton invalides provenant de la même source peuvent bloquer temporairement cette source
- les expéditeurs authentifiés ont également une limite de taux de messages distincte par utilisateur
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"est activé mais aucun utilisateur n’est configuré
User not authorized:- le
user_idnumérique de l’expéditeur n’est pas dansallowedUserIds
- le
Connexes
Section intitulée « Connexes »- Aperçu des canaux — tous les canaux pris en charge
- Appairage — flux d’authentification et d’appairage DM
- Groupes — comportement de la conversation de groupe et filtrage des mentions
- Routage de canal — routage de session pour les messages
- Sécurité — modèle d’accès et durcissement