Event & payload
Tiga event webhook CSKU, contoh JSON lengkap, dan arti setiap field.
Setiap request webhook berisi satu pesan dan satu event. Bentuk payload sama untuk semua event; hanya field message.agent dan message.ai yang muncul sesuai event.
Daftar event
| Event | Kapan dikirim |
|---|---|
channel.message_in | Pesan pelanggan masuk dan tersimpan. Berlaku untuk semua channel, termasuk Webchat, dan tetap dikirim walau percakapan sedang ditangani agen. |
ai.message_generated | AI agent selesai membuat balasan dan balasan tersimpan, tepat sebelum dikirim ke pelanggan. |
agent.message_out | Balasan agen dari dashboard atau aplikasi mobile berhasil terkirim ke channel. Termasuk pesan sistem CSAT (permintaan penilaian dan ucapan terima kasih). |
Jeda balasan AI
AI agent menunggu sekitar 30 detik untuk menggabungkan beberapa pesan pelanggan sebelum membalas. Jadi ai.message_generated biasanya datang beberapa detik sampai sekitar 30 detik setelah channel.message_in terakhir.
Pesan dari Public API tidak memicu webhook
Pesan yang Anda kirim lewat Kirim pesan (POST /v1/message) atau lewat Proxy WABA tidak memicu agent.message_out. Sistem Anda sudah tahu pesan itu, jadi catat langsung di sisi Anda.
Contoh payload
channel.message_in
{
"event": "channel.message_in",
"timestamp": 1792041600,
"conversation_id": "CO_01JQ8Z3K4M5N6P7R8S9T0V1W2X",
"conversation_label": "Budi Santoso",
"need_human": 0,
"message": {
"id": "MSG_01JQ8Z3M2A7B8C9D0E1F2G3H4J",
"sender_name": "Budi Santoso",
"channel": {
"id": "WHATSAPP_01JP4R6T8V0X2Z4B6D8F0H2K4M",
"name": "CS Toko Utama",
"engine": "whatsapp"
},
"bisnis": {
"id": "BIZ241005ABC1234",
"name": "Rina Wijaya"
},
"user": {
"id": "MER241005XYZ0001",
"name": "Rina Wijaya"
},
"content": {
"type": "text",
"text": "Halo kak, pesanan saya sudah dikirim belum?"
}
}
}
ai.message_generated
{
"event": "ai.message_generated",
"timestamp": 1792041631,
"conversation_id": "CO_01JQ8Z3K4M5N6P7R8S9T0V1W2X",
"conversation_label": "Budi Santoso",
"need_human": 0,
"message": {
"id": "MSG_01JQ8Z4N9Q1R2S3T4U5V6W7X8Y",
"sender_name": "Asisten - Sari",
"channel": {
"id": "WHATSAPP_01JP4R6T8V0X2Z4B6D8F0H2K4M",
"name": "CS Toko Utama",
"engine": "whatsapp"
},
"bisnis": {
"id": "BIZ241005ABC1234",
"name": "Rina Wijaya"
},
"user": {
"id": "MER241005XYZ0001",
"name": "Rina Wijaya"
},
"content": {
"type": "text",
"text": "Halo Kak Budi, pesanan Kakak sudah dikirim hari ini via JNE ya."
},
"ai": {
"name": "Sari",
"id": "AI241005QWE5678"
}
}
}
agent.message_out
{
"event": "agent.message_out",
"timestamp": 1792041900,
"conversation_id": "CO_01JQ8Z3K4M5N6P7R8S9T0V1W2X",
"conversation_label": "Budi Santoso",
"need_human": 1,
"message": {
"id": "MSG_01JQ8Z8D3F4G5H6J7K8L9M0N1P",
"sender_name": "Dewi",
"channel": {
"id": "WHATSAPP_01JP4R6T8V0X2Z4B6D8F0H2K4M",
"name": "CS Toko Utama",
"engine": "whatsapp"
},
"bisnis": {
"id": "BIZ241005ABC1234",
"name": "Rina Wijaya"
},
"user": {
"id": "MER241005XYZ0001",
"name": "Rina Wijaya"
},
"content": {
"type": "image",
"attachments": [
{
"url": "https://bukakios-storage.b-cdn.net/chat/resi-budi.jpg",
"mime_type": "image/jpeg"
}
]
},
"agent": {
"name": "Dewi"
}
}
}
Referensi field
| Field | Tipe | Keterangan |
|---|---|---|
event | string | Nama event. Lihat daftar event. |
timestamp | integer | Unix time (detik) saat request dikirim. Berubah di setiap retry, jadi jangan dipakai untuk deduplikasi. |
conversation_id | string | ID percakapan. Sama dengan conversation_id di Public API. |
conversation_label | string | Nama tampilan percakapan, biasanya nama pelanggan. |
need_human | integer | 1 jika percakapan sedang ditangani agen (AI berhenti membalas), 0 jika tidak. |
message.id | string | ID unik pesan. Pakai untuk deduplikasi. |
message.sender_name | string | Nama pengirim: pelanggan, AI agent, atau agen. Bisa kosong untuk pesan sistem. |
message.channel.id | string | ID channel di CSKU. |
message.channel.name | string | Label channel yang Anda isi di Integrasi. |
message.channel.engine | string | Jenis channel. Lihat nilai engine. |
message.bisnis.id | string | Business ID Anda. |
message.bisnis.name | string | Nama akun pemilik bisnis. |
message.user.id | string | ID akun pemilik bisnis. |
message.user.name | string | Nama akun pemilik bisnis. |
message.content | object | Isi pesan. Lihat tipe konten. |
message.agent.name | string | Hanya di agent.message_out. Nama agen yang membalas. |
message.ai.name | string | Hanya di ai.message_generated, jika channel punya AI agent. Label AI agent. |
message.ai.id | string | ID AI agent. |
Tipe konten
Pesan teks:
{ "type": "text", "text": "Halo kak" }
Pesan selain teks memakai attachments. url berisi alamat file, mime_type berisi tipe file.
{
"type": "document",
"attachments": [
{ "url": "https://bukakios-storage.b-cdn.net/chat/invoice.pdf", "mime_type": "application/pdf" }
]
}
Contoh nilai type: image, video, audio, document. Nilai lain bisa muncul tergantung channel. Perlakukan type selain text yang tidak Anda kenal sebagai lampiran biasa.
Caption tidak ikut
Untuk pesan media, payload hanya berisi url dan mime_type. Teks caption tidak disertakan.
Nilai engine
engine | Channel |
|---|---|
whatsapp | WhatsApp (Scan QR) |
waba | WhatsApp API (Token manual) |
whatsapp_meta | WhatsApp API (Login Meta) |
telegram | Telegram |
instagram | |
facebook | |
intercom | Intercom |
slack | Slack |
socialchat | SocialChat |
webchat | Webchat |