Developer and self-hosted
Synology Chat
Synology Chat verbindet sich über ein Webhook-Paar mit OpenClaw: Ein ausgehender Synology-Chat-Webhook sendet eingehende Direktnachrichten an den Gateway, und Antworten werden über einen eingehenden Synology-Chat-Webhook zurückgesendet.
Status: offizielles Plugin, separat installiert. Nur Direktnachrichten; Textnachrichten und URL-basierter Dateiversand werden unterstützt.
Installation
openclaw plugins install @openclaw/synology-chatLokaler Checkout (bei Ausführung aus einem Git-Repository):
openclaw plugins install ./path/to/local/synology-chat-pluginDetails: Plugins
Schnelleinrichtung
- Installieren Sie das Plugin (siehe oben).
- In den Synology-Chat-Integrationen:
- Erstellen Sie einen eingehenden Webhook und kopieren Sie dessen URL.
- Erstellen Sie einen ausgehenden Webhook mit Ihrem geheimen Token.
- Richten Sie die URL des ausgehenden Webhooks auf Ihren OpenClaw-Gateway:
- Standardmäßig
https://gateway-host/webhook/synology. - Oder Ihren benutzerdefinierten Pfad
channels.synology-chat.webhookPath.
- Standardmäßig
- Schließen Sie die Einrichtung in OpenClaw ab. Synology Chat erscheint in beiden Abläufen in derselben Liste zur Kanaleinrichtung:
- Geführt:
openclaw onboardoderopenclaw channels add - Direkt:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Geführt:
- Starten Sie den Gateway neu und senden Sie dem Synology-Chat-Bot eine Direktnachricht.
Details zur Webhook-Authentifizierung:
- OpenClaw akzeptiert das Token des ausgehenden Webhooks zuerst aus
body.token, dann aus?token=...und anschließend aus Headern. - Akzeptierte Header-Formen:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- Leere oder fehlende Tokens führen zur sicheren Ablehnung.
- Nutzdaten können vom Typ
application/x-www-form-urlencodedoderapplication/jsonsein;token,user_idundtextsind erforderlich.
Minimale Konfiguration:
{ 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, }, },}Umgebungsvariablen
Für das Standardkonto können Sie Umgebungsvariablen verwenden:
SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(durch Kommas getrennt)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
Konfigurationswerte überschreiben Umgebungsvariablen.
SYNOLOGY_CHAT_INCOMING_URL und SYNOLOGY_NAS_HOST können nicht über eine .env-Datei des Arbeitsbereichs festgelegt werden; siehe .env-Dateien des Arbeitsbereichs.
Richtlinie und Zugriffssteuerung für Direktnachrichten
- Unterstützte Werte für
dmPolicy:allowlist(Standard),openunddisabled. Synology Chat verfügt über keinen Kopplungsablauf; autorisieren Sie Absender, indem Sie deren numerische Synology-Benutzer-IDs zuallowedUserIdshinzufügen. allowedUserIdsakzeptiert eine Liste (oder eine durch Kommas getrennte Zeichenfolge) von Synology-Benutzer-IDs.- Im Modus
allowlistwird eine leereallowedUserIds-Liste als Fehlkonfiguration behandelt, und die Webhook-Route wird nicht gestartet. dmPolicy: "open"erlaubt öffentliche Direktnachrichten nur, wennallowedUserIdsden Eintrag"*"enthält; bei einschränkenden Einträgen können nur übereinstimmende Benutzer chatten. Beiopenmit einer leerenallowedUserIds-Liste wird der Start der Route ebenfalls verweigert.dmPolicy: "disabled"blockiert Direktnachrichten.- Die Bindung des Antwortempfängers erfolgt standardmäßig über die stabile numerische
user_id.channels.synology-chat.dangerouslyAllowNameMatching: trueist ein Kompatibilitätsmodus für Notfälle, der die Suche anhand veränderlicher Benutzernamen oder Spitznamen für die Zustellung von Antworten wieder aktiviert.
Ausgehende Zustellung
Verwenden Sie numerische Synology-Chat-Benutzer-IDs als Ziele. Die Präfixe synology-chat:, synology_chat: und synology: werden akzeptiert.
Beispiele:
openclaw message send --channel synology-chat --target 123456 --message "Hello from OpenClaw"openclaw message send --channel synology-chat --target synology-chat:123456 --message "Hello again"openclaw message send --channel synology-chat --target synology:123456 --message "Short prefix"Ausgehender Text wird in Abschnitte von jeweils höchstens 2.000 Zeichen aufgeteilt. Der Versand von Medien wird über die URL-basierte Dateizustellung unterstützt: Das NAS lädt die Datei herunter und hängt sie an (maximal 32 MB). URLs für ausgehende Dateien müssen http oder https verwenden; private oder anderweitig blockierte Netzwerkziele werden abgelehnt, bevor OpenClaw die URL an den NAS-Webhook weiterleitet.
Mehrere Konten
Unter channels.synology-chat.accounts werden mehrere Synology-Chat-Konten unterstützt.
Jedes Konto kann Token, eingehende URL, Webhook-Pfad, Richtlinie für Direktnachrichten und Grenzwerte überschreiben.
Direktnachrichtensitzungen sind nach Konto und Benutzer getrennt, sodass dieselbe numerische user_id
in zwei unterschiedlichen Synology-Konten keinen gemeinsamen Konversationsverlauf verwendet.
Weisen Sie jedem aktivierten Konto einen eigenen webhookPath zu. OpenClaw lehnt exakt identische Pfade ab
und verweigert in Konfigurationen mit mehreren Konten den Start benannter Konten, die lediglich einen gemeinsamen Webhook-Pfad erben.
Wenn Sie für ein benanntes Konto absichtlich die bisherige Vererbung benötigen, setzen Sie für dieses Konto oder unter
channels.synology-chat die Option dangerouslyAllowInheritedWebhookPath: true;
exakt identische Pfade werden jedoch weiterhin sicher abgelehnt. Verwenden Sie vorzugsweise explizite Pfade für jedes Konto.
{ 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"], }, }, }, },}Sicherheitshinweise
- Halten Sie
tokengeheim und ersetzen Sie es, falls es offengelegt wurde. - Behalten Sie
allowInsecureSsl: falsebei, es sei denn, Sie vertrauen ausdrücklich einem selbstsignierten lokalen NAS-Zertifikat. - Eingehende Webhook-Anfragen werden anhand des Tokens überprüft und pro Absender ratenbegrenzt (
rateLimitPerMinute, Standardwert 30). - Prüfungen ungültiger Tokens verwenden einen zeitkonstanten Vergleich geheimer Werte und lehnen Anfragen sicher ab; wiederholte Versuche mit ungültigen Tokens sperren die Quell-IP vorübergehend.
- Der Text eingehender Nachrichten wird gegen bekannte Prompt-Injection-Muster bereinigt und auf 4.000 Zeichen gekürzt.
- Verwenden Sie in Produktionsumgebungen vorzugsweise
dmPolicy: "allowlist". - Lassen Sie
dangerouslyAllowNameMatchingdeaktiviert, sofern Sie nicht ausdrücklich die bisherige, benutzernamenbasierte Zustellung von Antworten benötigen. - Lassen Sie
dangerouslyAllowInheritedWebhookPathdeaktiviert, sofern Sie nicht ausdrücklich das Risiko der Weiterleitung über einen gemeinsamen Pfad in einer Konfiguration mit mehreren Konten akzeptieren.
Fehlerbehebung
Missing required fields (token, user_id, text):- In den Nutzdaten des ausgehenden Webhooks fehlt eines der erforderlichen Felder.
- Wenn Synology das Token in Headern sendet, stellen Sie sicher, dass der Gateway oder Proxy diese Header beibehält.
Invalid token:- Das Geheimnis des ausgehenden Webhooks stimmt nicht mit
channels.synology-chat.tokenüberein. - Die Anfrage erreicht den falschen Konto- oder Webhook-Pfad.
- Ein Reverse-Proxy hat den Token-Header entfernt, bevor die Anfrage OpenClaw erreicht hat.
- Das Geheimnis des ausgehenden Webhooks stimmt nicht mit
Rate limit exceeded:- Zu viele Versuche mit ungültigen Tokens aus derselben Quelle können diese Quelle vorübergehend sperren.
- Authentifizierte Absender unterliegen außerdem einer separaten Nachrichtenratenbegrenzung pro Benutzer.
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"ist aktiviert, aber es sind keine Benutzer konfiguriert.
User not authorized:- Die numerische
user_iddes Absenders ist nicht inallowedUserIdsenthalten.
- Die numerische
Verwandte Themen
- Übersicht der Kanäle — alle unterstützten Kanäle
- Gruppen — Verhalten von Gruppenchats und Erwähnungsbeschränkung
- Kanal-Routing — Sitzungs-Routing für Nachrichten
- Sicherheit — Zugriffsmodell und Absicherung