Wprowadzenie
OpenClaw integruje się z WhatsApp za pośrednictwem WhatsApp Web, korzystając z technologii Baileys. Kanał jest gotowy do użycia produkcyjnego i pozwala na prowadzenie rozmów prywatnych, obsługę grup, wymianę mediów oraz konfigurację reakcji.
Metody instalacji
Wtyczkę WhatsApp można zainstalować na trzy sposoby:
- Kreator konfiguracji:
openclaw onboardlubopenclaw channels add --channel whatsapp - Logowanie:
openclaw channels login --channel whatsapp - Ręczna instalacja:
openclaw plugins install @openclaw/whatsapp
Szybka konfiguracja
Konfiguracja WhatsApp obejmuje cztery kroki:
- Ustaw politykę dostępu — określ, kto może pisać do bota (DM, grupy, lista dozwolonych)
- Połącz konto WhatsApp — zeskanuj kod QR poleceniem
openclaw channels login --channel whatsapp - Uruchom Gateway —
openclaw gateway - Zatwierdź parowanie — jeśli używasz trybu parowania:
openclaw pairing approve whatsapp KOD
OpenClaw zaleca używanie dedykowanego numeru telefonu zamiast prywatnego konta, gdy jest to możliwe.
Wzorce wdrożeń
Dedykowany numer (zalecane)
Osobna tożsamość WhatsApp zapewnia wyraźne granice routingu i minimalną konfigurację polityki. Użyj dmPolicy: "allowlist" z listą zaufanych numerów.
Numer osobisty
Możesz też korzystać z osobistego konta WhatsApp. W takim wypadku włącz tryb samokonwersacji (selfChatMode: true) i dodaj swój numer do allowFrom. System automatycznie pominie potwierdzenia odczytu i auto-wyzwalacze dla wiadomości do siebie.
Kontrola dostępu
Polityka DM
- pairing (domyślny) — nieznani nadawcy otrzymują kod parowania
- allowlist — tylko skonfigurowane numery mogą pisać
- open — wymaga
"*"wallowFrom - disabled — wiadomości prywatne zablokowane
System akceptuje numery w formacie E.164 i automatycznie łączy zatwierdzenia parowania z listami dozwolonych.
Polityka grup
Grupy korzystają z dwuwarstwowego systemu: lista dozwolonych grup oraz lista dozwolonych nadawców w grupach.
- open — pomija ograniczenia nadawcy
- allowlist — wymaga dopasowania nadawcy
- disabled — blokuje wiadomości grupowe
Jeśli groupAllowFrom nie jest ustawione, system korzysta z allowFrom jako wartości domyślnej.
Wymaganie wzmianki
Domyślnie w grupach bot wymaga wzmianki (mention). Jawne wzmianki @nazwa, wzorce regex i wykrywanie odpowiedzi na wiadomości bota spełniają to wymaganie. Sesyjne komendy aktywacji: /activation mention lub /activation always.
Obsługa wiadomości
Kontekst przychodzących wiadomości
Wiadomości zawierają kontekst odpowiedzi sformatowany jako:
[Replying to <nadawca> id:<stanzaId>]
<treść lub placeholder mediów>
[/Replying]
Media
Obsługiwane typy mediów: obrazy, wideo, audio (notatki głosowe PTT), dokumenty i naklejki. Domyślny limit rozmiaru to 50 MB (mediaMaxMb). Format audio/ogg jest automatycznie konwertowany do audio/ogg; codecs=opus. Animowane GIF-y działają z ustawieniem gifPlayback: true.
Dzielenie tekstu
Domyślny limit to 4000 znaków (textChunkLimit). Tryby podziału:
- length — dzielenie po osiągnięciu limitu znaków
- newline — preferuje dzielenie na granicach akapitów
Reakcje
Ustawienie reactionLevel kontroluje używanie reakcji emoji:
- off — brak reakcji
- ack — tylko potwierdzenie odbioru
- minimal (domyślny) — konserwatywne reakcje agenta
- extensive — zachęcanie do częstych reakcji
Reakcje potwierdzające są wysyłane po zaakceptowaniu wiadomości, przed wygenerowaniem odpowiedzi. Ewentualne niepowodzenia nie blokują dostarczenia odpowiedzi.
Zarządzanie wieloma kontami
Możesz skonfigurować wiele kont WhatsApp w sekcji channels.whatsapp.accounts. Domyślnie używane jest konto default, a jeśli nie istnieje — pierwsze w kolejności sortowania. Dane uwierzytelniające przechowywane są w ~/.openclaw/credentials/whatsapp/<accountId>/creds.json.
Wylogowanie: openclaw channels logout --channel whatsapp [--account <id>]
Rozwiązywanie problemów
- Brak połączenia — uruchom
openclaw channels login --channel whatsappi sprawdźopenclaw channels status - Rozłączenia — wykonaj
openclaw doctoriopenclaw logs --follow - Błędy wysyłki — sprawdź, czy Gateway działa i konto jest połączone
- Ignorowane wiadomości grupowe — zweryfikuj
groupPolicy, listy dozwolonych, wpisygroups, wymaganie wzmianki i duplikację kluczy w JSON5 - Runtime Bun — użyj Node zamiast Bun, który jest oznaczony jako niekompatybilny