AI Class

Bangun AI Agent WhatsApp Order-Taking dengan n8n + OpenAI + Google Sheets (MVP 1 Hari)

· 8 menit baca

Bangun AI Agent WhatsApp Order-Taking dengan n8n + OpenAI + Google Sheets (MVP 1 Hari)

AI Agent WhatsApp itu bukan “chatbot lucu” — ini mesin penerima order 24/7 yang bisa balas cepat, paham menu, cek stok, sampai kirim link pembayaran. Kalau hari ini kamu masih balas WA manual, copy-paste ke Google Sheets, lalu ngetik total harga secara manual, kamu sedang buang waktu (dan pelanggan) di jam sibuk. Di artikel ini kita akan bangun MVP order-taking end-to-end: WhatsApp Cloud API → n8n automation → OpenAI → Google Sheets → (opsional) invoice Xendit/Midtrans. Target: live dalam 1 hari, tanpa coding berat.

Kenapa kamu butuh AI Agent WhatsApp untuk order?

Masalah nyata di lapangan:

  • Balasan lambat saat ramai → pelanggan kabur.
  • Order berantakan di chat → sering salah input, salah total, lupa stok.
  • Owner jadi “router manusia” antara pelanggan, kasir, dan kurir.

Solusi: AI Agent WhatsApp yang paham intent pelanggan (“saya mau 2 latte, 1 tanpa gula”), mengecek stok, menghitung total dari source of truth (Google Sheets), membuat order, dan mengirim update otomatis. n8n jadi orkestrator yang rapi, OpenAI untuk NLU/reasoning, dan Google Sheets sebagai database ringan.

Konsep ringkas: bukan chatbot generik, tapi workflow berlapis

  • Lapisan 1: State machine — order itu fase: greet → pilih produk → konfirmasi → pembayaran → selesai. Kita kunci transisi di n8n agar AI tidak offside.
  • Lapisan 2: LLM reasoning — OpenAI menerjemahkan bahasa natural ke aksi: tambah item, ganti ukuran, atau tanya ongkir.
  • Lapisan 3: Tooling deterministik — cek stok, harga, dan total dari Google Sheets; kirim pesan via WhatsApp Cloud API; buat invoice via Xendit/Midtrans.

Pattern ini bikin workflow automation stabil: AI fokus di pemahaman dan penyusunan konteks; keputusan kritis (harga, stok, status) tetap dari sistem deterministik.

Arsitektur AI Agent WhatsApp

  • WhatsApp Cloud API Webhook → n8n Webhook (verifikasi signature + routing event)
  • n8n → OpenAI (intent + tool call suggestion)
  • n8n → Google Sheets (menu, stok, order, history)
  • n8n → Xendit/Midtrans (opsional: invoice/link bayar)
  • n8n → WhatsApp Send API (balasan ke pelanggan)

State disimpan sederhana di Sheets (kolom status) atau Redis (kalau butuh skala). Idempotensi pakai message_id dari WhatsApp agar tidak double process saat webhook retry.

Setup WhatsApp Cloud API untuk AI Agent WhatsApp

  1. Di Meta for Developers, buat App → tambahkan WhatsApp → dapatkan Phone Number ID dan WhatsApp Business Account ID.
  2. Generate Access Token (lebih baik System User + token jangka panjang). Simpan di kredensial n8n.
  3. Di WhatsApp → Configuration → set Webhook URL ke endpoint n8n (Webhook node) dan Verify Token.
  4. Subscribe event messages dan message_template_status_update.
  5. Siapkan Message Template untuk notifikasi proaktif (misal: order update). Balasan percakapan biasa tetap dalam 24-hour customer care window.

Tips: Simpan ENV di n8n: WHATSAPP_TOKEN, PHONE_NUMBER_ID. Gunakan HTTP Request node dengan Bearer token.

Struktur Google Sheets

  • Menu: sku, nama, kategori, varian, harga, stok, aktif
  • Orders: order_id, wa_id, nama, alamat, status, total, payment_link, created_at
  • OrderItems: order_id, sku, nama, qty, harga_satuan, subtotal
  • ProcessedEvents: message_id, wa_id, processed_at

Kenapa Sheets? Untuk MVP, semua orang sudah familiar, mudah diedit, murah, dan cukup cepat. Nanti tinggal migrasi ke DB saat skala.

Workflow n8n: membangun AI Agent WhatsApp langkah demi langkah

