Chatera Docs
API & Integrasi

Pesan Interaktif WhatsApp

Quick Reply, CTA URL, dan List — pesan dengan tombol/pilihan yang membuat pelanggan merespons tanpa perlu mengetik.

Pesan interaktif memungkinkan pelanggan membalas dengan menekan tombol atau memilih opsi alih-alih mengetik. Tidak butuh approval template — cukup kirim ke kontak yang sudah membalas pesan kamu dalam 24 jam terakhir.

POST /v1/whatsapp/messages

Scope: whatsapp:send

Tipe yang tersedia

Tipeinteractive.typeKegunaan
Quick ReplybuttonMaks 3 tombol balas cepat
CTA URLcta_url1 tombol membuka link
ListlistDaftar pilihan dengan kategori (mis. menu pilihan layanan)

Satu pesan, satu tipe

Setiap pesan interaktif hanya boleh berisi satu tipe. Untuk kombinasi (mis. Quick Reply + CTA URL di percakapan yang sama), kirim dua pesan terpisah.

Quick Reply (tombol balas cepat)

{
  "to": "628123456789",
  "type": "interactive",
  "interactive": {
    "type": "button",
    "header": { "type": "text", "text": "Konfirmasi Pesanan" },
    "body": { "text": "Pesanan #ORD-12345 siap dikirim. Alamat sudah benar?" },
    "footer": { "text": "Balas dalam 24 jam" },
    "action": {
      "buttons": [
        { "type": "reply", "reply": { "id": "confirm_yes", "title": "Ya, Benar" } },
        { "type": "reply", "reply": { "id": "confirm_no",  "title": "Ubah Alamat" } }
      ]
    }
  }
}

Batas

FieldMinMaks
Jumlah tombol13
reply.title120 karakter
reply.id1256 karakter
header.text60 karakter
body.text11024 karakter
footer.text60 karakter

reply.id adalah ID unik yang akan kamu terima di webhook saat user menekan tombol — pakai untuk routing logic di handler kamu.

{
  "to": "628123456789",
  "type": "interactive",
  "interactive": {
    "type": "cta_url",
    "body": { "text": "Pesanan menunggu pembayaran Rp 250.000. Klik untuk membayar." },
    "footer": { "text": "Link berlaku 24 jam" },
    "action": {
      "name": "cta_url",
      "parameters": {
        "display_text": "Bayar Sekarang",
        "url": "https://payment.toko-anda.com/pay/ORD-12345"
      }
    }
  }
}

Batas

FieldMinMaks
parameters.display_text120 karakter
parameters.url12000 karakter, harus HTTP/HTTPS
body.text11024 karakter
headeropsional
footer.textopsional60 karakter

List (daftar pilihan)

Cocok untuk menu pilihan layanan, kategori produk, jadwal slot, dll.

{
  "to": "628123456789",
  "type": "interactive",
  "interactive": {
    "type": "list",
    "header": { "type": "text", "text": "Menu Layanan" },
    "body": { "text": "Silakan pilih layanan yang Anda butuhkan:" },
    "footer": { "text": "Pilih salah satu opsi" },
    "action": {
      "button": "Pilih Layanan",
      "sections": [
        {
          "title": "Layanan Pelanggan",
          "rows": [
            { "id": "faq", "title": "FAQ", "description": "Pertanyaan yang sering diajukan" },
            { "id": "talk_agent", "title": "Hubungi CS", "description": "Bicara langsung dengan agen kami" }
          ]
        },
        {
          "title": "Order & Pembayaran",
          "rows": [
            { "id": "track_order", "title": "Lacak Pesanan", "description": "Cek status pengiriman" },
            { "id": "payment_help", "title": "Bantuan Pembayaran", "description": "Pertanyaan seputar metode pembayaran" }
          ]
        }
      ]
    }
  }
}

Batas

FieldMinMaks
action.button120 karakter
Jumlah sections110
Jumlah rows per section110
rows[].title124 karakter
rows[].description72 karakter
rows[].id1256 karakter
body.text11024 karakter

Server menolak request yang melebihi batas — kamu akan menerima error WHATSAPP_INTERACTIVE_LIMIT_EXCEEDED.

Pesan error pesan interaktif

KodePenyebabSolusi
WHATSAPP_SESSION_CLOSEDDi luar jendela 24 jamPakai template
WHATSAPP_INTERACTIVE_INVALID_TYPEinteractive.type tidak dikenalPakai button, list, atau cta_url
WHATSAPP_INTERACTIVE_MISSING_FIELDField wajib tidak adaCek details.field
WHATSAPP_INTERACTIVE_INVALID_FIELDFormat field tidak validCek details.hint (mis. URL bukan HTTPS)
WHATSAPP_INTERACTIVE_LIMIT_EXCEEDEDMelebihi batas tombol/section/karakterLihat tabel batas di atas

Menerima jawaban user

Saat user menekan tombol Quick Reply atau memilih row di List, Chatera mengirim webhook event message.inbound ke endpoint webhook kamu.

Payload webhook akan berisi interactive.reply.id (untuk button) atau interactive.list_reply.id (untuk list) — gunakan ID ini untuk routing logic di handler kamu.

Lihat Webhook untuk detail format payload.

On this page