zca-js, wewnątrz procesu, bez zewnętrznego pliku binarnego CLI.
Instalacja
Zalo Personal jest oficjalnym zewnętrznym pluginem, niedołączonym do rdzenia. Zainstaluj go przed użyciem:- Przypnij wersję:
openclaw plugins install @openclaw/zalouser@<version> - Z kopii roboczej kodu źródłowego:
openclaw plugins install ./path/to/local/zalouser-plugin - Szczegóły: Pluginy
Szybka konfiguracja
- Zainstaluj plugin (powyżej).
- Zaloguj się (kod QR, na komputerze z Gateway):
openclaw channels login --channel zalouser- Zeskanuj kod QR za pomocą aplikacji mobilnej Zalo.
- Włącz kanał:
- Uruchom ponownie Gateway (lub dokończ konfigurację).
- Dostęp do wiadomości prywatnych domyślnie korzysta z parowania; przy pierwszym kontakcie zatwierdź kod parowania.
Czym jest ta integracja
- Działa w całości wewnątrz procesu za pośrednictwem biblioteki
zca-js(bez zewnętrznego pliku binarnegozca/openzca). - Używa natywnych detektorów zdarzeń (
message,error) do odbierania wiadomości przychodzących. - Wysyła odpowiedzi bezpośrednio przez interfejs API JS (tekst/multimedia/link).
- Jest przeznaczona do zastosowań z „kontem osobistym”, w których interfejs Zalo Bot API nie jest dostępny.
Nazewnictwo
Identyfikator kanału tozalouser, aby wyraźnie wskazać, że automatyzowane jest osobiste konto użytkownika Zalo (nieoficjalnie). Identyfikator zalo jest zarezerwowany dla potencjalnej przyszłej oficjalnej integracji z interfejsem API Zalo.
Znajdowanie identyfikatorów (katalog)
Ograniczenia
- Tekst wychodzący jest dzielony na fragmenty po 2000 znaków (limit klienta Zalo).
- Strumieniowanie nie jest obsługiwane.
Kontrola dostępu (wiadomości prywatne)
channels.zalouser.dmPolicy: pairing | allowlist | open | disabled (domyślnie: pairing).
W channels.zalouser.allowFrom należy używać stabilnych identyfikatorów użytkowników Zalo. Można również odwoływać się do statycznych grup dostępu nadawców (accessGroup:<name>). Podczas interaktywnej konfiguracji wprowadzone nazwy mogą zostać przekształcone na identyfikatory za pomocą działającego wewnątrz procesu mechanizmu wyszukiwania kontaktów pluginu.
Jeśli w konfiguracji pozostanie nieprzetworzona nazwa, podczas uruchamiania zostanie przekształcona tylko wtedy, gdy włączono channels.zalouser.dangerouslyAllowNameMatching: true. Bez tego jawnego ustawienia kontrole nadawców w czasie działania opierają się wyłącznie na identyfikatorach, a nieprzetworzone nazwy są ignorowane podczas autoryzacji.
Zatwierdź za pomocą:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Dostęp grupowy (opcjonalny)
- Domyślnie:
channels.zalouser.groupPolicy = "allowlist"(grupy wymagają jawnego wpisu na liście dozwolonych). - Otwórz wszystkie grupy:
channels.zalouser.groupPolicy = "open". - Zablokuj wszystkie grupy:
channels.zalouser.groupPolicy = "disabled". - Przy
groupPolicy = "allowlist":- Kluczami
channels.zalouser.groupspowinny być stabilne identyfikatory grup; nazwy są przekształcane na identyfikatory podczas uruchamiania tylko wtedy, gdy włączonochannels.zalouser.dangerouslyAllowNameMatching: true. channels.zalouser.groupAllowFromokreśla, którzy nadawcy w dozwolonych grupach mogą aktywować bota; do statycznych grup dostępu nadawców można odwoływać się za pomocąaccessGroup:<name>.
- Kluczami
- Kreator konfiguracji może wyświetlić monit o listy dozwolonych grup.
- Domyślnie dopasowywanie listy dozwolonych grup opiera się wyłącznie na identyfikatorach. Nazwy, których nie udało się przekształcić, są ignorowane podczas autoryzacji, chyba że włączono
channels.zalouser.dangerouslyAllowNameMatching: true. channels.zalouser.dangerouslyAllowNameMatching: trueto awaryjny tryb zgodności, który ponownie włącza przekształcanie zmiennych nazw podczas uruchamiania i dopasowywanie nazw grup w czasie działania.- W przypadku zwykłych wiadomości grupowych
groupAllowFromnie używa zastępczoallowFrom: pozostawienie tej wartości pustej dla grupy znajdującej się na liście dozwolonych otwiera tę grupę dla dowolnego nadawcy. Wyjątkiem są autoryzowane polecenia sterujące (na przykład/new); gdygroupAllowFromjest puste, kontrole nadawcy polecenia używają zastępczoallowFrom.
channels.zalouser.groups.<id>.allow to starsza nazwa pola; bieżąca konfiguracja używa enabled. Polecenie openclaw doctor --fix automatycznie migruje allow do enabled.Wymaganie wzmianki w grupie
channels.zalouser.groups.<group>.requireMentionokreśla, czy odpowiedzi w grupie wymagają wzmianki.- Kolejność rozstrzygania: identyfikator grupy -> alias
group:<id>-> nazwa/skrót grupy (kandydaci oparci na nazwach mają zastosowanie tylko przydangerouslyAllowNameMatching: true) ->*-> wartość domyślna (true). - Dotyczy zarówno grup z listy dozwolonych, jak i trybu otwartych grup.
- Zacytowanie wiadomości bota jest traktowane jako niejawna wzmianka aktywująca grupę.
- Autoryzowane polecenia sterujące (na przykład
/new) mogą pomijać wymóg wzmianki. - Gdy wiadomość grupowa zostanie pominięta z powodu wymaganej wzmianki, OpenClaw zapisuje ją jako oczekującą historię grupy i dołącza do następnej przetwarzanej wiadomości grupowej.
- Limit historii grupy:
channels.zalouser.historyLimit, następniemessages.groupChat.historyLimit, a potem wartość zastępcza50.
Wiele kont
Konta są mapowane na profilezalouser w stanie OpenClaw. Przykład:
Zmienne środowiskowe
Profil można również wybrać za pomocą zmiennych środowiskowych:
Nazwy profili wybierają zapisane dane logowania Zalo w stanie OpenClaw. Kolejność rozstrzygania:
- Jawnie określony
profilew konfiguracji. ZALOUSER_PROFILE.ZCA_PROFILE.- Identyfikator konta w przypadku kont innych niż domyślne albo
defaultw przypadku konta domyślnego.
profile dla każdego konta w konfiguracji, aby jedna zmienna środowiskowa nie spowodowała współdzielenia tej samej sesji logowania przez wiele kont.
Wskaźnik pisania, reakcje i potwierdzenia dostarczenia
- OpenClaw wysyła zdarzenie pisania przed przekazaniem odpowiedzi do wysłania (w miarę możliwości).
- Akcja reakcji na wiadomość
reactjest obsługiwana dlazalouserw akcjach kanału.- Użyj
remove: true, aby usunąć określoną reakcję emoji z wiadomości. - Zasady działania reakcji: Reakcje
- Użyj
- W przypadku wiadomości przychodzących zawierających metadane zdarzenia OpenClaw wysyła potwierdzenia dostarczenia i wyświetlenia (w miarę możliwości).
Rozwiązywanie problemów
Logowanie nie jest zachowywane:openclaw channels status --probe- Zaloguj się ponownie:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
- Użyj identyfikatorów liczbowych w
allowFrom/groupAllowFromoraz stabilnych identyfikatorów grup wgroups. Jeśli celowo musisz używać dokładnych nazw znajomych lub grup, włączchannels.zalouser.dangerouslyAllowNameMatching: true.
zca/CLI:
- Usuń wszelkie założenia dotyczące zewnętrznego procesu
zca; kanał działa teraz w całości wewnątrz procesu za pośrednictwemzca-js, bez zewnętrznego pliku binarnego CLI.
Powiązane materiały
- Przegląd kanałów - wszystkie obsługiwane kanały
- Parowanie - uwierzytelnianie wiadomości prywatnych i przebieg parowania
- Grupy - działanie czatów grupowych i wymóg wzmianki
- Trasowanie kanałów - trasowanie sesji dla wiadomości
- Bezpieczeństwo - model dostępu i wzmacnianie zabezpieczeń