Skip to main content

Integrasi Notifikasi Webhook

Webhook adalah mekanisme di mana Whapi secara otomatis mengirim data ke server penerima setiap kali ada aktivitas di nomor WhatsApp yang terhubung, seperti pesan masuk, perubahan status pesan, atau perubahan koneksi perangkat.

Tanpa webhook, satu-satunya cara mengetahui ada pesan masuk adalah dengan terus-menerus memanggil API secara berkala (polling), yang tidak efisien. Dengan webhook, data dikirim langsung ke server begitu event terjadi.

Prasyarat

  • Aplikasi Whapi sudah terinstal dan nomor WhatsApp sudah terhubung
  • Server atau endpoint publik yang bisa menerima HTTP POST request
  • Untuk pengujian lokal Anda bisa menggunakan ngrok.

Cara Mengaktifkan Webhook

Halaman manajemen perangkat

Langkah 1: Buka Pengaturan Perangkat

Masuk ke dashboard Whapi, pilih Perangkat, lalu klik Kelola Perangkat dan buka Kelola.

Langkah 2: Aktifkan Webhook

Di tab Fitur, aktifkan salah satu atau semua opsi webhook berikut sesuai kebutuhan:

Opsi WebhookFungsi
WebhookMengirim semua event utama: pesan masuk, status pesan, koneksi perangkat, aktivitas grup
Webhook MediaMengirim data file yang diterima: gambar, video, dokumen. Bisa dalam format base64 atau Media Key
Webhook StoryMengirim aktivitas story dari kontak yang terhubung

Langkah 3: Masukkan URL Endpoint

Halaman manajemen perangkat

Di tab Webhook, Isi kolom URL dengan alamat endpoint server yang akan menerima data webhook. Contoh:

https://namaserver.com/webhook/whapi

Untuk pengujian tanpa server publik, gunakan URL sementara dari webhook.site atau play.svix.com, atau jalankan tunnel lokal dengan Ngrok.

Langkah 4: Pilih Format Media (Opsional)

Jika Webhook Media diaktifkan, pilih format pengiriman file:

  • base64: File dikonversi ke string base64. Jika ingin mengembalikan ke file asli, silakan decode base64. (Ukuran payload akan sesuai dengan file yang dikirim)
  • Media Key: Hanya dikirim kunci referensi. File diambil terpisah via endpoint GET /media/{media_key}. Cocok untuk menghemat ukuran payload.
Mendapatkan file dari webhook Mendapatkan file dari Media Key

Langkah 5: Pilih Tipe Notifikasi

Halaman manajemen perangkat

Klik Kustomisasi Webhook untuk memilih tipe event yang akan dikirim. Daftar tipe event yang tersedia:

Tipe EventKeterangan
readyPerangkat sudah siap untuk mengirim pesan API
disconnectedPerangkat terputus dari layanan
messagePesan teks atau media masuk
message_ackPerubahan status pesan: sent, delivered, read, failed
change_statePerubahan status koneksi perangkat
group_joinAnggota baru bergabung ke grup
group_leaveAnggota keluar dari grup
group_updatePerubahan informasi grup (nama, deskripsi, dll)
scheduleNotifikasi pesan terjadwal terkirim
poll_updateNotifikasi hasil voting whatsapp
fromMeNotifikasi pesan yang dikirim ke nomor sendiri

Membuat Webhook Receiver di Server

// Mengambil body request mentah
$payload = file_get_contents('php://input');

// Mengonversi JSON menjadi array (jika payload dalam format JSON)
$data = json_decode($payload, true);

// Mencatat log ke file 'webhook.log'
if ($data) {
file_put_contents('webhook.log', "[" . date('Y-m-d H:i:s') . "] Payload: " . $payload . PHP_EOL, FILE_APPEND);
// Memberikan respon 200 OK ke pengirim
http_response_code(200);
echo "Webhook received successfully";
} else {
http_response_code(400);
echo "Invalid payload";
}
info

Penting: Server webhook harus selalu mengembalikan HTTP 200 setelah menerima data. Jika Whapi tidak menerima respons 200, pengiriman webhook dianggap gagal dan akan dicatat di log error.

Menguji Webhook

Opsi 1: Menggunakan webhook.site

  1. Buka webhook.site
  2. Salin URL unik yang diberikan
  3. Tempel URL tersebut ke kolom webhook di dashboard Whapi
  4. Kirim pesan ke nomor yang terhubung
  5. Lihat data JSON yang masuk di webhook.site secara real-time

Opsi 2: Menggunakan Ngrok untuk Server Lokal

Jika server receiver berjalan di komputer lokal, gunakan Ngrok untuk membuat URL publik sementara:

ngrok http 3001

Salin URL HTTPS yang diberikan Ngrok (contoh: https://abc123.ngrok.io) dan gunakan sebagai URL webhook di dashboard Whapi.

Panduan lengkap penggunaan Ngrok tersedia di halaman

Menjalankan WHAPI Lokal dengan Ngrok

Error Umum dan Solusinya

KondisiPenyebabSolusi
Webhook tidak menerima data sama sekaliURL endpoint salah atau tidak bisa diakses publikPeriksa URL, pastikan server berjalan dan bisa diakses dari internet
Data diterima tapi tidak lengkapTipe event tidak dicentang di kustomisasi webhookBuka kustomisasi webhook dan aktifkan tipe event yang dibutuhkan
Server menerima data tapi webhook dicatat errorServer tidak mengembalikan HTTP 200Pastikan endpoint selalu return status 200 setelah memproses data
File media tidak ada dalam payloadWebhook Media belum diaktifkanAktifkan opsi Webhook Media di pengaturan perangkat
Payload terlalu besar untuk diprosesFile media dikirim dalam format base64Ganti ke format Media Key dan ambil file secara terpisah