Zalo Personal (nieoficjalne)
Status: eksperymentalny. Ta integracja automatyzuje osobiste konto Zalo przez natywnezca-js wewnątrz OpenClaw.
Ostrzeżenie: To jest nieoficjalna integracja i może skutkować zawieszeniem/zbanowaniem konta. Używasz jej na własne ryzyko.
Bundled plugin
Zalo Personal jest dostarczany jako bundled plugin w bieżących wydaniach OpenClaw, więc zwykłe spakowane buildy nie wymagają osobnej instalacji. Jeśli używasz starszego builda lub niestandardowej instalacji, która nie zawiera Zalo Personal, zainstaluj go ręcznie:- Zainstaluj przez CLI:
openclaw plugins install @openclaw/zalouser - Albo z checkoutu kodu źródłowego:
openclaw plugins install ./path/to/local/zalouser-plugin - Szczegóły: Plugins
zca/openzca CLI nie jest wymagany.
Szybka konfiguracja (dla początkujących)
- Upewnij się, że plugin Zalo Personal jest dostępny.
- Jest już dołączony do aktualnych spakowanych wydań OpenClaw.
- Starsze/niestandardowe instalacje mogą dodać go ręcznie za pomocą powyższych poleceń.
- Zaloguj się (QR, na maszynie Gateway):
openclaw channels login --channel zalouser- Zeskanuj kod QR aplikacją mobilną Zalo.
- Włącz kanał:
- Uruchom ponownie Gateway (lub dokończ konfigurację).
- Dostęp przez DM domyślnie używa parowania; zatwierdź kod parowania przy pierwszym kontakcie.
Czym to jest
- Działa całkowicie w procesie przez
zca-js. - Używa natywnych listenerów zdarzeń do odbierania wiadomości przychodzących.
- Wysyła odpowiedzi bezpośrednio przez API JS (tekst/multimedia/link).
- Zaprojektowane dla przypadków użycia „osobistego konta”, w których API bota Zalo nie jest dostępne.
Nazewnictwo
Identyfikator kanału tozalouser, aby jednoznacznie wskazać, że automatyzuje osobiste konto użytkownika Zalo (nieoficjalne). zalo pozostaje zarezerwowane dla potencjalnej przyszłej oficjalnej integracji z API Zalo.
Znajdowanie identyfikatorów (directory)
Użyj CLI directory, aby wykryć kontakty/grupy i ich identyfikatory:Ograniczenia
- Wychodzący tekst jest dzielony na fragmenty po około 2000 znaków (ograniczenia klienta Zalo).
- Streamowanie jest domyślnie zablokowane.
Kontrola dostępu (DM)
channels.zalouser.dmPolicy obsługuje: pairing | allowlist | open | disabled (domyślnie: pairing).
channels.zalouser.allowFrom akceptuje identyfikatory użytkowników lub nazwy. Podczas konfiguracji nazwy są rozwiązywane do identyfikatorów przy użyciu wyszukiwania kontaktów pluginu działającego w procesie.
Zatwierdzanie przez:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Dostęp do grup (opcjonalnie)
- Domyślnie:
channels.zalouser.groupPolicy = "open"(grupy dozwolone). Użyjchannels.defaults.groupPolicy, aby nadpisać wartość domyślną, gdy nie jest ustawiona. - Ogranicz do listy dozwolonych za pomocą:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(klucze powinny być stabilnymi identyfikatorami grup; nazwy są rozwiązywane do identyfikatorów podczas uruchamiania, gdy to możliwe)channels.zalouser.groupAllowFrom(kontroluje, którzy nadawcy w dozwolonych grupach mogą wywołać bota)
- Zablokuj wszystkie grupy:
channels.zalouser.groupPolicy = "disabled". - Kreator konfiguracji może pytać o listy dozwolonych grup.
- Przy uruchamianiu OpenClaw rozwiązuje nazwy grup/użytkowników z list dozwolonych do identyfikatorów i zapisuje mapowanie w logach.
- Dopasowywanie listy dozwolonych grup domyślnie odbywa się tylko po identyfikatorze. Nierozwiązane nazwy są ignorowane przy autoryzacji, chyba że włączono
channels.zalouser.dangerouslyAllowNameMatching: true. channels.zalouser.dangerouslyAllowNameMatching: trueto awaryjny tryb zgodności, który ponownie włącza dopasowywanie po zmiennej nazwie grupy.- Jeśli
groupAllowFromnie jest ustawione, środowisko wykonawcze używaallowFromjako ustawienia zastępczego do sprawdzania nadawców w grupach. - Sprawdzanie nadawców dotyczy zarówno zwykłych wiadomości grupowych, jak i poleceń sterujących (na przykład
/new,/reset).
Ograniczanie odpowiedzi w grupie do wzmianek
channels.zalouser.groups.<group>.requireMentionkontroluje, czy odpowiedzi w grupie wymagają wzmianki.- Kolejność rozwiązywania: dokładny identyfikator/nazwa grupy -> znormalizowany slug grupy ->
*-> wartość domyślna (true). - Dotyczy to zarówno grup z listy dozwolonych, jak i otwartego trybu grupowego.
- Cytowanie wiadomości bota liczy się jako niejawna wzmianka do aktywacji w grupie.
- Autoryzowane polecenia sterujące (na przykład
/new) mogą omijać wymóg wzmianki. - Gdy wiadomość grupowa jest pomijana, ponieważ wzmianka jest wymagana, OpenClaw zapisuje ją jako oczekującą historię grupy i dołącza ją do następnej przetwarzanej wiadomości grupowej.
- Limit historii grupowej domyślnie wynosi
messages.groupChat.historyLimit(wartość zastępcza50). Możesz go nadpisać dla konta przezchannels.zalouser.historyLimit.
Wiele kont
Konta są mapowane na profilezalouser w stanie OpenClaw. Przykład:
Pisanie, reakcje i potwierdzenia dostarczenia
- OpenClaw wysyła zdarzenie pisania przed wysłaniem odpowiedzi (best-effort).
- Akcja reakcji na wiadomość
reactjest obsługiwana dlazalouserw akcjach kanału.- Użyj
remove: true, aby usunąć konkretną emoji reakcji z wiadomości. - Semantyka reakcji: Reactions
- Użyj
- Dla wiadomości przychodzących zawierających metadane zdarzeń OpenClaw wysyła potwierdzenia dostarczenia + odczytu (best-effort).
Rozwiązywanie problemów
Logowanie się nie utrzymuje:openclaw channels status --probe- Zaloguj się ponownie:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
- Użyj numerycznych identyfikatorów w
allowFrom/groupAllowFrom/groupsalbo dokładnych nazw znajomych/grup.
- Usuń wszelkie stare założenia dotyczące zewnętrznego procesu
zca. - Kanał działa teraz w pełni w OpenClaw, bez zewnętrznych binarnych plików CLI.
Powiązane
- Channels Overview — wszystkie obsługiwane kanały
- Pairing — uwierzytelnianie DM i przepływ parowania
- Groups — zachowanie czatu grupowego i ograniczanie do wzmianek
- Channel Routing — routowanie sesji dla wiadomości
- Security — model dostępu i utwardzanie