Saya ingin bot AI menjawab pelanggan di aplikasi saya sendiri
Operator AI yang menjawab percakapan di ruang percakapan WACO juga tersedia sebagai API murni: aplikasi Anda mengirim pesan pelanggan, kami mengembalikan jawaban dari pengetahuan yang Anda ajarkan — atau berkata jujur bahwa ia tidak tahu. Kanalnya (WhatsApp Anda sendiri, live chat website, Telegram, apa pun) tetap sepenuhnya milik Anda.
waco_ dari halaman Pengaturan. Pengetahuan bisa diisi dari portal (kartu, wawancara, unggah PDF) maupun lewat API ini.Minta balasan
POST https://waco.id/api/v1/asisten/balas
Authorization: Bearer waco_xxxx
{ "sesi": "cust-8812", "teks": "kalau hari minggu buka nggak?" }
→ 200 { "jawab": true, "teks": "Kami buka Senin–Sabtu 08.00–17.00, Minggu tutup." }
→ 200 { "jawab": false, "alasan": "di_luar_pengetahuan" }
sesi adalah ID percakapan versi Anda — pakai apa pun yang konsisten per
pelanggan. Untuk konteks percakapan berlanjut, sertakan riwayat:
larik {"peran":"pelanggan"|"bot","teks":"..."} (maksimal 10 terakhir yang dipakai).
jawab:false WAJIB Anda tangani sebagai serah-terima ke manusia. Alasannya bisa di_luar_pengetahuan, anggaran_habis, sibuk (batas percakapan bersamaan), bot_nonaktif, atau galat_sementara — apa pun itu, pelanggan harus tetap dijawab oleh tim Anda. Bot yang ragu lalu diam lebih buruk daripada tidak ada bot.Kelola pengetahuan
GET /api/v1/asisten/pengetahuan → { "kartu": [...] }
POST /api/v1/asisten/pengetahuan
{ "judul": "Jam buka", "isi": "Senin–Sabtu 08.00–17.00." } → kartu baru (aktif)
{ "id": 12, "isi": "...", "aktif": true } → ubah kartu
{ "url": "https://situs-anda.com/faq" } → sulingkan jadi kartu draf
DELETE /api/v1/asisten/pengetahuan/:id
Kartu dari url masuk sebagai draf nonaktif — tinjau lalu
aktifkan (dari portal atau POST {"id":…,"aktif":true}). Bot tidak pernah memakai
pengetahuan yang belum Anda setujui.
Cek sisa kuota
GET /api/v1/asisten/pemakaian
→ { "aktif": true, "terpakaiIdr": 12500, "kuotaBulananIdr": 50000,
"topupIdr": 0, "sisaIdr": 37500, "percakapanAktif": 1, "batasBersamaan": 5 }
Kuota bulanan sudah termasuk langganan dan direset tiap bulan; top-up berlaku 30 hari sejak
dibeli. Saat kuota habis bot berhenti menjawab (jawab:false) — percakapan
mengalir ke tim Anda, layanan tidak pernah putus.
Contoh integrasi (Node.js) — pola serah-terima yang benar
async function balasPelanggan(idPercakapan, pesanPelanggan) {
const r = await fetch('https://waco.id/api/v1/asisten/balas', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer ' + process.env.WACO_API_KEY,
},
body: JSON.stringify({ sesi: idPercakapan, teks: pesanPelanggan }),
});
const j = await r.json();
if (j.jawab) {
await kirimKePelanggan(idPercakapan, j.teks); // kanal Anda sendiri
} else {
// WAJIB: apa pun alasannya, manusia mengambil alih.
await tandaiButuhManusia(idPercakapan);
await beriTahuTim(idPercakapan, 'Bot menyerahkan: ' + j.alasan);
}
}
Versi PHP/Laravel, Python, atau Go tinggal menerjemahkan pola yang sama: satu POST, satu
percabangan jawab. Yang tidak boleh: menampilkan "maaf saya tidak tahu" ke
pelanggan lalu berhenti — jawab:false artinya orang yang melanjutkan.