Regional platforms
Zalo privat
Status: experimentell. Diese Integration automatisiert ein persönliches Zalo-Konto über natives zca-js innerhalb von OpenClaw.
Gebündeltes Plugin
Zalo Personal wird in aktuellen OpenClaw-Versionen als gebündeltes Plugin ausgeliefert, daher benötigen normale paketierte Builds keine separate Installation.
Wenn Sie einen älteren Build oder eine benutzerdefinierte Installation verwenden, die Zalo Personal ausschließt, installieren Sie das npm-Paket direkt:
- Installation per CLI:
openclaw plugins install @openclaw/zalouser - Angeheftete Version:
openclaw plugins install @openclaw/[email protected] - Oder aus einem Source-Checkout:
openclaw plugins install ./path/to/local/zalouser-plugin - Details: Plugins
Es ist kein externes zca/openzca-CLI-Binary erforderlich.
Schnelle Einrichtung (Einsteiger)
- Stellen Sie sicher, dass das Zalo Personal-Plugin verfügbar ist.
- Aktuelle paketierte OpenClaw-Versionen bündeln es bereits.
- Ältere/benutzerdefinierte Installationen können es mit den obigen Befehlen manuell hinzufügen.
- Anmelden (QR, auf der Gateway-Maschine):
openclaw channels login --channel zalouser- Scannen Sie den QR-Code mit der mobilen Zalo-App.
- Aktivieren Sie den Kanal:
{
channels: {
zalouser: {
enabled: true,
dmPolicy: "pairing",
},
},
}
- Starten Sie den Gateway neu (oder schließen Sie die Einrichtung ab).
- DM-Zugriff verwendet standardmäßig Pairing; genehmigen Sie den Pairing-Code beim ersten Kontakt.
Was es ist
- Läuft vollständig im Prozess über
zca-js. - Verwendet native Event-Listener, um eingehende Nachrichten zu empfangen.
- Sendet Antworten direkt über die JS API (Text/Medien/Link).
- Entwickelt für Anwendungsfälle mit „persönlichem Konto“, in denen die Zalo Bot API nicht verfügbar ist.
Benennung
Die Kanal-ID lautet zalouser, um explizit 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 frei.
IDs finden (Verzeichnis)
Verwenden Sie die Verzeichnis-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"
Grenzen
- Ausgehender Text wird auf etwa 2000 Zeichen aufgeteilt (Zalo-Client-Grenzen).
- Streaming ist standardmäßig blockiert.
Zugriffskontrolle (DMs)
channels.zalouser.dmPolicy unterstützt: pairing | allowlist | open | disabled (Standard: pairing).
channels.zalouser.allowFrom sollte stabile Zalo-Benutzer-IDs verwenden. Während der interaktiven Einrichtung können eingegebene Namen über die prozessinterne Kontaktsuche des Plugins in IDs aufgelöst werden.
Wenn ein Rohname in der Konfiguration verbleibt, löst der Start ihn nur auf, wenn channels.zalouser.dangerouslyAllowNameMatching: true aktiviert ist. Ohne dieses Opt-in sind Absenderprüfungen zur Laufzeit ausschließlich ID-basiert und Rohnamen werden für die Autorisierung ignoriert.
Genehmigen über:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Gruppenzugriff (optional)
- Standard:
channels.zalouser.groupPolicy = "open"(Gruppen erlaubt). Verwenden Siechannels.defaults.groupPolicy, um den Standard zu überschreiben, wenn nichts gesetzt ist. - Auf eine Allowlist beschränken mit:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(Schlüssel sollten stabile Gruppen-IDs sein; Namen werden beim Start nur dann in IDs aufgelöst, wennchannels.zalouser.dangerouslyAllowNameMatching: trueaktiviert ist)channels.zalouser.groupAllowFrom(steuert, welche Absender in erlaubten Gruppen den Bot auslösen können)
- Alle Gruppen blockieren:
channels.zalouser.groupPolicy = "disabled". - Der Konfigurationsassistent kann nach Gruppen-Allowlists fragen.
- Beim Start löst OpenClaw Gruppen-/Benutzernamen in Allowlists in IDs auf und protokolliert die Zuordnung nur, wenn
channels.zalouser.dangerouslyAllowNameMatching: trueaktiviert ist. - Der Abgleich von Gruppen-Allowlists ist standardmäßig ausschließlich ID-basiert. Nicht aufgelöste Namen werden für die Authentifizierung ignoriert, sofern
channels.zalouser.dangerouslyAllowNameMatching: truenicht aktiviert ist. channels.zalouser.dangerouslyAllowNameMatching: trueist ein Break-Glass-Kompatibilitätsmodus, der veränderliche Namensauflösung beim Start und Gruppen-Namensabgleich zur Laufzeit wieder aktiviert.- Wenn
groupAllowFromnicht gesetzt ist, fällt die Laufzeit für Gruppen-Absenderprüfungen aufallowFromzurück. - Absenderprüfungen gelten sowohl für normale Gruppennachrichten als auch für Steuerbefehle (zum Beispiel
/new,/reset).
Beispiel:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groupAllowFrom: ["1471383327500481391"],
groups: {
"123456789": { allow: true },
"Work Chat": { allow: true },
},
},
},
}
Gruppen-Erwähnungs-Gating
channels.zalouser.groups.<group>.requireMentionsteuert, ob Gruppenantworten eine Erwähnung erfordern.- Auflösungsreihenfolge: exakte Gruppen-ID/exakter Gruppenname -> normalisierter Gruppen-Slug ->
*-> Standard (true). - Dies gilt sowohl für Gruppen auf der Allowlist als auch für den offenen Gruppenmodus.
- Das Zitieren einer Bot-Nachricht zählt als implizite Erwähnung für die Gruppenaktivierung.
- Autorisierte Steuerbefehle (zum Beispiel
/new) können das Erwähnungs-Gating umgehen. - Wenn eine Gruppennachricht übersprungen wird, weil eine Erwähnung erforderlich ist, speichert OpenClaw sie als ausstehende Gruppenhistorie und fügt sie der nächsten verarbeiteten Gruppennachricht hinzu.
- Das Limit der Gruppenhistorie ist standardmäßig
messages.groupChat.historyLimit(Fallback50). Sie können es pro Konto mitchannels.zalouser.historyLimitüberschreiben.
Beispiel:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groups: {
"*": { allow: true, requireMention: true },
"Work Chat": { allow: true, requireMention: false },
},
},
},
}
Mehrere Konten
Konten werden in OpenClaw-State zalouser-Profilen zugeordnet. Beispiel:
{
channels: {
zalouser: {
enabled: true,
defaultAccount: "default",
accounts: {
work: { enabled: true, profile: "work" },
},
},
},
}
Tippen, Reaktionen und Zustellbestätigungen
- OpenClaw sendet vor dem Dispatch einer Antwort ein Tipp-Event (Best Effort).
- Die Nachrichtenreaktionsaktion
reactwird fürzalouserin Kanalaktionen unterstützt.- Verwenden Sie
remove: true, um ein bestimmtes Reaktions-Emoji von einer Nachricht zu entfernen. - Reaktionssemantik: Reaktionen
- Verwenden Sie
- Für eingehende Nachrichten, die Event-Metadaten enthalten, sendet OpenClaw Zustell- und Gesehen-Bestätigungen (Best Effort).
Fehlerbehebung
Anmeldung bleibt nicht erhalten:
openclaw channels status --probe- Erneut anmelden:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
Allowlist-/Gruppenname wurde nicht aufgelöst:
- Verwenden Sie numerische IDs in
allowFrom/groupAllowFromund stabile Gruppen-IDs ingroups. Wenn Sie absichtlich exakte Freundes-/Gruppennamen benötigen, aktivieren Siechannels.zalouser.dangerouslyAllowNameMatching: true.
Upgrade von alter CLI-basierter Einrichtung:
- Entfernen Sie alle alten Annahmen zu externen
zca-Prozessen. - Der Kanal läuft jetzt vollständig in OpenClaw ohne externe CLI-Binaries.
Verwandt
- Kanalübersicht — alle unterstützten Kanäle
- Pairing — DM-Authentifizierung und Pairing-Ablauf
- Gruppen — Gruppenchat-Verhalten und Erwähnungs-Gating
- Kanal-Routing — Sitzungs-Routing für Nachrichten
- Sicherheit — Zugriffsmodell und Härtung