Zalo Personal (inoffiziell)

Status: experimentell. Diese Integration automatisiert ein persönliches Zalo-Konto über zca-cli.

Warnung: Dies ist eine inoffizielle Integration und kann zur Sperrung oder zum Bann deines Kontos führen. Nutzung auf eigene Gefahr.

Plugin erforderlich

Zalo Personal wird als Plugin ausgeliefert und ist nicht in der Kerninstallation enthalten.

  • Installation via CLI: openclaw plugins install @openclaw/zalouser
  • Oder aus einem Source-Checkout: openclaw plugins install ./extensions/zalouser
  • Details: Plugins

Voraussetzung: zca-cli

Auf der Gateway-Maschine muss das zca-Binary im PATH verfügbar sein.

  • Prüfen: zca --version
  • Falls nicht vorhanden, installiere zca-cli (siehe extensions/zalouser/README.md oder die upstream zca-cli Dokumentation).

Schnellstart (Einsteiger)

  1. Installiere das Plugin (siehe oben).
  2. Login (QR, auf der Gateway-Maschine):
    • openclaw channels login --channel zalouser
    • Scanne den QR-Code im Terminal mit der Zalo Mobile App.
  3. Aktiviere den Channel:
{
  channels: {
    zalouser: {
      enabled: true,
      dmPolicy: "pairing",
    },
  },
}
  1. Starte das Gateway neu (oder schließe das Onboarding ab).
  2. DM-Zugriff ist standardmäßig auf Pairing eingestellt; gib beim ersten Kontakt den Pairing-Code frei.

Was es ist

  • Nutzt zca listen, um eingehende Nachrichten zu empfangen.
  • Nutzt zca msg ..., um Antworten zu senden (Text/Media/Link).
  • Entwickelt für “Privatkonto”-Anwendungsfälle, bei denen die Zalo Bot API nicht verfügbar ist.

Namensgebung

Die Channel-ID ist zalouser, um deutlich zu machen, dass dies ein persönliches Zalo-Benutzerkonto automatisiert (inoffiziell). Wir halten zalo für eine mögliche zukünftige offizielle Zalo API Integration reserviert.

IDs finden (Directory)

Nutze die Directory-CLI, um Peers/Gruppen und ihre IDs zu finden:

openclaw directory self --channel zalouser
openclaw directory peers list --channel zalouser --query "name"
openclaw directory groups list --channel zalouser --query "work"

Limits

  • Ausgehender Text wird auf ~2000 Zeichen aufgeteilt (Zalo Client Limits).
  • Streaming ist standardmäßig blockiert.

Zugriffskontrolle (DMs)

channels.zalouser.dmPolicy unterstützt: pairing | allowlist | open | disabled (Standard: pairing). channels.zalouser.allowFrom akzeptiert Benutzer-IDs oder Namen. Der Wizard löst Namen zu IDs auf via zca friend find, wenn verfügbar.

Freigabe via:

  • openclaw pairing list zalouser
  • openclaw pairing approve zalouser <code>

Gruppenzugriff (optional)

  • Standard: channels.zalouser.groupPolicy = "open" (Gruppen erlaubt). Nutze channels.defaults.groupPolicy, um den Standard zu überschreiben, wenn nicht gesetzt.
  • Auf eine Allowlist beschränken mit:
    • channels.zalouser.groupPolicy = "allowlist"
    • channels.zalouser.groups (Keys sind Gruppen-IDs oder Namen)
  • Alle Gruppen blockieren: channels.zalouser.groupPolicy = "disabled".
  • Der Konfigurations-Wizard kann nach Gruppen-Allowlists fragen.
  • Beim Start löst OpenClaw Gruppen-/Benutzernamen in Allowlists zu IDs auf und loggt das Mapping; nicht aufgelöste Einträge werden wie eingegeben beibehalten.

Beispiel:

{
  channels: {
    zalouser: {
      groupPolicy: "allowlist",
      groups: {
        "123456789": { allow: true },
        "Work Chat": { allow: true },
      },
    },
  },
}

Multi-Account

Accounts werden auf zca-Profile gemappt. Beispiel:

{
  channels: {
    zalouser: {
      enabled: true,
      defaultAccount: "default",
      accounts: {
        work: { enabled: true, profile: "work" },
      },
    },
  },
}

Troubleshooting

zca nicht gefunden:

  • Installiere zca-cli und stelle sicher, dass es im PATH für den Gateway-Prozess verfügbar ist.

Login bleibt nicht bestehen:

  • openclaw channels status --probe
  • Neu einloggen: openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser