Developer and self-hosted
Synology Chat
Synology Chat si connette a OpenClaw tramite una coppia di Webhook: un Webhook in uscita di Synology Chat invia i messaggi diretti in entrata al Gateway, mentre le risposte tornano tramite un Webhook in entrata di Synology Chat.
Stato: Plugin ufficiale, installato separatamente. Solo messaggi diretti; sono supportati l'invio di testo e di file basato su URL.
Installazione
openclaw plugins install @openclaw/synology-chatCheckout locale (durante l'esecuzione da un repository git):
openclaw plugins install ./path/to/local/synology-chat-pluginDettagli: Plugin
Configurazione rapida
- Installa il Plugin (vedi sopra).
- Nelle integrazioni di Synology Chat:
- Crea un Webhook in entrata e copiane l'URL.
- Crea un Webhook in uscita con il tuo token segreto.
- Imposta come URL del Webhook in uscita quello del tuo Gateway OpenClaw:
https://gateway-host/webhook/synologyper impostazione predefinita.- Oppure il percorso personalizzato
channels.synology-chat.webhookPath.
- Completa la configurazione in OpenClaw. Synology Chat appare nello stesso elenco di configurazione dei canali in entrambi i flussi:
- Guidato:
openclaw onboardoopenclaw channels add - Diretto:
openclaw channels add --channel synology-chat --token <token> --url <incoming-webhook-url>
- Guidato:
- Riavvia il Gateway e invia un messaggio diretto al bot di Synology Chat.
Dettagli sull'autenticazione del Webhook:
- OpenClaw accetta il token del Webhook in uscita prima da
body.token, poi da?token=..., infine dalle intestazioni. - Forme di intestazione accettate:
x-synology-tokenx-webhook-tokenx-openclaw-tokenAuthorization: Bearer <token>
- I token vuoti o mancanti causano un rifiuto sicuro.
- I payload possono essere
application/x-www-form-urlencodedoapplication/json;token,user_idetextsono obbligatori.
Configurazione minima:
{ 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, }, },}Variabili d'ambiente
Per l'account predefinito puoi utilizzare le variabili d'ambiente:
SYNOLOGY_CHAT_TOKENSYNOLOGY_CHAT_INCOMING_URLSYNOLOGY_NAS_HOSTSYNOLOGY_ALLOWED_USER_IDS(separati da virgole)SYNOLOGY_RATE_LIMITOPENCLAW_BOT_NAME
I valori della configurazione hanno la precedenza sulle variabili d'ambiente.
SYNOLOGY_CHAT_INCOMING_URL e SYNOLOGY_NAS_HOST non possono essere impostate da un file .env dell'area di lavoro; consulta File .env dell'area di lavoro.
Criteri per i messaggi diretti e controllo degli accessi
- Valori
dmPolicysupportati:allowlist(predefinito),openedisabled. Synology Chat non dispone di un flusso di associazione; autorizza i mittenti aggiungendo i loro ID utente numerici di Synology aallowedUserIds. allowedUserIdsaccetta un elenco (o una stringa separata da virgole) di ID utente di Synology.- In modalità
allowlist, un elencoallowedUserIdsvuoto viene considerato una configurazione errata e la rotta del Webhook non viene avviata. dmPolicy: "open"consente messaggi diretti pubblici solo quandoallowedUserIdsinclude"*"; con voci restrittive, possono conversare solo gli utenti corrispondenti. Ancheopencon un elencoallowedUserIdsvuoto impedisce l'avvio della rotta.dmPolicy: "disabled"blocca i messaggi diretti.- Per impostazione predefinita, l'associazione del destinatario delle risposte rimane basata sul valore numerico stabile
user_id.channels.synology-chat.dangerouslyAllowNameMatching: trueè una modalità di compatibilità di emergenza che riattiva la ricerca tramite nome utente o soprannome modificabile per la consegna delle risposte.
Consegna in uscita
Utilizza gli ID utente numerici di Synology Chat come destinatari. Sono accettati i prefissi synology-chat:, synology_chat: e synology:.
Esempi:
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"Il testo in uscita viene suddiviso in blocchi di 2000 caratteri. L'invio di contenuti multimediali è supportato tramite la consegna di file basata su URL: il NAS scarica e allega il file (massimo 32 MB). Gli URL dei file in uscita devono utilizzare http o https; le destinazioni di rete private o altrimenti bloccate vengono rifiutate prima che OpenClaw inoltri l'URL al Webhook del NAS.
Account multipli
Sono supportati più account Synology Chat in channels.synology-chat.accounts.
Ogni account può sovrascrivere token, URL in entrata, percorso del Webhook, criteri per i messaggi diretti e limiti.
Le sessioni dei messaggi diretti sono isolate per account e utente, pertanto lo stesso valore numerico user_id
su due account Synology diversi non condivide lo stato della trascrizione.
Assegna a ogni account abilitato un webhookPath distinto. OpenClaw rifiuta i percorsi esattamente duplicati
e, nelle configurazioni con più account, non avvia gli account denominati che si limitano a ereditare un percorso Webhook condiviso.
Se hai intenzionalmente bisogno dell'ereditarietà preesistente per un account denominato, imposta
dangerouslyAllowInheritedWebhookPath: true su tale account o in channels.synology-chat,
ma i percorsi esattamente duplicati vengono comunque rifiutati in modo sicuro. Preferisci percorsi espliciti per ciascun 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"], }, }, }, },}Note sulla sicurezza
- Mantieni segreto
tokene sostituiscilo se viene divulgato. - Mantieni
allowInsecureSsl: false, a meno che tu non consideri esplicitamente attendibile un certificato locale autofirmato del NAS. - Le richieste Webhook in entrata vengono verificate tramite token e sottoposte a un limite di frequenza per mittente (
rateLimitPerMinute, valore predefinito 30). - I controlli sui token non validi utilizzano un confronto dei segreti a tempo costante e causano un rifiuto sicuro; tentativi ripetuti con token non validi bloccano temporaneamente l'indirizzo IP di origine.
- Il testo dei messaggi in entrata viene ripulito dai modelli noti di prompt injection e troncato a 4000 caratteri.
- Per la produzione, preferisci
dmPolicy: "allowlist". - Mantieni disattivato
dangerouslyAllowNameMatching, a meno che tu non abbia esplicitamente bisogno della consegna preesistente delle risposte basata sul nome utente. - Mantieni disattivato
dangerouslyAllowInheritedWebhookPath, a meno che tu non accetti esplicitamente il rischio dell'instradamento tramite percorso condiviso in una configurazione con più account.
Risoluzione dei problemi
Missing required fields (token, user_id, text):- nel payload del Webhook in uscita manca uno dei campi obbligatori
- se Synology invia il token nelle intestazioni, assicurati che il Gateway o il proxy conservi tali intestazioni
Invalid token:- il segreto del Webhook in uscita non corrisponde a
channels.synology-chat.token - la richiesta raggiunge l'account o il percorso Webhook errato
- un proxy inverso ha rimosso l'intestazione del token prima che la richiesta raggiungesse OpenClaw
- il segreto del Webhook in uscita non corrisponde a
Rate limit exceeded:- troppi tentativi con token non validi dalla stessa origine possono bloccare temporaneamente tale origine
- anche i mittenti autenticati hanno un limite separato alla frequenza dei messaggi per utente
Allowlist is empty. Configure allowedUserIds or use dmPolicy=open with allowedUserIds=["*"].:dmPolicy="allowlist"è abilitato, ma non è configurato alcun utente
User not authorized:- il valore numerico
user_iddel mittente non è presente inallowedUserIds
- il valore numerico
Contenuti correlati
- Panoramica dei canali — tutti i canali supportati
- Gruppi — comportamento delle chat di gruppo e controllo delle menzioni
- Instradamento dei canali — instradamento delle sessioni per i messaggi
- Sicurezza — modello di accesso e rafforzamento della sicurezza