Webhook
Webhook memungkinkan Anda menerima callback HTTP secara real-time saat event terjadi pada instance WhatsApp Anda. Daripada polling API, Wappfy mendorong event ke server Anda saat terjadi.Event yang Didukung
Wappfy mendukung 12 jenis event webhook:Event Pesan
Event Pesan
| Event | Deskripsi |
|---|---|
message.received | Pesan masuk baru telah diterima. |
message.sent | Pesan keluar berhasil dikirim. |
message.delivered | Pesan terkirim telah diterima oleh perangkat penerima (tanda centang ganda). |
message.read | Pesan terkirim telah dibaca oleh penerima (tanda centang biru). |
message.failed | Pesan keluar gagal dikirim. |
message.reaction | Seseorang bereaksi terhadap pesan dengan emoji. |
Event Instance
Event Instance
| Event | Deskripsi |
|---|---|
instance.connected | Instance berhasil terhubung ke WhatsApp. |
instance.disconnected | Instance kehilangan koneksi WhatsApp. |
instance.qr | Kode QR baru tersedia untuk dipindai. |
Event Grup & Kontak
Event Grup & Kontak
| Event | Deskripsi |
|---|---|
group.joined | Peserta bergabung ke grup (termasuk bot itu sendiri). |
group.left | Peserta meninggalkan grup. |
contact.created | Kontak baru disimpan atau terdeteksi. |
Membuat Webhook
Daftarkan endpoint webhook untuk mulai menerima event.Opsi Konfigurasi
| Field | Tipe | Default | Deskripsi |
|---|---|---|---|
url | string | wajib | URL HTTPS yang akan menerima permintaan POST webhook. |
events | string[] | wajib | Array jenis event yang ingin di-subscribe. |
instance_id | string | null | Batasi webhook ke instance tertentu. Jika null, menerima event dari semua instance. |
secret | string | null | Secret yang digunakan untuk menghasilkan tanda tangan HMAC untuk verifikasi payload. |
retry_count | number | 3 | Jumlah percobaan ulang jika pengiriman gagal (0-5). |
timeout_ms | number | 10000 | Timeout permintaan dalam milidetik (1000-30000). |
Field
instance_id bersifat opsional. Jika tidak diisi, webhook akan menerima event dari semua instance di akun Anda.Melihat Daftar Webhook
Memperbarui Webhook
Perbarui URL, event, atau konfigurasi webhook yang sudah ada.Menghapus Webhook
Format Payload Pengiriman
Saat event terjadi, Wappfy mengirim permintaan POST ke URL webhook Anda dengan struktur berikut:Field Payload
| Field | Deskripsi |
|---|---|
id | ID pengiriman unik. Gunakan ini untuk deduplikasi. |
event | Jenis event yang memicu pengiriman ini. |
instance_id | Instance yang menghasilkan event. |
timestamp | Timestamp ISO 8601 kapan event terjadi. |
data | Payload spesifik event. Konten bervariasi berdasarkan jenis event. |
Verifikasi Tanda Tangan HMAC
Jika Anda menyediakansecret saat membuat webhook, setiap pengiriman akan menyertakan header X-Wappfy-Signature yang berisi tanda tangan HMAC-SHA256 dari body permintaan.
Selalu verifikasi tanda tangan ini untuk memastikan permintaan berasal dari Wappfy dan tidak diubah.
Contoh Verifikasi
Perilaku Percobaan Ulang
Jika server Anda tidak merespons dengan kode status2xx dalam waktu timeout_ms yang dikonfigurasi, Wappfy akan mencoba ulang pengiriman.
| Percobaan | Jeda |
|---|---|
| Percobaan ulang ke-1 | 10 detik |
| Percobaan ulang ke-2 | 60 detik |
| Percobaan ulang ke-3 | 5 menit |
| Percobaan ulang ke-4 | 30 menit |
| Percobaan ulang ke-5 | 2 jam |
Percobaan ulang berhenti saat respons
2xx diterima atau retry_count habis. Jumlah percobaan ulang default adalah 3.Melihat Riwayat Pengiriman
Periksa log pengiriman untuk webhook guna melihat percobaan pengiriman sebelumnya dan hasilnya.Contoh Payload Event
message.received
message.received
message.delivered
message.delivered
message.read
message.read
message.reaction
message.reaction
instance.connected
instance.connected
instance.qr
instance.qr
group.joined
group.joined
Praktik Terbaik
Respons dengan cepat
Kembalikan status
200 dalam waktu 5 detik. Proses event secara asinkron untuk menghindari timeout.Deduplikasi
Gunakan
id pengiriman untuk mendeteksi dan melewati pengiriman duplikat yang disebabkan oleh percobaan ulang.Verifikasi tanda tangan
Selalu validasi header
X-Wappfy-Signature jika Anda mengonfigurasi secret.Gunakan HTTPS
URL webhook harus menggunakan HTTPS. Endpoint HTTP akan ditolak.