Στείλτε και λάβετε WhatsApp από Python
Η λήψη είναι μια διαδρομή στο web framework σας που απαντά στο GET επαλήθευσης της Meta και δέχεται POSTs. Η αποστολή είναι ένα HTTPS αίτημα στο Cloud API με το phone number id και το token του αριθμού. Δεν χρειάζεστε δικό μας SDK ούτε εγκατάσταση.
Ένα GET για την επαλήθευση της Meta και ένα POST για τα events. Αυτή είναι η πλευρά της λήψης.
Το χρονικό παράθυρο μετά από μήνυμα πελάτη, μέσα στο οποίο αποστέλλεται ελεύθερο κείμενο.
Το σφάλμα που επιστρέφεται όταν στέλνετε ελεύθερο κείμενο εκτός αυτού του παραθύρου.
Πώς λαμβάνετε μηνύματα σε Python;
Με δύο handlers σε μία διαδρομή, σε όποιο framework χρησιμοποιείτε ήδη.
Ο GET handler απαντά στην επαλήθευση της Meta. Διαβάζει τα hub.mode, hub.verify_token και hub.challenge από το query string, ελέγχει το token έναντι του δικού σας και επιστρέφει το challenge ως raw body. Η επιστροφή JSON εδώ είναι το συχνότερο λάθος και αποτυγχάνει σιωπηλά.
Ο POST handler λαμβάνει events. Επιστρέψτε γρήγορα 200 και κάντε την εργασία μετά, επειδή η Meta θεωρεί την αργή απόκριση αποτυχία και θα επαναλάβει το αίτημα, με αποτέλεσμα να χειριστείτε το ίδιο μήνυμα δύο φορές. Βάλτε το σε queue ή παραδώστε το σε background task, αντί να κάνετε την επεξεργασία inline.
Τα μηνύματα φτάνουν με wamid message id. Αξίζει να κάνετε deduplication με βάση αυτό από την αρχή, επειδή τα retries είναι φυσιολογικά και όχι εξαίρεση.
Πώς στέλνετε;
Ένα POST στο messages endpoint του Cloud API για το phone number id, με bearer token.
Και οι δύο τιμές προέρχονται από τη σύνδεση: το dashboard τις εμφανίζει και η get_api_credentials τις επιστρέφει, αν προτιμάτε να τις ανακτήσει ένας assistant. Τίποτα στην κλήση δεν είναι ειδικό για εμάς, επομένως λειτουργεί οποιαδήποτε HTTP library και το αίτημα είναι ακριβώς όπως στην τεκμηρίωση της Meta.
Αυτό που αλλάζει ανάλογα με τον χρόνο είναι το body. Εντός 24 ωρών από το τελευταίο μήνυμα του πελάτη στέλνετε ένα text object. Εκτός αυτού του διαστήματος στέλνετε ένα template object, με εγκεκριμένο template και τη γλώσσα του. Ένας client που γνωρίζει μόνο το πρώτο σχήμα λειτουργεί άψογα στις δοκιμές και αποτυγχάνει στο πρώτο νυχτερινό μήνυμα, επιστρέφοντας error 131047.
Τι χρειάζεται ένας production handler επιπλέον;
Τρία πράγματα που παραλείπονται εύκολα και κοστίζουν ακριβά αν προστεθούν αργότερα.
Κάντε deduplication με βάση το message id, επειδή η Meta κάνει retries. Επαληθεύστε την υπογραφή του αιτήματος αν είστε δημόσια εκτεθειμένοι, γιατί διαφορετικά οποιοσδήποτε γνωρίζει το URL σας μπορεί να κάνει POST σε αυτό. Και ελέγξτε πόσος χρόνος πέρασε από το τελευταίο μήνυμα της επαφής, ώστε η διαδρομή αποστολής να επιλέγει text ή template χωρίς ανθρώπινη απόφαση.
Τίποτα από αυτά δεν χρειάζεται framework ή library. Είναι ένα σύνολο, ένας έλεγχος και μια σύγκριση, και η εφαρμογή τους πριν από τον πρώτο client είναι η διαφορά ανάμεσα σε μια integration που λειτουργεί αθόρυβα και σε μία που σας ειδοποιεί.
Συνηθισμένα λάθη
- Επιστροφή JSON από το GET επαλήθευσης αντί για την raw τιμή του challenge.
- Επεξεργασία inline πριν από την επιστροφή 200. Η Meta επαναλαμβάνει τις αργές αποκρίσεις και χειρίζεστε το μήνυμα δύο φορές.
- Αποστολή ελεύθερου κειμένου χωρίς έλεγχο του παραθύρου. Επιστρέφει 131047 και φαίνεται σαν να μη συνέβη τίποτα.
Συνδέστε τον αριθμό στο easycoexistence.com, ορίστε τον προορισμό του webhook στη διαδρομή σας και διαβάστε το phone number id και το token από το dashboard. Από US$ 9 ανά αριθμό τον μήνα, έως US$ 2 σε μεγάλο όγκο, με τις πρώτες 7 ημέρες δωρεάν.
Συχνές ερωτήσεις
Υπάρχει Python SDK;
Όχι από εμάς και δεν χρειάζεστε κάποιο. Το API ανήκει στη Meta, τεκμηριώνεται από τη Meta και είναι προσβάσιμο με οποιαδήποτε HTTP library.
Ποιο framework πρέπει να χρησιμοποιήσω;
Οποιοδήποτε. Η απαίτηση είναι μια διαδρομή που απαντά σε GET και δέχεται POST, κάτι που προσφέρει κάθε Python web framework.
Πώς αποφεύγω να χειριστώ ένα μήνυμα δύο φορές;
Κάντε deduplication με βάση το wamid message id στο payload. Η Meta κάνει retries από σχεδιασμό, επομένως αυτό είναι αναμενόμενο και όχι edge case.
Μπορεί η ομάδα να συνεχίσει να χρησιμοποιεί το τηλέφωνο;
Ναι. Το Coexistence διατηρεί το WhatsApp Business app ενεργό στον ίδιο αριθμό και ο handler σας βλέπει όσα στέλνουν ως echo event.
Συνεχίστε την ανάγνωση
Έτοιμοι να ξεκινήσετε;
Ρυθμίστε το WhatsApp Coexistence σε λίγα λεπτά, όχι σε μήνες. Η εφαρμογή συνεχίζει να λειτουργεί στο τηλέφωνο.
Ξεκινήστε δωρεάν δοκιμήΕπαληθεύτηκε στις