WhatsApp verzenden en ontvangen vanuit Python
Ontvangen gebeurt via een route in je webframework die Meta's verificatie-GET beantwoordt en POST-verzoeken accepteert. Verzenden gebeurt via een HTTPS-verzoek naar de Cloud API met de phone number id en het token van het nummer. Geen SDK van ons en niets om te installeren.
Een GET voor Meta's verificatie en een POST voor gebeurtenissen. Dat is de ontvangende kant.
Het venster na een bericht van een klant waarin je vrije tekst kunt verzenden.
De fout die je krijgt wanneer je vrije tekst buiten dat venster verzendt.
Hoe ontvang je berichten in Python?
Met twee handlers op één route, in welk framework je ook al gebruikt.
De GET-handler beantwoordt Meta's verificatie. Hij leest hub.mode, hub.verify_token en hub.challenge uit de querystring, controleert het token tegen je eigen token en retourneert de challenge als onbewerkte body. Hier JSON retourneren is de meest voorkomende fout en mislukt stilletjes.
De POST-handler ontvangt gebeurtenissen. Retourneer snel 200 en doe het werk daarna, omdat Meta een trage reactie als fout behandelt en opnieuw probeert. Daardoor kun je hetzelfde bericht twee keer verwerken. Zet het in een wachtrij of geef het aan een achtergrondtaak, in plaats van de verwerking direct uit te voeren.
Berichten komen binnen met een wamid-bericht-ID. Het is verstandig daarop vanaf het begin te dedupliceren, omdat nieuwe pogingen normaal zijn en geen uitzondering.
Hoe verzend je?
Eén POST naar het messages-endpoint van de Cloud API voor de phone number id, met een bearer-token.
Beide waarden komen uit de verbinding: het dashboard toont ze en get_api_credentials retourneert ze als je liever wilt dat een assistent ze ophaalt. Niets aan deze aanroep is specifiek voor ons, dus elke HTTP-bibliotheek werkt en het verzoek ziet er precies uit zoals in Meta's eigen documentatie.
Wat verandert door de timing is de body. Binnen 24 uur na het laatste bericht van de klant verzend je een text-object. Daarna verzend je een template-object met de naam van een goedgekeurd template en de taal ervan. Een client die alleen de eerste vorm kent, werkt perfect tijdens tests en mislukt bij het eerste nachtelijke bericht met fout 131047.
Wat heeft een productiehandler daarnaast nodig?
Drie dingen die je makkelijk overslaat, maar die later duur zijn om toe te voegen.
Dedupliceer op de bericht-ID, omdat Meta opnieuw probeert. Controleer de verzoekhandtekening als je publiek bereikbaar bent, want anders kan iedereen die je URL kent ernaar posten. En bepaal hoe lang geleden de contactpersoon voor het laatst schreef, zodat het verzendpad automatisch text of template kiest.
Hiervoor heb je geen framework of bibliotheek nodig. Het zijn een set, een controle en een vergelijking. Als je ze vóór de eerste klant implementeert, krijg je een integratie die stil werkt in plaats van een integratie die je voortdurend waarschuwt.
Veelgemaakte fouten
- JSON retourneren vanuit de verificatie-GET in plaats van de onbewerkte challengewaarde.
- Inline verwerken voordat je 200 retourneert. Meta probeert trage reacties opnieuw en je verwerkt het bericht twee keer.
- Vrije tekst verzenden zonder het venster te controleren. Dat retourneert 131047 en lijkt alsof er niets is gebeurd.
Verbind het nummer via easycoexistence.com, stel de webhookbestemming in op je route en lees de phone number id en het token uit het dashboard. Vanaf US$ 9 per nummer per maand, dalend tot US$ 2 bij volume, met de eerste 7 dagen gratis.
Veelgestelde vragen
Is er een Python-SDK?
Niet van ons en je hebt er geen nodig. De API is van Meta, wordt door Meta gedocumenteerd en is bereikbaar met elke HTTP-bibliotheek.
Welk framework moet ik gebruiken?
Elke willekeurige. Je hebt een route nodig die een GET beantwoordt en een POST accepteert. Elk Python-webframework kan dat.
Hoe voorkom ik dat ik een bericht twee keer verwerk?
Dedupliceer op de wamid-bericht-ID in de payload. Meta probeert standaard opnieuw, dus dit is te verwachten en geen randgeval.
Kan het team de telefoon blijven gebruiken?
Ja. Coexistence houdt de WhatsApp Business-app actief op hetzelfde nummer en je handler ziet wat zij verzenden als een echo-gebeurtenis.
Lees verder
Klaar om te beginnen?
Stel WhatsApp Coexistence in enkele minuten in, niet maanden. De app blijft op je telefoon werken.
Start je gratis proefperiodeGeverifieerd op