1) Webhook Inbound (verifikasi + parser)

  • Webhook node: Method GET/POST. GET untuk verifikasi (kembalikan hub.challenge). POST untuk event.
  • Function node: Verify & Parse — validasi signature (X-Hub-Signature-256) jika diaktifkan. Ekstrak: message_id, wa_id (customer), text/body, type (text, button, interactive), timestamp.
  • Idempotensi: cek message_id di Sheet ProcessedEvents. Jika sudah ada → stop.

2) Intent + Tool Calls (OpenAI)

Gunakan OpenAI Chat dengan gaya function/tool calling. System prompt ringkas dan guardrails jelas:

  • System: “Kamu agen order kedai kopi. Jangan pernah mengarang harga atau SKU. Selalu minta konfirmasi final sebelum checkout. Jika user minta di luar menu, tawarkan alternatif. Gunakan tool yang sesuai.”
  • Tools: lookup_menu(term), add_item(sku, qty), remove_item(sku), summarize_cart(), checkout(name, address, payment_method).

LLM mengembalikan rencana aksi (misal memanggil lookup_menu), dan n8n mengeksekusi dengan node-node deterministik.

3) Tool: Lookup Menu (Google Sheets)

  • Google Sheets: Read Range ke tab Menu. Filter aktif = TRUE.
  • Function: normalisasi nama (lowercase, hapus tanda). Cocokkan nama/alias (“latte”, “caffe latte”). Kalau ragu, kirim disambiguation balik ke user.

4) State Machine: Keranjang & Order

  • Buat order saat user menambah item pertama. Tulis ke tab Orders dengan status building.
  • Tulis item ke tab OrderItems. Update total dari harga di Menu x qty.
  • Konfirmasi: kirim ringkasan keranjang (nama item, qty, subtotal, total). Minta “ketik KONFIRM” untuk checkout.

5) Checkout + Pembayaran

  • Jika pilih COD: ubah status ke confirmed, kirim estimasi waktu.
  • Jika non-COD: panggil Xendit/Midtrans untuk invoice. Simpan payment_link di Orders. Kirim link ke pelanggan (pakai template HSM jika di luar window 24 jam).
  • Tambahkan webhook dari gateway pembayaran ke n8n untuk update status paid.

6) Kirim Balasan via WhatsApp

  • HTTP Request → POST https://graph.facebook.com/v18.0/{PHONE_NUMBER_ID}/messages
  • Body minimal untuk teks: { type: "text", to: wa_id, text: { body: "..." } }
  • Gunakan interactive (list/button) untuk pemilihan cepat: ukuran, metode bayar, dll.

7) Logging, Observability, dan Recovery

  • Statistik: tulis log ke Sheets/DB: intent, durasi, model, token.
  • Retry: aktifkan retry terbatas untuk API eksternal. WhatsApp punya rate limit, gunakan jeda.
  • Fallback human: jika confidence rendah, rute ke operator (Slack/Telegram) dengan ringkasan percakapan.

Contoh use case real: Kedai Kopi “Sore Sore”

Skenario:

  • Pelanggan: “Kak saya mau 2 latte 1 kurang manis, sama 1 croissant.”
  • Agent: cek menu (latte, croissant), tanya ukuran latte (S/M/L) jika belum disebut, interpret “kurang manis” → less sugar.
  • Agent: hitung total (harga dari Sheets), kirim ringkasan dan opsi bayar (COD / transfer / e-wallet via link).
  • Pelanggan: “Transfer aja.”
  • Agent: panggil Xendit → buat invoice → kirim link.
  • Gateway: webhook paid → n8n update status order “paid” → kirim pesan “Pesanan diproses, estimasi 20 menit.”

Di jam sibuk, bot ini ambil 70% percakapan standar. Sisanya dioper ke manusia kalau ada permintaan kustom berat.

Prompt yang nempel ke bisnis (bukan generik)

Jangan pakai prompt generik. Kaitkan langsung ke menu dan aturanmu:

  • “Harga dan stok hanya valid dari tabel Menu.”
  • “Jika user minta item non-aktif, tawarkan 2 alternatif terdekat harga/varian.”
  • “Selalu minta konfirmasi final dengan kata kunci KONFIRM sebelum checkout.”
  • “Jika alamat tidak lengkap, minta patokan/RT/RW.”

Aha moment: LLM boleh salah paham, tapi kamu bisa buat sistem yang tidak bisa salah total/harga karena semua angka diambil dari Sheets. Itu inti guardrail.

