Mengirim dan menerima WhatsApp dari Python
Menerima pesan dilakukan melalui rute di framework web Anda yang menjawab GET verifikasi Meta dan menerima POST. Mengirim pesan dilakukan melalui permintaan HTTPS ke Cloud API dengan phone number id dan token nomor tersebut. Tidak ada SDK dari kami dan tidak ada yang perlu dipasang.
GET untuk verifikasi Meta dan POST untuk event. Itulah sisi penerimaan.
Jendela setelah pesan pelanggan, saat pesan teks gratis dapat dikirim.
Kesalahan yang dikembalikan saat Anda mengirim pesan teks gratis di luar jendela tersebut.
Bagaimana cara menerima pesan di Python?
Gunakan dua handler pada satu rute, dalam framework apa pun yang sudah Anda gunakan.
Handler GET menjawab verifikasi Meta. Handler ini membaca hub.mode, hub.verify_token, dan hub.challenge dari string kueri, memeriksa token tersebut terhadap token milik Anda, lalu mengembalikan challenge sebagai body mentah. Mengembalikan JSON di sini adalah kesalahan yang paling umum, dan kegagalannya tidak terlihat.
Handler POST menerima event. Kembalikan 200 dengan cepat dan lakukan pekerjaan setelahnya, karena Meta menganggap respons lambat sebagai kegagalan dan akan mencoba kembali. Akibatnya, pesan yang sama dapat diproses dua kali. Masukkan ke antrean atau serahkan ke tugas latar belakang, bukan memprosesnya secara langsung.
Pesan tiba dengan ID pesan wamid. Deduplikasi berdasarkan ID ini layak dilakukan sejak awal, karena mencoba kembali adalah hal yang normal, bukan pengecualian.
Bagaimana cara mengirim pesan?
Kirim satu POST ke endpoint pesan Cloud API untuk phone number id, dengan bearer token.
Kedua nilai tersebut berasal dari koneksi: dashboard menampilkannya, dan get_api_credentials mengembalikannya jika Anda ingin asisten mengambilnya. Tidak ada bagian dari panggilan ini yang khusus untuk kami, sehingga library HTTP apa pun dapat digunakan dan permintaannya terlihat persis seperti dokumentasi Meta sendiri.
Yang berubah berdasarkan waktu adalah body-nya. Dalam 24 jam sejak pesan terakhir pelanggan, kirim objek text. Di luar jangka waktu tersebut, kirim objek template yang mencantumkan template yang telah disetujui beserta bahasanya. Klien yang hanya mengenal bentuk pertama akan bekerja sempurna saat pengujian, lalu gagal pada pesan pertama yang dikirim semalaman dan mengembalikan kesalahan 131047.
Apa yang dibutuhkan handler produksi selain itu?
Ada tiga hal yang mudah dilewati dan mahal untuk ditambahkan nanti.
Lakukan deduplikasi berdasarkan ID pesan, karena Meta mencoba kembali. Verifikasi tanda tangan permintaan jika Anda terekspos secara publik, karena siapa pun yang mengetahui URL Anda dapat mengirim POST ke sana. Buat juga percabangan berdasarkan berapa lama sejak kontak terakhir kali mengirim pesan, agar jalur pengiriman memilih text atau template tanpa keputusan manusia.
Tidak satu pun dari hal ini membutuhkan framework atau library. Semuanya hanya berupa set, pemeriksaan, dan perbandingan. Menyiapkannya sebelum klien pertama adalah perbedaan antara integrasi yang berjalan tenang dan integrasi yang terus mengirim notifikasi masalah.
Kesalahan umum
- Mengembalikan JSON dari GET verifikasi, bukan nilai challenge mentah.
- Memproses secara langsung sebelum mengembalikan 200. Meta mencoba kembali pada respons lambat dan Anda memproses pesan dua kali.
- Mengirim pesan teks gratis tanpa memeriksa jendela. Ini mengembalikan 131047 dan membuatnya tampak seolah tidak terjadi apa-apa.
Hubungkan nomor di easycoexistence.com, atur tujuan webhook ke rute Anda, lalu baca phone number id dan token dari dashboard. Mulai dari US$ 9 per nomor per bulan, turun menjadi US$ 2 dalam volume besar, dengan 7 hari pertama gratis.
Pertanyaan yang sering diajukan
Apakah ada SDK Python?
Tidak dari kami, dan Anda tidak membutuhkannya. API ini milik Meta, didokumentasikan oleh Meta, dan dapat diakses dengan library HTTP apa pun.
Framework apa yang sebaiknya saya gunakan?
Apa saja. Syaratnya adalah rute yang menjawab GET dan menerima POST, yang dapat dilakukan semua framework web Python.
Bagaimana cara menghindari pemrosesan pesan dua kali?
Lakukan deduplikasi berdasarkan ID pesan wamid di dalam payload. Meta memang mencoba kembali, jadi hal ini diharapkan, bukan kasus khusus.
Apakah tim tetap dapat menggunakan ponsel?
Ya. Coexistence membuat aplikasi WhatsApp Business tetap berfungsi pada nomor yang sama, dan handler Anda melihat pesan yang mereka kirim sebagai event echo.
Lanjut membaca
Siap memulai?
Konfigurasikan WhatsApp Coexistence dalam hitungan menit, bukan bulan. Aplikasi tetap berfungsi di ponsel.
Mulai uji coba gratisDiverifikasi pada