Skip to main content

Webhook Pesan dan Status Pesan

Webhook pesan dan status pesan mengirimkan notifikasi otomatis ke server setiap kali ada pesan masuk atau perubahan status pengiriman pesan seperti teks, reply, reaction, maupun status sent, delivered, dan read.

Prasyarat

  • Webhook sudah dikonfigurasi dan tipe event koneksi sudah diaktifkan di dashboard.

Panduan konfigurasi di Integrasi Notifikasi Webhook.

Event: message

Dikirim saat ada pesan masuk. Pesan bisa berupa teks biasa, pesan yang dikutip (quote), atau reaction.

Field type di dalam results menentukan jenis pesan:

Nilai typeKeterangan
conversationPesan teks biasa
extendedTextMessagePesan teks dengan format tambahan, strukturnya sama dengan conversation
reactionMessageReaction yang diberikan pada pesan tertentu
{
"type": "message", // Tipe webhook yang dikirim
"results": { // Kumpulan object dari event message
/*
Object dibawah ini hanya akan tampil ketika Anda mengirim pesan lewat API
*/
"messageStubParameters": [],
"labels": [],
"userReceipt": [],
"reactions": [],
"pollUpdates": [],
"eventResponses": [],
"statusMentions": [],
"messageAddOns": [],
"statusMentionSources": [],
"supportAiCitations": [],
/* ---------------- */
"key": { // Informasi pengirim
"remoteJid": "[email protected]", // Nomer pengirim
"fromMe": false, // Dikirim dari nomer sendiri ?
"id": "xxxxx", // ID pesan
"senderLid": "xxxxx@lid", // Nomor samaran di whatsapp
"senderPn": "[email protected]" // Nomer pengirim
},
"messageTimestamp": 1691639955, // Waktu pesan
"pushName": "xxxxx", // Nama Whatsapp
"broadcast": false, // Apakah pesan broadcast ?
"status": 2, // Object ini hanya muncul ketika mengirim pesan via API
"message": {
... // Object disini adalah raw pesan whatsapp, bisa berubah sewaktu2
},
"verifiedBizName": "WHAPI", // Object untuk nama whatsapp bisnis
"t": 1691639955, // Waktu pesan
"id": "xxxxx", // ID pesan
"from": "[email protected]", // Nomer pengirim
"fromMe": false, // Dikirim dari nomer sendiri ?
"chatId": "[email protected]", // Nomer pengirim
"isGroupMsg": false, // Apakah pesan dari grup ?
"isStories": false, // Apakah pesan story ?
"sender": "[email protected]", // Nomer pengirim
"pushname": "WHAPI", // Object untuk nama whatsapp bisnis
"timestamp": 1691639955, // Waktu pesan
"isEphemeralMessage": false,
"viewOnce": false, // Pesan dilihat 1x
"type": "extendedTextMessage", // ada 3 type reactionMessage | extendedTextMessage | conversation
"isMedia": false, // Apakah pesan media?
"quotedMsg": { // Jika pesan berupa quote, akan ada data disini
... // Data object disini adalah raw dari whatsapp.
},
"mentionedJidList": [], // Mention nama akan muncul disini
"body": "Isi Pesan", // Berisi isi pesan / caption pada gambar / caption pada dokumen
"replyData": "xxxxxx", // ID Untuk mereply pesan ini
"apiKey": "xxxxx" // Alamat API Key dari device
}
}

Catatan penting untuk beberapa field:

FieldKeterangan
bodyIsi teks pesan atau caption media. Ambil nilai dari field ini untuk mendapatkan teks pesan
results.messageObject raw dari WhatsApp. Strukturnya bisa berubah sewaktu-waktu, tidak disarankan sebagai acuan utama
quotedMsgBerisi data pesan yang dikutip jika pesan merupakan balasan. Struktur bisa berubah
mentionedJidListDaftar nomor yang di-mention dalam pesan
messageTimestamp, timestamp, tKetiganya menampilkan waktu yang sama — waktu pesan dikirim
verifiedBizNameHanya muncul jika nomor yang terhubung adalah WhatsApp Business
statusHanya muncul saat pesan dikirim via API, bukan pesan masuk dari pengguna lain

Event: message_ack

Dikirim saat status pengiriman pesan berubah di perangkat.

{
"type": "message_ack", // Tipe webhook yang dikirim
"results": { // Kumpulan object dari event message_ack
"apiKey": "xxxxx", // Alamat API Key dari device
"ack": {
"ack": 2, // Status perubahan pesan 0, 1, 2, 3, 4, 5
"id": "xxxxx", // ID dari pesan
"serialized": "[email protected]" // Nomer tujuan
}
}
}

Nilai yang mungkin untuk field ack.ack:

NilaiKeterangan
0Error
1Queued — dalam antrian
2Pending — menunggu dikirim
3Pesan berhasil dikirim ke server WhatsApp
4Pesan sudah dibaca
5Pesan audio sudah didengarkan

Event: message_ack_browser

Dikirim saat status pengiriman pesan berubah di WhatsApp Web. Struktur payload sama persis dengan message_ack, hanya type yang berbeda.

{
"type": "message_ack_browser",
"results": {
"apiKey": "xxxxx",
"ack": {
"ack": 3, // Status perubahan pesan 0, 1, 2, 3, 4, 5
"id": "xxxxx",
"serialized": "[email protected]"
}
}
}