WhatsApp mit Python senden und empfangen
Das Empfangen erfolgt über eine Route in Ihrem Webframework, die Metas GET zur Verifizierung beantwortet und POSTs akzeptiert. Zum Senden senden Sie eine HTTPS-Anfrage an die Cloud API mit der phone number id und dem Token der Nummer. Kein SDK von uns und nichts zu installieren.
Ein GET für Metas Verifizierung und ein POST für Ereignisse. Das ist die Empfangsseite.
Zeitfenster nach einer Nachricht des Kunden, in dem Freitext gesendet werden kann.
Der Fehler, der beim Senden von Freitext außerhalb dieses Zeitfensters zurückgegeben wird.
Wie empfangen Sie Nachrichten in Python?
Mit zwei Handlern auf einer Route, in dem Framework, das Sie bereits verwenden.
Der GET-Handler beantwortet Metas Verifizierung. Er liest hub.mode, hub.verify_token und hub.challenge aus der Query-Zeichenfolge, prüft das Token gegen Ihr eigenes und gibt die Challenge als rohen Body zurück. Hier JSON zurückzugeben, ist der häufigste Fehler und schlägt still fehl.
Der POST-Handler empfängt Ereignisse. Geben Sie schnell 200 zurück und erledigen Sie die Arbeit danach, denn Meta wertet eine langsame Antwort als Fehler und wiederholt die Anfrage. Das führt dazu, dass dieselbe Nachricht zweimal verarbeitet wird. Stellen Sie sie in eine Warteschlange oder übergeben Sie sie an eine Hintergrundaufgabe, statt sie inline zu verarbeiten.
Nachrichten enthalten eine wamid message id. Eine Deduplizierung anhand dieser ID lohnt sich von Anfang an, da Wiederholungen normal und keine Ausnahme sind.
Wie senden Sie?
Ein POST an den messages Endpoint der Cloud API für die phone number id, mit einem Bearer-Token.
Beide Werte stammen aus der Verbindung: Das Dashboard zeigt sie an, und get_api_credentials gibt sie zurück, wenn Sie sie lieber von einem Assistenten abrufen lassen. Nichts an diesem Aufruf ist spezifisch für uns, daher funktioniert jede HTTP-Bibliothek und die Anfrage sieht genau wie in Metas eigener Dokumentation aus.
Was sich mit dem Zeitablauf ändert, ist der Body. Innerhalb von 24 Stunden nach der letzten Nachricht des Kunden senden Sie ein text-Objekt. Außerhalb dieses Zeitraums senden Sie ein template-Objekt mit dem Namen eines genehmigten Templates und seiner Sprache. Ein Client, der nur die erste Form kennt, funktioniert beim Testen perfekt und scheitert bei der ersten Nachricht über Nacht mit error 131047.
Was braucht ein Produktions-Handler darüber hinaus?
Drei Dinge, die leicht übersprungen und später teuer ergänzt werden.
Deduplizieren Sie anhand der message id, da Meta Anfragen wiederholt. Prüfen Sie die Signatur der Anfrage, wenn Ihr Endpoint öffentlich erreichbar ist, denn sonst kann jeder, der Ihre URL kennt, dort posten. Und berücksichtigen Sie, wie lange die letzte Nachricht des Kontakts zurückliegt, damit der Sendeweg ohne menschliche Entscheidung text oder template auswählt.
Dafür brauchen Sie weder ein Framework noch eine Bibliothek. Es sind eine Menge, eine Prüfung und ein Vergleich. Wenn diese vor dem ersten Kunden eingerichtet sind, läuft die Integration ruhig, statt Sie ständig zu alarmieren.
Häufige Fehler
- JSON aus dem Verifizierungs-GET statt des rohen Challenge-Werts zurückgeben.
- Inline verarbeiten, bevor 200 zurückgegeben wird. Meta wiederholt langsame Antworten, und Sie verarbeiten die Nachricht zweimal.
- Freitext senden, ohne das Zeitfenster zu prüfen. Das gibt 131047 zurück und sieht so aus, als wäre nichts passiert.
Verbinden Sie die Nummer auf easycoexistence.com, setzen Sie das Webhook-Ziel auf Ihre Route und lesen Sie phone number id und Token aus dem Dashboard. Ab US$ 9 pro Nummer und Monat, bei höherem Volumen nur US$ 2, die ersten 7 Tage kostenlos.
Häufig gestellte Fragen
Gibt es ein Python-SDK?
Nicht von uns, und Sie brauchen keines. Die API gehört Meta, ist von Meta dokumentiert und mit jeder HTTP-Bibliothek erreichbar.
Welches Framework sollte ich verwenden?
Jedes. Voraussetzung ist eine Route, die einen GET beantwortet und einen POST akzeptiert. Das kann jedes Python-Webframework.
Wie verhindere ich, dass eine Nachricht zweimal verarbeitet wird?
Deduplizieren Sie anhand der wamid message id in der Payload. Meta wiederholt Anfragen absichtlich, daher ist dies erwartetes Verhalten und kein Sonderfall.
Kann das Team weiterhin das Telefon verwenden?
Ja. Coexistence lässt die WhatsApp Business App auf derselben Nummer weiterlaufen, und Ihr Handler sieht die gesendeten Nachrichten als Echo-Ereignis.
Weiterlesen
Bereit für den Start?
Richten Sie WhatsApp Coexistence in wenigen Minuten statt Monaten ein. Die App funktioniert weiterhin auf dem Telefon.
Kostenlose Testphase startenVerifiziert am