Webhook account_update i każdy powód rozłączenia
account_update to sposób, w jaki Meta informuje o zmianie stanu połączenia. Pole event wskazuje, co się stało, a przy usunięciu disconnection_info.reason podaje przyczynę. Od niej zależy, czy numer powróci, czy został utracony.
Zdarzenie wysyłane przez Meta po odinstalowaniu aplikacji z konta.
Nazwane powody rozłączenia, które może zawierać usunięcie.
Okno nieaktywności głównego urządzenia, wysyłane jako PRIMARY_INACTIVITY.
Jakie zdarzenia zawiera account_update?
PARTNER_REMOVED, gdy aplikacja zostaje odinstalowana z konta WhatsApp Business. To autorytatywny sygnał rozłączenia, na którym warto oprzeć implementację, zamiast wnioskować o rozłączeniu na podstawie zmiany wartości pola na false.
ACCOUNT_OFFBOARDED, gdy numer zostaje całkowicie wycofany. ACCOUNT_RECONNECTED, gdy wcześniej usunięte połączenie wraca. Są też zdarzenia egzekwowania zasad: ACCOUNT_RESTRICTION i ACCOUNT_VIOLATION, a także zdarzenia, których nazwy zawierają DISABLED lub BAN.
W tym miejscu pojawiają się również wyniki weryfikacji i zatwierdzenia, z nazwami zdarzeń zawierającymi VERIFIED lub APPROVED. Obsługa powinna przełączać się na podstawie nazwy zdarzenia, a nierozpoznane traktować informacyjnie zamiast kończyć działanie błędem, ponieważ Meta dodaje zdarzenia bez uprzedzenia.
Jakie są powody rozłączenia?
Jest ich sześć i oznaczają zupełnie różne sytuacje.
PRIMARY_INACTIVITY to reguła około czternastu dni: aplikacja WhatsApp Business nie została otwarta na głównym urządzeniu. To przypadek możliwy do naprawienia i zdecydowanie najczęstszy.
COMPANION_INACTIVITY oznacza to samo na urządzeniu dodatkowym, ale przy dłuższym okresie około trzydziestu dni.
BUSINESS_DOWNGRADE oznacza powrót numeru do konsumenckiej aplikacji WhatsApp. Kończy to Coexistence, ponieważ Coexistence wymaga aplikacji Business.
CHANGE_NUMBER oznacza zmianę samego numeru telefonu. USER_RE_REGISTERED oznacza ponowną rejestrację na nowym urządzeniu. ACCOUNT_DISCONNECTED oznacza, że klient rozłączył numer celowo albo zrobiło to egzekwowanie zasad.
Powód pojawia się również wraz z disconnection_info.initiated_by, które wskazuje, czy zrobiła to osoba, czy system.
Dlaczego powód jest ważniejszy niż zdarzenie?
Ponieważ samo PARTNER_REMOVED nie mówi, jakie działanie należy podjąć.
Numer usunięty z powodu PRIMARY_INACTIVITY powróci: firma otwiera aplikację, ponownie się łączy i wszystko działa dalej. Potraktowanie tego jako odejścia klienta skutkuje wysłaniem wiadomości o anulowaniu do osoby, która nadal jest klientem.
Numer usunięty z powodu BUSINESS_DOWNGRADE lub ACCOUNT_DISCONNECTED to inna sytuacja. Potraktowanie jej jako tymczasowej może pozostawić połączenie na zawsze w stanie zawieszenia.
Gdy usunięcie nie zawiera powodu, pole initiated_by jest rozwiązaniem zastępczym: usunięcie wykonane przez osobę wskazuje na świadomą decyzję, a niewyjaśnione usunięcie systemowe nie. Warto rozstrzygać tę różnicę w kodzie, zamiast później wyjaśniać ją w rozmowie z pomocą techniczną.
Typowe błędy
- Traktowanie każdego PARTNER_REMOVED tak samo. Powód odróżnia dwa tygodnie ciszy od klienta, który odszedł.
- Wnioskowanie o rozłączeniu na podstawie zmiany wartości pola na false zamiast na podstawie tego zdarzenia. To powoduje fałszywe alarmy.
- Kończenie działania po nierozpoznanej nazwie zdarzenia. Meta dodaje zdarzenia, a obsługa powinna pomijać te, których nie zna.
EasyCoexistence rozpoznaje każdy z tych powodów, zapisuje go na osi czasu połączenia i odróżnia możliwe do naprawienia usunięcie z powodu nieaktywności od numeru, który rzeczywiście został utracony.
Najczęściej zadawane pytania
Czy PARTNER_REMOVED jest trwałe?
Zwykle nie. Większość przypadków zawiera PRIMARY_INACTIVITY, czyli aplikacja nie została otwarta, a ponowne połączenie przywraca wszystko.
Czy ponowne połączenie przywraca miejsce docelowe webhooka?
Nie, i właśnie na tym polega pułapka. Miejsce docelowe jest nadpisaniem w subskrypcji aplikacji i zostaje odinstalowane razem z nią. Trzeba zastosować je ponownie.
Czym jest COMPANION_INACTIVITY?
To ten sam rodzaj nieaktywności na urządzeniu dodatkowym, a nie głównym, przy dłuższym okresie około trzydziestu dni.
Czy mogę otrzymać to zdarzenie bez powodu?
Tak. W takim przypadku disconnection_info.initiated_by jest jedynym sygnałem wskazującym, czy rozłączenie było celowe.
Czytaj dalej
Gotowy, aby zacząć?
Skonfiguruj WhatsApp Coexistence w kilka minut, nie miesięcy. Aplikacja nadal działa na telefonie.
Rozpocznij bezpłatny okres próbnyZweryfikowano w