Strategi & insight bawa AI Agent WhatsApp ke produksi

  • Three-layer agent: policy → LLM → tools. Keputusan uang dan stok selalu di tools.
  • 24-hour window: pastikan semua balasan tetap dalam window. Kalau lewat, pakai template HSM (harus disetujui dulu di Meta).
  • Idempotensi: simpan message_id ke ProcessedEvents. Kalau n8n crash dan Meta retry, workflow tetap aman.
  • Concurrency: lock order per wa_id. Sederhana: di Orders simpan kolom locked_by dan cek sebelum update.
  • Anti-hallucination: LLM tidak boleh membuat SKU baru. Cocokkan hanya dari Sheet Menu. Jika tidak ditemukan → klarifikasi.
  • Upsell terukur: setelah ringkasan keranjang, tawarkan 1 add-on relevan (kue/ukuran besar) berdasarkan kategori item.
  • Monitoring: buat dashboard sederhana: orders per jam, conversion rate, waktu respons. Kalau latency > 3 detik, periksa bottleneck (LLM/pembacaan Sheets).
  • Biaya: pakai model gpt-4o-mini atau yang hemat; cache jawaban FAQ (ongkir, jam buka) di n8n Data Store.
  • Privasi: redaksi PII (alamat/telepon) saat kirim ke channel internal untuk debug.

Detail teknis node kunci (yang sering bikin nyangkut)

WhatsApp Send API

  • Endpoint: /{PHONE_NUMBER_ID}/messages
  • Header: Authorization: Bearer WHATSAPP_TOKEN; Content-Type: application/json
  • Body teks: { "messaging_product": "whatsapp", "to": "62xxxx", "type": "text", "text": { "body": "Halo!" } }
  • Interactive list: type=interactive, action=list, rows untuk varian/ukuran.

Parser event WhatsApp (core fields)

  • changes[0].value.messages[0].id → message_id
  • ...from → wa_id
  • ...text.body atau interactive.list_reply/title
  • statuses event untuk delivery/read (boleh diabaikan untuk MVP)

Google Sheets sebagai DB ringan

  • Gunakan Append untuk Orders/OrderItems, Update untuk status.
  • Index sederhana: order_id = concat(timestamp + 4-digit random). Simpan di semua baris OrderItems.
  • Query by wa_id untuk menemukan order aktif (status building/confirmed).

OpenAI node (function calling)

  • System: aturan bisnis + format respons
  • Temperature rendah (0.1–0.3) untuk konsistensi
  • Berikan contoh dialog 2–3 putaran agar model paham style

Ekstensi cepat (biar MVP naik kelas)

  • Alamat → koordinat: panggil Geocoding API (Google/Mapbox) untuk estimasi ongkir.
  • Kurir lokal: integrasi API Gojek/Grab/AnterAja instan setelah status paid.
  • Catalog sync: push Sheet → WhatsApp Catalog untuk balasan bergambar.
  • RAG FAQ: tambahkan knowledge base (jam buka, kebijakan) supaya jawaban konsisten.
  • Multi-tenant: parametrisasi Sheets dan nomor WA per tenant untuk dijual sebagai micro‑SaaS.

Vibe coding: deliver dulu, rapikan belakangan

Target 1 hari:

  • Pagi: setup WhatsApp Cloud API + Webhook n8n; kirim balasan statis.
  • Siang: sambungkan Sheets; bisa tambah item + ringkas keranjang.
  • Sore: checkout + kirim link invoice; tutup dengan notifikasi paid.
  • Malam: tambahkan guardrail minimal (idempotensi + konfirmasi final).

Besoknya baru pikirkan observability dan scale. Build SaaS cepat dengan AI itu fokus ke nilai yang langsung terasa, bukan kesempurnaan arsitektur.

Checklist sebelum go-live

  • Semua harga/sku benar di Sheets; kolom aktif terisi.
  • Template HSM minimal satu untuk follow-up di luar 24 jam.
  • Pesan error ramah (“maaf, lagi ramai, ini alternatifnya…”).
  • Nomor eskalasi manual siap kalau bot bingung.
  • Log token/PII tidak bocor di error output n8n.

Penutup

Kamu baru saja punya AI Agent WhatsApp yang beneran kerja: menerima order, cek menu, hitung total, dan kirim link bayar. Ini bukan teori — ini workflow automation nyata yang bisa langsung diuji di bisnis kecil hingga skala ratusan order/hari. Langkah next:

  • Tambah kurir instan atau POS lokal kamu.
  • Jadikan multi-tenant dan tawarkan sebagai layanan ke bisnis sekitar.
  • Eksperimen upsell otomatis dan A/B test prompt untuk meningkatkan AOV.

Kalau kamu bangun ini hari ini, besok kamu sudah tidur lebih nyenyak. Gaskeun.

Artikel terkait