Zalo (Bot API)
Status: experimenteel. Alleen directe berichten; groepen komen binnenkort volgens de Zalo-documentatie.Plugin vereist
Zalo wordt geleverd als een plugin en is niet inbegrepen bij de kerninstallatie.- Installeren via CLI:
openclaw plugins install @openclaw/zalo - Of selecteer Zalo tijdens onboarding en bevestig de installatieprompt
- Details: Plugins
Snelle installatie (beginner)
- Installeer de Zalo-plugin:
- Vanuit een broncheckout:
openclaw plugins install ./extensions/zalo - Vanuit npm (indien gepubliceerd):
openclaw plugins install @openclaw/zalo - Of kies Zalo tijdens onboarding en bevestig de installatieprompt
- Vanuit een broncheckout:
- Stel de token in:
- Env:
ZALO_BOT_TOKEN=... - Of config:
channels.zalo.botToken: "...".
- Env:
- Herstart de Gateway (of rond onboarding af).
- DM-toegang is standaard via koppeling; keur de koppelingscode goed bij het eerste contact.
Wat het is
Zalo is een op Vietnam gerichte berichtenapp; de Bot API laat de Gateway een bot draaien voor 1-op-1-gesprekken. Het is geschikt voor support of notificaties waarbij je deterministische routering terug naar Zalo wilt.- Een Zalo Bot API-kanaal dat eigendom is van de Gateway.
- Deterministische routering: antwoorden gaan terug naar Zalo; het model kiest nooit kanalen.
- DM’s delen de hoofdsessie van de agent.
- Groepen worden nog niet ondersteund (Zalo-documentatie vermeldt “coming soon”).
Installatie (snelle route)
1. Maak een bot-token aan (Zalo Bot Platform)
- Ga naar https://bot.zaloplatforms.com en meld je aan.
- Maak een nieuwe bot aan en configureer de instellingen.
- Kopieer de bot-token (formaat:
12345689:abc-xyz).
2) Configureer de token (env of config)
Voorbeeld:ZALO_BOT_TOKEN=... (werkt alleen voor het standaardaccount).
Ondersteuning voor meerdere accounts: gebruik channels.zalo.accounts met per-account tokens en optioneel name.
- Herstart de Gateway. Zalo start wanneer een token is gevonden (env of config).
- DM-toegang staat standaard op koppeling. Keur de code goed wanneer de bot voor het eerst wordt gecontacteerd.
Hoe het werkt (gedrag)
- Inkomende berichten worden genormaliseerd naar de gedeelde kanaalomslag met mediaplaatsaanduidingen.
- Antwoorden worden altijd teruggestuurd naar dezelfde Zalo-chat.
- Standaard long-polling; webhookmodus beschikbaar met
channels.zalo.webhookUrl.
Beperkingen
- Uitgaande tekst wordt opgeknipt in stukken van 2000 tekens (Zalo API-limiet).
- Media-downloads/-uploads zijn begrensd door
channels.zalo.mediaMaxMb(standaard 5). - Streaming is standaard geblokkeerd omdat de limiet van 2000 tekens streaming minder nuttig maakt.
Toegangsbeheer (DM’s)
DM-toegang
- Standaard:
channels.zalo.dmPolicy = "pairing". Onbekende afzenders ontvangen een koppelingscode; berichten worden genegeerd totdat ze zijn goedgekeurd (codes verlopen na 1 uur). - Goedkeuren via:
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>
- Koppeling is de standaard tokenuitwisseling. Details: Pairing
channels.zalo.allowFromaccepteert numerieke gebruikers-ID’s (geen gebruikersnaam-lookup beschikbaar).
Long-polling vs webhook
- Standaard: long-polling (geen publieke URL vereist).
- Webhookmodus: stel
channels.zalo.webhookUrlenchannels.zalo.webhookSecretin.- Het webhookgeheim moet 8-256 tekens lang zijn.
- De webhook-URL moet HTTPS gebruiken.
- Zalo verstuurt events met de header
X-Bot-Api-Secret-Tokenvoor verificatie. - Gateway HTTP verwerkt webhookverzoeken op
channels.zalo.webhookPath(standaard het webhook-URL-pad).
Ondersteunde berichttypen
- Tekstberichten: Volledige ondersteuning met chunking van 2000 tekens.
- Afbeeldingsberichten: Inkomende afbeeldingen downloaden en verwerken; afbeeldingen verzenden via
sendPhoto. - Stickers: Gelogd maar niet volledig verwerkt (geen agentrespons).
- Niet-ondersteunde typen: Gelogd (bijv. berichten van beschermde gebruikers).
Mogelijkheden
| Functie | Status |
|---|---|
| Directe berichten | ✅ Ondersteund |
| Groepen | ❌ Binnenkort (volgens Zalo-docs) |
| Media (afbeeldingen) | ✅ Ondersteund |
| Reacties | ❌ Niet ondersteund |
| Discussies | ❌ Niet ondersteund |
| Polls | ❌ Niet ondersteund |
| Native opdrachten | ❌ Niet ondersteund |
| Streaming | ⚠️ Geblokkeerd (limiet 2000 tekens) |
Afleverdoelen (CLI/cron)
- Gebruik een chat-id als doel.
- Voorbeeld:
openclaw message send --channel zalo --target 123456789 --message "hi".
Problemen oplossen
Bot reageert niet:- Controleer of de token geldig is:
openclaw channels status --probe - Verifieer dat de afzender is goedgekeurd (koppeling of allowFrom)
- Controleer Gateway-logs:
openclaw logs --follow
- Zorg dat de webhook-URL HTTPS gebruikt
- Verifieer dat het geheime token 8-256 tekens lang is
- Bevestig dat het Gateway HTTP-eindpunt bereikbaar is op het geconfigureerde pad
- Controleer dat getUpdates-polling niet draait (ze zijn wederzijds exclusief)
Configuratiereferentie (Zalo)
Volledige configuratie: Configuratie Provider-opties:channels.zalo.enabled: kanaalstart in-/uitschakelen.channels.zalo.botToken: bot-token van het Zalo Bot Platform.channels.zalo.tokenFile: token lezen vanaf een bestandspad.channels.zalo.dmPolicy:pairing | allowlist | open | disabled(standaard: koppeling).channels.zalo.allowFrom: DM-toegestane lijst (gebruikers-ID’s).openvereist"*". De wizard vraagt om numerieke ID’s.channels.zalo.mediaMaxMb: limiet voor inkomende/uitgaande media (MB, standaard 5).channels.zalo.webhookUrl: webhookmodus inschakelen (HTTPS vereist).channels.zalo.webhookSecret: webhookgeheim (8-256 tekens).channels.zalo.webhookPath: webhookpad op de Gateway HTTP-server.channels.zalo.proxy: proxy-URL voor API-verzoeken.
channels.zalo.accounts.<id>.botToken: token per account.channels.zalo.accounts.<id>.tokenFile: per-account tokenbestand.channels.zalo.accounts.<id>.name: weergavenaam.channels.zalo.accounts.<id>.enabled: account in-/uitschakelen.channels.zalo.accounts.<id>.dmPolicy: per-account DM-beleid.channels.zalo.accounts.<id>.allowFrom: per-account toegestane lijst.channels.zalo.accounts.<id>.webhookUrl: per-account webhook-URL.channels.zalo.accounts.<id>.webhookSecret: per-account webhookgeheim.channels.zalo.accounts.<id>.webhookPath: per-account webhookpad.channels.zalo.accounts.<id>.proxy: per-account proxy-URL.