easyCoexistence
Zaloguj sięRozpocznij bezpłatny okres próbny
Meta Tech Provider

Wysyłanie i odbieranie wiadomości WhatsApp z Pythona

Odbieranie to trasa w Twoim frameworku webowym, która odpowiada na weryfikacyjne żądanie GET od Meta i przyjmuje żądania POST. Wysyłanie to żądanie HTTPS do Cloud API z phone number id numeru i tokenem. Nie potrzebujesz naszego SDK ani niczego instalować.

2 handlers

GET do weryfikacji Meta i POST dla zdarzeń. To część odpowiedzialna za odbieranie.

24 hours

Okno po wiadomości klienta, w którym można wysłać tekst bez szablonu.

131047

Błąd zwracany przy wysyłaniu tekstu poza tym oknem.

Jak odbierać wiadomości w Pythonie?

Za pomocą dwóch handlerów na jednej trasie, w dowolnym frameworku, którego już używasz.

Handler GET odpowiada na weryfikację Meta. Odczytuje hub.mode, hub.verify_token i hub.challenge z parametrów zapytania, sprawdza token względem własnego i zwraca challenge jako surową treść odpowiedzi. Zwracanie tutaj JSON to najczęstszy błąd i kończy się cichą porażką.

Handler POST odbiera zdarzenia. Szybko zwróć 200 i wykonaj pracę później, ponieważ Meta uznaje powolną odpowiedź za błąd i ponawia żądanie, co oznacza obsłużenie tej samej wiadomości dwa razy. Dodaj ją do kolejki albo przekaż zadaniu w tle, zamiast przetwarzać ją bezpośrednio.

Wiadomości przychodzą z identyfikatorem wiadomości wamid. Warto od początku usuwać duplikaty na jego podstawie, ponieważ ponowienia są normalne, a nie wyjątkowe.

Jak wysyłać wiadomości?

Jedno żądanie POST do endpointu messages w Cloud API dla phone number id, z tokenem typu bearer.

Obie wartości pochodzą z połączenia: panel je pokazuje, a get_api_credentials zwraca je, jeśli wolisz, aby pobrał je asystent. To żądanie nie jest specyficzne dla nas, więc działa z dowolną biblioteką HTTP i wygląda dokładnie tak jak w dokumentacji Meta.

Czas zmienia treść żądania. W ciągu 24 godzin od ostatniej wiadomości klienta wysyłasz obiekt tekstowy. Po tym czasie wysyłasz obiekt szablonu z nazwą zatwierdzonego szablonu i jego językiem. Klient znający tylko pierwszy format działa bez problemu w testach, ale zawodzi przy pierwszej wiadomości wysłanej w nocy i zwraca błąd 131047.

Czego handler produkcyjny potrzebuje poza tym?

Trzech rzeczy, które łatwo pominąć, a trudno i drogo dodać później.

Usuwaj duplikaty na podstawie identyfikatora wiadomości, ponieważ Meta ponawia żądania. Weryfikuj podpis żądania, jeśli endpoint jest publiczny, bo inaczej każdy, kto pozna Twój URL, może wysyłać na niego żądania. Rozróżniaj też czas od ostatniej wiadomości kontaktu, aby ścieżka wysyłania automatycznie wybierała tekst albo szablon.

Żadna z tych rzeczy nie wymaga frameworka ani biblioteki. To zbiór, sprawdzenie i porównanie. Wdrożenie ich przed pierwszym klientem odróżnia integrację działającą spokojnie od takiej, która wymaga Twojej interwencji.

Typowe błędy

  • Zwracanie JSON z weryfikacyjnego GET zamiast surowej wartości challenge.
  • Przetwarzanie żądania przed zwróceniem 200. Meta ponawia powolne żądania, więc obsługujesz wiadomość dwa razy.
  • Wysyłanie tekstu bez sprawdzenia okna. Zwraca 131047 i wygląda, jakby nic się nie stało.
Z EasyCoexistence zrobisz to

Połącz numer na easycoexistence.com, ustaw miejsce docelowe webhooka na swoją trasę i odczytaj phone number id oraz token z panelu. Od US$ 9 za numer miesięcznie, do US$ 2 przy większym wolumenie, z pierwszymi 7 dniami bezpłatnie.

Najczęściej zadawane pytania

Czy istnieje SDK dla Pythona?

Nie od nas i nie potrzebujesz go. API należy do Meta, jest przez nią udokumentowane i działa z dowolną biblioteką HTTP.

Którego frameworka użyć?

Dowolnego. Potrzebujesz trasy, która odpowiada na GET i przyjmuje POST, a każdy framework webowy Pythona to obsługuje.

Jak uniknąć obsługi wiadomości dwa razy?

Usuwaj duplikaty na podstawie identyfikatora wiadomości wamid w payloadzie. Meta celowo ponawia żądania, więc to oczekiwane zachowanie, a nie rzadki przypadek.

Czy zespół nadal może korzystać z telefonu?

Tak. Coexistence pozwala aplikacji WhatsApp Business działać na tym samym numerze, a Twój handler widzi wysłane wiadomości jako zdarzenia echo.

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óbny

Zweryfikowano w

Wysyłanie WhatsApp z Pythona