Stato: sperimentale. Questa integrazione automatizza un account Zalo personale tramiteDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
zca-js nativo dentro OpenClaw.
Plugin incluso
Zalo Personal viene distribuito come plugin incluso nelle versioni attuali di OpenClaw, quindi le normali build pacchettizzate non richiedono un’installazione separata. Se usi una build precedente o un’installazione personalizzata che esclude Zalo Personal, installa direttamente il pacchetto npm:- Installa tramite CLI:
openclaw plugins install @openclaw/zalouser - Versione fissata:
openclaw plugins install @openclaw/zalouser@2026.5.2 - Oppure da un checkout sorgente:
openclaw plugins install ./path/to/local/zalouser-plugin - Dettagli: Plugin
zca/openzca.
Configurazione rapida (principianti)
- Assicurati che il plugin Zalo Personal sia disponibile.
- Le versioni pacchettizzate attuali di OpenClaw lo includono già.
- Le installazioni precedenti/personalizzate possono aggiungerlo manualmente con i comandi sopra.
- Accedi (QR, sulla macchina Gateway):
openclaw channels login --channel zalouser- Scansiona il codice QR con l’app mobile Zalo.
- Abilita il canale:
- Riavvia il Gateway (o completa la configurazione).
- L’accesso DM usa per impostazione predefinita l’abbinamento; approva il codice di abbinamento al primo contatto.
Che cos’è
- Viene eseguito interamente in-process tramite
zca-js. - Usa listener di eventi nativi per ricevere messaggi in ingresso.
- Invia risposte direttamente tramite l’API JS (testo/media/link).
- Progettato per casi d’uso con “account personale” in cui l’API Zalo Bot non è disponibile.
Denominazione
L’ID canale èzalouser per rendere esplicito che automatizza un account utente Zalo personale (non ufficiale). Manteniamo zalo riservato per una possibile futura integrazione ufficiale dell’API Zalo.
Trovare gli ID (directory)
Usa la CLI della directory per scoprire peer/gruppi e i loro ID:Limiti
- Il testo in uscita viene suddiviso in blocchi di ~2000 caratteri (limiti del client Zalo).
- Lo streaming è bloccato per impostazione predefinita.
Controllo accessi (DM)
channels.zalouser.dmPolicy supporta: pairing | allowlist | open | disabled (predefinito: pairing).
channels.zalouser.allowFrom dovrebbe usare ID utente Zalo stabili. Può anche fare riferimento a gruppi statici di accesso mittente (accessGroup:<name>). Durante la configurazione interattiva, i nomi inseriti possono essere risolti in ID usando la ricerca contatti in-process del plugin.
Se un nome grezzo rimane nella configurazione, all’avvio viene risolto solo quando channels.zalouser.dangerouslyAllowNameMatching: true è abilitato. Senza quell’opt-in, i controlli mittente a runtime sono solo per ID e i nomi grezzi vengono ignorati per l’autorizzazione.
Approva tramite:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Accesso ai gruppi (facoltativo)
- Predefinito:
channels.zalouser.groupPolicy = "open"(gruppi consentiti). Usachannels.defaults.groupPolicyper sovrascrivere il valore predefinito quando non impostato. - Limita a un’allowlist con:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(le chiavi dovrebbero essere ID gruppo stabili; i nomi vengono risolti in ID all’avvio solo quandochannels.zalouser.dangerouslyAllowNameMatching: trueè abilitato)channels.zalouser.groupAllowFrom(controlla quali mittenti nei gruppi consentiti possono attivare il bot; i gruppi statici di accesso mittente possono essere referenziati conaccessGroup:<name>)
- Blocca tutti i gruppi:
channels.zalouser.groupPolicy = "disabled". - La procedura guidata di configurazione può richiedere allowlist di gruppi.
- All’avvio, OpenClaw risolve i nomi di gruppi/utenti nelle allowlist in ID e registra la mappatura solo quando
channels.zalouser.dangerouslyAllowNameMatching: trueè abilitato. - Per impostazione predefinita, la corrispondenza dell’allowlist dei gruppi è solo per ID. I nomi non risolti vengono ignorati per l’autenticazione a meno che
channels.zalouser.dangerouslyAllowNameMatching: truesia abilitato. channels.zalouser.dangerouslyAllowNameMatching: trueè una modalità di compatibilità di emergenza che riabilita la risoluzione dei nomi mutabili all’avvio e la corrispondenza dei nomi dei gruppi a runtime.- Se
groupAllowFromnon è impostato, il runtime ripiega suallowFromper i controlli del mittente del gruppo. - I controlli del mittente si applicano sia ai normali messaggi di gruppo sia ai comandi di controllo (per esempio
/new,/reset).
Gate per menzioni di gruppo
channels.zalouser.groups.<group>.requireMentioncontrolla se le risposte di gruppo richiedono una menzione.- Ordine di risoluzione: ID/nome gruppo esatto -> slug gruppo normalizzato ->
*-> predefinito (true). - Si applica sia ai gruppi in allowlist sia alla modalità gruppo aperto.
- Citare un messaggio del bot conta come menzione implicita per l’attivazione nel gruppo.
- I comandi di controllo autorizzati (per esempio
/new) possono bypassare il gate delle menzioni. - Quando un messaggio di gruppo viene saltato perché è richiesta una menzione, OpenClaw lo memorizza come cronologia di gruppo in sospeso e lo include nel successivo messaggio di gruppo elaborato.
- Il limite della cronologia dei gruppi usa per impostazione predefinita
messages.groupChat.historyLimit(fallback50). Puoi sovrascriverlo per account conchannels.zalouser.historyLimit.
Account multipli
Gli account vengono mappati ai profilizalouser nello stato di OpenClaw. Esempio:
Digitazione, reazioni e conferme di consegna
- OpenClaw invia un evento di digitazione prima di inviare una risposta (best-effort).
- L’azione di reazione al messaggio
reactè supportata perzalousernelle azioni del canale.- Usa
remove: trueper rimuovere una specifica emoji di reazione da un messaggio. - Semantica delle reazioni: Reazioni
- Usa
- Per i messaggi in ingresso che includono metadati evento, OpenClaw invia conferme di consegna + visualizzazione (best-effort).
Risoluzione dei problemi
L’accesso non persiste:openclaw channels status --probe- Accedi di nuovo:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
- Usa ID numerici in
allowFrom/groupAllowFrome ID gruppo stabili ingroups. Se hai intenzionalmente bisogno dei nomi esatti di amici/gruppi, abilitachannels.zalouser.dangerouslyAllowNameMatching: true.
- Rimuovi qualsiasi vecchia assunzione su un processo esterno
zca. - Il canale ora viene eseguito completamente in OpenClaw senza binari CLI esterni.
Correlati
- Panoramica dei canali — tutti i canali supportati
- Abbinamento — autenticazione DM e flusso di abbinamento
- Gruppi — comportamento delle chat di gruppo e gate delle menzioni
- Instradamento dei canali — instradamento delle sessioni per i messaggi
- Sicurezza — modello di accesso e hardening