Zalo (Bot API)¶
Status: experimentell. Direkta meddelanden endast, grupper kommer snart per Zalo docs.
Plugin krävs¶
Zalo levereras som ett plugin och ingår inte i kärninstallationen.
- Installera via CLI:
openclaw plugins install @openclaw/zalo - Eller välj Zalo under introduktionen och bekräfta installationsprompten
- Detaljer: Plugins
Snabb konfigurering (nybörjare)¶
- Installera Zalo-pluginet:
- Från en källutcheckning:
openclaw plugins install ./extensions/zalo- Från npm (om publicerad):openclaw plugins install @openclaw/zalo- Eller välj Zalo i introduktionen och bekräfta installationsprompten - Ställ in token:
- Env:
ZALO_BOT_TOKEN=...- Eller konfig:channels.zalo.botToken: "...". - Starta om gatewayn (eller slutför introduktionen).
- DM-åtkomst är parning som standard; godkänn parningskoden vid första kontakt.
Minimal konfig:
{
channels: {
zalo: {
enabled: true,
botToken: "12345689:abc-xyz",
dmPolicy: "pairing",
},
},
}
Vad det är¶
Zalo är en vietnam-fokuserad meddelandeapp; dess Bot API låter Gateway köra en bot för 1:1 konversationer. Det är en bra passform för stöd eller meddelanden där du vill ha deterministisk dirigering tillbaka till Zalo.
- En Zalo Bot API-kanal som ägs av Gateway.
- Deterministisk routning: svar går tillbaka till Zalo; modellen väljer aldrig kanaler.
- DM delar agentens huvudsession.
- Grupper stöds ännu inte (Zalo-dokumentationen anger ”kommer snart”).
Konfigurering (snabb väg)¶
1. Skapa en bottoken (Zalo Bot Platform)¶
- Gå till https://bot.zaloplatforms.com och logga in.
- Skapa en ny bot och konfigurera dess inställningar.
- Kopiera bottoken (format:
12345689:abc-xyz).
2) Konfigurera token (env eller konfig)¶
Exempel:
{
channels: {
zalo: {
enabled: true,
botToken: "12345689:abc-xyz",
dmPolicy: "pairing",
},
},
}
Env-alternativ: ZALO_BOT_TOKEN=... (fungerar endast för standardkontot).
Stöd för flera konton: använd channels.zalo.accounts med per-konto-token och valfri name.
- Starta om gatewayn. Zalo startar när en token är löst (env eller config).
- DM åtkomststandard är att para. Godkänn koden när botten först kontaktas.
Hur det fungerar (beteende)¶
- Inkommande meddelanden normaliseras till det delade kanalhöljet med medieplatshållare.
- Svar routas alltid tillbaka till samma Zalo-chatt.
- Long-polling som standard; webhook-läge finns med
channels.zalo.webhookUrl.
Begränsningar¶
- Utgående text delas upp i 2000 tecken (Zalo API-gräns).
- Nedladdning/uppladdning av media begränsas av
channels.zalo.mediaMaxMb(standard 5). - Streaming blockeras som standard eftersom 2000-teckensgränsen gör streaming mindre användbar.
Åtkomstkontroll (DM)¶
DM-åtkomst¶
- Standard:
channels.zalo.dmPolicy = "pairing". Okända avsändare får en parningskod; meddelanden ignoreras tills de godkänts (koder upphör efter 1 timme). - Godkänn via:
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- Parkoppling är standard token exchange. Detaljer: Pairing
channels.zalo.allowFromaccepterar numeriska användar-ID:n (ingen uppslagning av användarnamn finns).
Long-polling kontra webhook¶
- Standard: long-polling (ingen publik URL krävs).
- Webhook-läge: sätt
channels.zalo.webhookUrlochchannels.zalo.webhookSecret. - Webhook-hemligheten måste vara 8–256 tecken.
- Webhook-URL måste använda HTTPS.
- Zalo skickar händelser med rubriken
X-Bot-Api-Secret-Tokenför verifiering. - Gateway HTTP hanterar webhook-förfrågningar på
channels.zalo.webhookPath(standard är webhook-URL:ens sökväg).
Obs: getUpdates (polling) och webhook är ömsesidigt uteslutande enligt Zalo API-dokumentationen.
Stödda meddelandetyper¶
- Textmeddelanden: Fullt stöd med uppdelning i 2000 tecken.
- Bildmeddelanden: Ladda ned och bearbeta inkommande bilder; skicka bilder via
sendPhoto. - Dekaler: Loggas men bearbetas inte fullt ut (ingen agentrespons).
- Icke stödda typer: Loggas (t.ex. meddelanden från skyddade användare).
Funktioner¶
| Funktion | Status |
|---|---|
| Direktmeddelanden | ✅ Stöds |
| Grupper | ❌ Kommer snart (enligt Zalo-dokumentationen) |
| Media (bilder) | ✅ Stöds |
| Reaktioner | ❌ Stöds inte |
| Trådar | ❌ Stöds inte |
| Omröstningar | ❌ Stöds inte |
| Inbyggda kommandon | ❌ Stöds inte |
| Streaming | ⚠️ Blockerad (2000-teckensgräns) |
Leveransmål (CLI/cron)¶
- Använd ett chatt-ID som mål.
- Exempel:
openclaw message send --channel zalo --target 123456789 --message "hi".
Felsökning¶
Boten svarar inte:
- Kontrollera att token är giltig:
openclaw channels status --probe - Verifiera att avsändaren är godkänd (parning eller allowFrom)
- Kontrollera gateway-loggar:
openclaw logs --follow
Webhook tar inte emot händelser:
- Säkerställ att webhook-URL använder HTTPS
- Verifiera att hemlig token är 8–256 tecken
- Bekräfta att gatewayns HTTP-ändpunkt är nåbar på den konfigurerade sökvägen
- Kontrollera att getUpdates-polling inte körs (de är ömsesidigt uteslutande)
Konfigurationsreferens (Zalo)¶
Fullständig konfiguration: Konfiguration
Leverantörsalternativ:
channels.zalo.enabled: aktivera/inaktivera kanalstart.channels.zalo.botToken: bottoken från Zalo Bot Platform.channels.zalo.tokenFile: läs token från filsökväg.channels.zalo.dmPolicy:pairing | allowlist | open | disabled(standard: parning).channels.zalo.allowFrom: DM allowlist (användar-ID).openkräver"*". Guiden kommer att be om numeriska ID.channels.zalo.mediaMaxMb: gräns för inkommande/utgående media (MB, standard 5).channels.zalo.webhookUrl: aktivera webhook-läge (HTTPS krävs).channels.zalo.webhookSecret: webhook-hemlighet (8–256 tecken).channels.zalo.webhookPath: webhook-sökväg på gatewayns HTTP-server.channels.zalo.proxy: proxy-URL för API-anrop.
Alternativ för flera konton:
channels.zalo.accounts.<id>.botToken: token per konto.channels.zalo.accounts.<id>.tokenFile: tokenfil per konto.channels.zalo.accounts.<id>.name: visningsnamn.channels.zalo.accounts.<id>.enabled: aktivera/inaktivera konto.channels.zalo.accounts.<id>.dmPolicy: DM-policy per konto.channels.zalo.accounts.<id>.allowFrom: Tillåten per konto.channels.zalo.accounts.<id>.webhookUrl: webhook-URL per konto.channels.zalo.accounts.<id>.webhookSecret: hemlighet per konto.channels.zalo.accounts.<id>.webhookPath: sökväg per kontochannels.zalo.accounts.<id>.proxy: proxy per konto