Panduan/Untuk developer

Saya sudah punya AI sendiri, saya hanya butuh WhatsApp-nya

WACO jadi antarmuka WhatsApp resmi, otak tetap milik Anda: pesan masuk lewat webhook, balasan lewat API. 3 menit baca

Banyak yang datang dengan kalimat yang sama: asisten AI-nya sudah jalan, tinggal butuh WhatsApp. Itu memang salah satu pemakaian WACO yang paling lurus. Operator AI bawaan kami tidak perlu diaktifkan, dan tidak ada biaya AI dari kami. Yang Anda pakai hanya nomor resminya, webhook, dan API.

Alurnya hanya tiga potong

  1. Pesan masuk dikirim WACO ke URL Anda sebagai message.received.
  2. AI Anda berpikir di infrastruktur Anda sendiri.
  3. Balasannya dikirim lewat POST /api/v1/balas.

Yang disiapkan sekali

Contoh utuh, Node + Express

const express = require('express');
const crypto = require('crypto');
const app = express();

// Tanda tangan dihitung atas BODY MENTAH, jadi jangan pakai express.json() di jalur ini.
app.post('/waco', express.raw({ type: '*/*' }), async (req, res) => {
  const dihitung = 'sha256=' + crypto.createHmac('sha256', process.env.WACO_WEBHOOK_SECRET)
    .update(req.body).digest('hex');
  const diterima = String(req.get('X-WACO-Signature') || '');
  if (diterima.length !== dihitung.length ||
      !crypto.timingSafeEqual(Buffer.from(diterima), Buffer.from(dihitung))) {
    return res.sendStatus(401);
  }

  // 1) Balas 200 DULU. AI yang lambat tidak boleh menahan webhook.
  res.sendStatus(200);

  const ev = JSON.parse(req.body.toString('utf8'));
  if (ev.event !== 'message.received') return;      // status & echo diabaikan
  if (sudahPernah(ev.pesan.id)) return;             // kiriman bisa terulang

  // 2) Antrekan per nomor supaya satu pelanggan diproses berurutan
  antre(ev.dari, async () => {
    const jawaban = await aiAnda(ev.dari, ev.pesan.teks);   // otak Anda sendiri

    // 3) Kirim balasannya kembali lewat WACO
    await fetch('https://waco.id/api/v1/balas', {
      method: 'POST',
      headers: {
        Authorization: 'Bearer ' + process.env.WACO_API_KEY,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ nomor: ev.dari, teks: jawaban }),
    });
  });
});

app.listen(3000);

Empat hal yang sering bikin kaget

Ruang percakapan tim boleh tetap menyala. Event yang sama dikirim ke dua tempat: AI Anda menerima lewat webhook, tim Anda tetap melihat percakapannya dan bisa mengambil alih kapan saja. Gangguan di salah satu sisi tidak menahan yang lain.

Kalau AI Anda berbentuk agen

WACO juga menyediakan server MCP di /mcp, sehingga agen Anda bisa memanggil WACO sebagai alat (menyiapkan blast berkonfirmasi, membaca riwayat, mengirim pesan) tanpa menulis integrasi HTTP sendiri. Lihat panduan MCP.

Rinciannya ada di panduan API dan panduan webhook. Spesifikasi mesinnya di OpenAPI. Khusus pemakai OpenClaw, ada panduan tersendiri.

Masih menemui kendala setelah mengikuti panduan ini? Hubungi kami dari dashboard — sertakan tangkapan layar bila ada, itu mempercepat semuanya.