Pesan Interaktif WhatsApp
Quick Reply, CTA URL, dan List — pesan dengan tombol/pilihan yang membuat pelanggan merespons tanpa perlu mengetik.
Tipe yang tersedia
whatsGo mendukung tiga jenis pesan interaktif yang bisa kamu kirim melalui API:
| Tipe | Kode tipe | Deskripsi |
|---|---|---|
| Quick Reply | button |
Maks 3 tombol balas cepat. Pelanggan cukup ketuk satu tombol untuk merespons. |
| CTA URL | cta_url |
1 tombol yang membuka link URL. Cocok untuk mengarahkan pelanggan ke halaman web, formulir, atau katalog. |
| List | list |
Daftar pilihan dengan kategori. Pelanggan memilih opsi dari dropdown yang terorganisir. |
Quick Reply (tombol balas cepat)
Quick Reply menampilkan hingga 3 tombol di bawah pesan. Pelanggan cukup mengetuk satu tombol untuk merespons. Tidak perlu mengetik pesan secara manual.
Endpoint
POST /external-api/v1/whatsapp/interactive
Contoh request
{
"to": "+628123456789",
"type": "interactive",
"interactive": {
"type": "button",
"body": {
"text": "Apakah kamu puas dengan layanan kami?"
},
"action": {
"buttons": [
{
"type": "reply",
"reply": {
"id": "puas_1",
"title": "Puas"
}
},
{
"type": "reply",
"reply": {
"id": "tidak_puas_1",
"title": "Tidak Puas"
}
},
{
"type": "reply",
"reply": {
"id": "lainnya_1",
"title": "Lainnya"
}
}
]
}
}
}
Batas
| Atribut | Batas |
|---|---|
| Jumlah tombol | Maks. 3 |
| Panjang judul tombol | Maks. 20 karakter |
| Panjang ID tombol | Maks. 256 karakter |
| Panjang teks body | Maks. 1024 karakter |
| Header (opsional) | Maks. 60 karakter |
CTA URL (tombol membuka link)
CTA URL menampilkan satu tombol yang, saat diketuk, akan membuka URL yang kamu tentukan. Cocok untuk mengarahkan pelanggan ke halaman pemesanan, formulir survei, atau katalog produk.
Endpoint
POST /external-api/v1/whatsapp/interactive
Contoh request
{
"to": "+628123456789",
"type": "interactive",
"interactive": {
"type": "cta_url",
"header": {
"type": "text",
"text": "Lihat Katalog Kami"
},
"body": {
"text": "Temukan produk terbaru kami dengan harga spesial. Klik tombol di bawah untuk melihat katalog lengkap."
},
"footer": {
"text": "Berlaku hingga 31 Desember 2026"
},
"action": {
"display_text": "Lihat Katalog",
"url": "https://example.com/katalog"
}
}
}
Batas
| Atribut | Batas |
|---|---|
| Jumlah tombol | 1 |
| Display text tombol | Maks. 20 karakter |
| URL | Maks. 2000 karakter, harus valid |
| Panjang teks body | Maks. 1024 karakter |
| Header text | Maks. 60 karakter |
| Footer text | Maks. 60 karakter |
List (daftar pilihan)
List menampilkan daftar pilihan yang terorganisir dalam kategori. Pelanggan mengetuk tombol untuk membuka daftar, lalu memilih salah satu opsi. Cocok untuk menu layanan, opsi pembayaran, atau daftar lokasi.
Endpoint
POST /external-api/v1/whatsapp/interactive
Contoh request
{
"to": "+628123456789",
"type": "interactive",
"interactive": {
"type": "list",
"header": {
"type": "text",
"text": "Menu Layanan"
},
"body": {
"text": "Pilih layanan yang ingin kamu gunakan:"
},
"footer": {
"text": "Ketuk untuk melihat opsi"
},
"action": {
"button": "Pilih Layanan",
"sections": [
{
"title": "Layanan Utama",
"rows": [
{
"id": "konsultasi",
"title": "Konsultasi",
"description": "Konsultasi dengan tim ahli kami"
},
{
"id": "perbaikan",
"title": "Perbaikan",
"description": "Layanan perbaikan perangkat"
}
]
},
{
"title": "Layanan Tambahan",
"rows": [
{
"id": "pengiriman",
"title": "Cek Pengiriman",
"description": "Lacak status pengiriman kamu"
},
{
"id": "pembayaran",
"title": "Cek Pembayaran",
"description": "Lihat detail tagihan dan riwayat pembayaran"
}
]
}
]
}
}
}
Batas
| Atribut | Batas |
|---|---|
| Display text tombol utama | Maks. 20 karakter |
| Jumlah section | Maks. 10 |
| Jumlah row per section | Maks. 10 |
| Panjang judul row | Maks. 24 karakter |
| Panjang deskripsi row | Maks. 72 karakter |
| Panjang judul section | Maks. 24 karakter |
| Panjang ID row | Maks. 256 karakter |
| Panjang teks body | Maks. 1024 karakter |
Pesan error pesan interaktif
Ketika request gagal, API akan mengembalikan respons error dalam format berikut:
| Field | Tipe | Deskripsi |
|---|---|---|
error.code |
string | Kode error yang terjadi |
error.message |
string | Pesan penjelasan error |
error.details |
object | Detail tambahan (opsional) |
Contoh respons error
{
"success": false,
"error": {
"code": "INTERACTIVE_INVALID_BUTTON",
"message": "Jumlah tombol melebihi batas maksimum. Quick Reply maksimal 3 tombol.",
"details": {
"field": "interactive.action.buttons",
"max": 3,
"received": 5
}
}
}
Error umum pesan interaktif
| Kode Error | Penjelasan |
|---|---|
INTERACTIVE_INVALID_TYPE |
Tipe interaktif tidak valid. Harus salah satu dari button, cta_url, atau list. |
INTERACTIVE_INVALID_BUTTON |
Jumlah atau format tombol tidak sesuai batas. |
INTERACTIVE_INVALID_URL |
URL pada CTA URL tidak valid atau melebihi batas karakter. |
INTERACTIVE_INVALID_LIST |
Format list tidak valid, section atau row melebihi batas. |
INTERACTIVE_BODY_EMPTY |
Body text tidak boleh kosong. |
Menerima jawaban user
Ketika pelanggan mengetuk tombol atau memilih opsi dari pesan interaktif, whatsGo akan mengirimkan event ke webhook yang sudah kamu konfigurasi.
Format webhook event
{
"event": "message.interactive_reply",
"data": {
"message_id": "wamid.HBgLMjEyMzQ1Njc4OQ==",
"from": "+628123456789",
"timestamp": 1719820800,
"interactive": {
"type": "button",
"button": {
"id": "puas_1",
"title": "Puas"
}
}
}
}
Untuk pesan list, format jawabannya akan berisi list_reply dengan field id dan title dari opsi yang dipilih pelanggan:
{
"event": "message.interactive_reply",
"data": {
"message_id": "wamid.HBgLMjEyMzQ1Njc4OQ==",
"from": "+628123456789",
"timestamp": 1719820800,
"interactive": {
"type": "list",
"list_reply": {
"id": "konsultasi",
"title": "Konsultasi"
}
}
}
}
Pastikan webhook kamu sudah dikonfigurasi di dashboard whatsGo sebelum mengirim pesan interaktif. Pelajari lebih lanjut di halaman Webhook.