Zalo (Bot API)
Stato: sperimentale. I DM sono supportati. La sezione Funzionalità qui sotto riflette il comportamento attuale dei bot Marketplace.Plugin incluso
Zalo viene distribuito come plugin incluso nelle versioni correnti di OpenClaw, quindi le normali build pacchettizzate non richiedono un’installazione separata. Se utilizzi una build più vecchia o un’installazione personalizzata che esclude Zalo, installalo manualmente:- Installa tramite CLI:
openclaw plugins install @openclaw/zalo - Oppure da un checkout del sorgente:
openclaw plugins install ./path/to/local/zalo-plugin - Dettagli: Plugin
Configurazione rapida (principianti)
- Assicurati che il plugin Zalo sia disponibile.
- Le versioni pacchettizzate correnti di OpenClaw lo includono già.
- Le installazioni vecchie/personalizzate possono aggiungerlo manualmente con i comandi sopra.
- Imposta il token:
- Env:
ZALO_BOT_TOKEN=... - Oppure configurazione:
channels.zalo.accounts.default.botToken: "...".
- Env:
- Riavvia il gateway (oppure completa la configurazione).
- L’accesso ai DM usa il pairing per impostazione predefinita; approva il codice di pairing al primo contatto.
Che cos’è
Zalo è un’app di messaggistica focalizzata sul Vietnam; la sua Bot API consente al Gateway di eseguire un bot per conversazioni 1:1. È adatta per supporto o notifiche quando vuoi un instradamento deterministico verso Zalo. Questa pagina riflette il comportamento attuale di OpenClaw per i bot Zalo Bot Creator / Marketplace. I bot Zalo Official Account (OA) appartengono a una diversa superficie di prodotto Zalo e possono comportarsi in modo diverso.- Un canale Zalo Bot API gestito dal Gateway.
- Instradamento deterministico: le risposte tornano a Zalo; il modello non sceglie mai i canali.
- I DM condividono la sessione principale dell’agente.
- La sezione Funzionalità qui sotto mostra il supporto attuale dei bot Marketplace.
Configurazione (percorso rapido)
1) Crea un token bot (Zalo Bot Platform)
- Vai su https://bot.zaloplatforms.com ed effettua l’accesso.
- Crea un nuovo bot e configurane le impostazioni.
- Copia il token completo del bot (tipicamente
numeric_id:secret). Per i bot Marketplace, il token di runtime utilizzabile può comparire nel messaggio di benvenuto del bot dopo la creazione.
2) Configura il token (env o config)
Esempio:groupPolicy e groupAllowFrom. Per il comportamento attuale dei bot Marketplace, vedi Funzionalità.
Opzione env: ZALO_BOT_TOKEN=... (funziona solo per l’account predefinito).
Supporto multi-account: usa channels.zalo.accounts con token per account e name opzionale.
- Riavvia il gateway. Zalo si avvia quando viene risolto un token (env o config).
- L’accesso ai DM usa il pairing per impostazione predefinita. Approva il codice quando il bot viene contattato per la prima volta.
Come funziona (comportamento)
- I messaggi in ingresso vengono normalizzati nel contenitore canale condiviso con segnaposto per i media.
- Le risposte vengono sempre instradate di nuovo alla stessa chat Zalo.
- Long-polling per impostazione predefinita; modalità webhook disponibile con
channels.zalo.webhookUrl.
Limiti
- Il testo in uscita viene suddiviso in blocchi da 2000 caratteri (limite API di Zalo).
- I download/upload dei media sono limitati da
channels.zalo.mediaMaxMb(predefinito 5). - Lo streaming è bloccato per impostazione predefinita perché il limite di 2000 caratteri lo rende meno utile.
Controllo degli accessi (DM)
Accesso DM
- Predefinito:
channels.zalo.dmPolicy = "pairing". I mittenti sconosciuti ricevono un codice di pairing; i messaggi vengono ignorati fino all’approvazione (i codici scadono dopo 1 ora). - Approva tramite:
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>
- Il pairing è lo scambio di token predefinito. Dettagli: Pairing
channels.zalo.allowFromaccetta ID utente numerici (non è disponibile la ricerca per nome utente).
Controllo degli accessi (Gruppi)
Per i bot Zalo Bot Creator / Marketplace, il supporto ai gruppi non era disponibile nella pratica perché il bot non poteva essere aggiunto a un gruppo. Ciò significa che le chiavi di configurazione relative ai gruppi qui sotto esistono nello schema, ma non erano utilizzabili per i bot Marketplace:channels.zalo.groupPolicycontrolla la gestione dei messaggi in ingresso nei gruppi:open | allowlist | disabled.channels.zalo.groupAllowFromlimita quali ID mittente possono attivare il bot nei gruppi.- Se
groupAllowFromnon è impostato, Zalo usaallowFromcome fallback per i controlli sul mittente. - Nota di runtime: se
channels.zalomanca completamente, il runtime usa comunquegroupPolicy="allowlist"come fallback per sicurezza.
groupPolicy: "disabled"— blocca tutti i messaggi di gruppo.groupPolicy: "open"— consente qualsiasi membro del gruppo (con menzione richiesta).groupPolicy: "allowlist"— predefinito fail-closed; sono accettati solo i mittenti consentiti.
Long-polling vs webhook
- Predefinito: long-polling (non è richiesto alcun URL pubblico).
- Modalità webhook: imposta
channels.zalo.webhookUrlechannels.zalo.webhookSecret.- Il segreto webhook deve contenere da 8 a 256 caratteri.
- L’URL webhook deve usare HTTPS.
- Zalo invia eventi con l’header
X-Bot-Api-Secret-Tokenper la verifica. - L’HTTP del Gateway gestisce le richieste webhook su
channels.zalo.webhookPath(predefinito: il percorso dell’URL webhook). - Le richieste devono usare
Content-Type: application/json(o tipi media+json). - Gli eventi duplicati (
event_name + message_id) vengono ignorati per una breve finestra di replay. - Il traffico a raffica è soggetto a rate limit per percorso/sorgente e può restituire HTTP 429.
getUpdates (polling) e webhook si escludono a vicenda secondo la documentazione API di Zalo.
Tipi di messaggio supportati
Per una rapida panoramica del supporto, vedi Funzionalità. Le note qui sotto aggiungono dettagli dove il comportamento richiede più contesto.- Messaggi di testo: supporto completo con suddivisione in blocchi da 2000 caratteri.
- URL semplici nel testo: si comportano come normale input testuale.
- Anteprime di link / schede link avanzate: vedi lo stato dei bot Marketplace in Funzionalità; non attivavano una risposta in modo affidabile.
- Messaggi immagine: vedi lo stato dei bot Marketplace in Funzionalità; la gestione delle immagini in ingresso era inaffidabile (indicatore di digitazione senza risposta finale).
- Sticker: vedi lo stato dei bot Marketplace in Funzionalità.
- Messaggi vocali / file audio / video / allegati di file generici: vedi lo stato dei bot Marketplace in Funzionalità.
- Tipi non supportati: registrati nei log (ad esempio, messaggi da utenti protetti).
Funzionalità
Questa tabella riassume il comportamento attuale dei bot Zalo Bot Creator / Marketplace in OpenClaw.| Funzionalità | Stato |
|---|---|
| Messaggi diretti | ✅ Supportati |
| Gruppi | ❌ Non disponibili per i bot Marketplace |
| Media (immagini in ingresso) | ⚠️ Limitati / verifica nel tuo ambiente |
| Media (immagini in uscita) | ⚠️ Non testati di nuovo per i bot Marketplace |
| URL semplici nel testo | ✅ Supportati |
| Anteprime di link | ⚠️ Inaffidabili per i bot Marketplace |
| Reazioni | ❌ Non supportate |
| Sticker | ⚠️ Nessuna risposta dell’agente per i bot Marketplace |
| Messaggi vocali / audio / video | ⚠️ Nessuna risposta dell’agente per i bot Marketplace |
| Allegati di file | ⚠️ Nessuna risposta dell’agente per i bot Marketplace |
| Thread | ❌ Non supportati |
| Sondaggi | ❌ Non supportati |
| Comandi nativi | ❌ Non supportati |
| Streaming | ⚠️ Bloccato (limite di 2000 caratteri) |
Destinazioni di consegna (CLI/cron)
- Usa un ID chat come destinazione.
- Esempio:
openclaw message send --channel zalo --target 123456789 --message "hi".
Risoluzione dei problemi
Il bot non risponde:- Controlla che il token sia valido:
openclaw channels status --probe - Verifica che il mittente sia approvato (pairing o allowFrom)
- Controlla i log del gateway:
openclaw logs --follow
- Assicurati che l’URL webhook usi HTTPS
- Verifica che il token segreto contenga da 8 a 256 caratteri
- Conferma che l’endpoint HTTP del gateway sia raggiungibile sul percorso configurato
- Controlla che il polling
getUpdatesnon sia in esecuzione (si escludono a vicenda)
Riferimento configurazione (Zalo)
Configurazione completa: Configurazione Le chiavi flat di primo livello (channels.zalo.botToken, channels.zalo.dmPolicy e simili) sono una scorciatoia legacy per il singolo account. Per le nuove configurazioni, preferisci channels.zalo.accounts.<id>.*. Entrambe le forme sono ancora documentate qui perché esistono nello schema.
Opzioni del provider:
channels.zalo.enabled: abilita/disabilita l’avvio del canale.channels.zalo.botToken: token bot dalla Zalo Bot Platform.channels.zalo.tokenFile: legge il token da un percorso di file normale. I symlink vengono rifiutati.channels.zalo.dmPolicy:pairing | allowlist | open | disabled(predefinito: pairing).channels.zalo.allowFrom: allowlist DM (ID utente).openrichiede"*". La procedura guidata chiederà ID numerici.channels.zalo.groupPolicy:open | allowlist | disabled(predefinito: allowlist). Presente nella configurazione; vedi Funzionalità e Controllo degli accessi (Gruppi) per il comportamento attuale dei bot Marketplace.channels.zalo.groupAllowFrom: allowlist dei mittenti nei gruppi (ID utente). UsaallowFromcome fallback se non impostato.channels.zalo.mediaMaxMb: limite media in ingresso/uscita (MB, predefinito 5).channels.zalo.webhookUrl: abilita la modalità webhook (HTTPS richiesto).channels.zalo.webhookSecret: segreto webhook (8-256 caratteri).channels.zalo.webhookPath: percorso webhook sul server HTTP del gateway.channels.zalo.proxy: URL proxy per le richieste API.
channels.zalo.accounts.<id>.botToken: token per account.channels.zalo.accounts.<id>.tokenFile: file token normale per account. I symlink vengono rifiutati.channels.zalo.accounts.<id>.name: nome visualizzato.channels.zalo.accounts.<id>.enabled: abilita/disabilita l’account.channels.zalo.accounts.<id>.dmPolicy: policy DM per account.channels.zalo.accounts.<id>.allowFrom: allowlist per account.channels.zalo.accounts.<id>.groupPolicy: policy di gruppo per account. Presente nella configurazione; vedi Funzionalità e Controllo degli accessi (Gruppi) per il comportamento attuale dei bot Marketplace.channels.zalo.accounts.<id>.groupAllowFrom: allowlist dei mittenti nei gruppi per account.channels.zalo.accounts.<id>.webhookUrl: URL webhook per account.channels.zalo.accounts.<id>.webhookSecret: segreto webhook per account.channels.zalo.accounts.<id>.webhookPath: percorso webhook per account.channels.zalo.accounts.<id>.proxy: URL proxy per account.
Correlati
- Panoramica dei canali — tutti i canali supportati
- Pairing — autenticazione DM e flusso di pairing
- Gruppi — comportamento delle chat di gruppo e requisito di menzione
- Instradamento dei canali — instradamento delle sessioni per i messaggi
- Sicurezza — modello di accesso e hardening