D
Pendahuluan

Overview

Engine Bot adalah backend chatbot e-commerce multi-tenant untuk percakapan WhatsApp — menangani pencarian produk, cart, checkout, ongkir, pembayaran, bukti transfer, dan follow-up terjadwal melalui arsitektur multi-agent LangChain.

engine-bot (package: chatbot-dazo) adalah AI agent service ekosistem Dazo — backend chatbot e-commerce multi-tenant untuk percakapan WhatsApp. Service ini menangani seluruh lifecycle percakapan: pencarian produk, cart, checkout, ongkir, pembayaran, bukti transfer, dan follow-up terjadwal melalui arsitektur multi-agent LangChain.

Peran di ekosistem

AspekPenjelasan
IdentitasPackage chatbot-dazo, repo engine-bot
PosisiAntara backend-go (pemanggil) dan OpenAI/MongoDB/DazoApp/DOKU
Tenantstore_id — di-scope via query aplikasi, bukan database terpisah
DatastoreMongoDB primer (DB dazo lokal / dazodev remote)
QueueRedis + BullMQ — delayed follow-up jobs
AuthJWT HS256 — validasi-only, issued by dazoapp
AILangChain/LangGraph + OpenAI — hierarchical multi-agent
RealtimeSocket.IO — event newMessage

Arsitektur

text
backend-go (:8081) / WA client
    │ POST /api/chatbot-api
    ▼
Express (:1313)  ←→  MongoDB (dazo)
    │                    ▲
    ├─ verifyToken        │
    ├─ mainController     │ domain services + tools
    ├─ context loader     │
    ├─ main orchestrator  │
    ├─ specialist agent   │
    ├─ domain tools       │
    ▼                     │
OpenAI (gpt-4o / gpt-5.4) ┘
    │
    ├─ Redis + BullMQ (follow-up queue)
    ▼
Worker (scheduler/worker/worker.js)
    │
    ▼
DazoApp / DOKU / RajaOngkir / Messaging API

Engine Bot memakai hierarchical multi-agent architecture. HTTP controller menyiapkan context tenant dan customer, main orchestrator memilih specialist agent, lalu specialist menjalankan LangChain tools yang membaca atau mengubah MongoDB dan API eksternal.

Stack teknologi

LapisanTeknologi
BahasaNode.js ES modules
Web frameworkExpress 4.21
DatabaseMongoDB via Mongoose 8.7
AI orchestrationLangChain 1.2 + LangGraph 1.1
LLMOpenAI (gpt-4o, gpt-5.4, gpt-4o-mini, gpt-4o-transcribe)
Vector DBFAISS (faiss-node)
QueueRedis + BullMQ 5.70
AuthJWT (jsonwebtoken)
RealtimeSocket.IO 4.8
Ongkir/trackingRajaOngkir / Komerce
Instant paymentDazoApp → DOKU
NLPnode-nlp / @nlpjs/lang-id (intent detection)
Cronnode-cron
DeployGitHub Actions → PM2

Komponen utama

KomponenLokasiCatatan
HTTP serverapp.js (60 baris)Express, CORS, Socket.IO, MongoDB startup, Redis health, routes
Routesroutes/chatbotRoutes.js (35 baris)Semua endpoint /api, JWT middleware
Main controllercontrollers/mainController.jsBuffer, dedup, context, orchestration, response, scheduling
Main promptprompt/main-agent.mdAturan routing ke specialist agent
Order agentssubagents/subagents-orders.jsCustomer service, admin, logistics
Payment agentsubagents/subagents-payment.jsMetode bayar, konfirmasi, status instant payment
Booking agentsubagents/subagents-booking.jsFacade booking; tool backend belum diimplementasikan
Order toolstools/order/tools.jsCart, checkout, address, shipping, payment, complaint
Domain servicesservice/Query, formatting, order lifecycle, external API
Modelsmodels/ (24 file)Mongoose schema
Follow-up producerscheduler/workerService.jsGenerate dan enqueue delayed job
Follow-up workerscheduler/worker/worker.jsRe-check order dan kirim pesan WhatsApp
Middlewaremiddleware/authMiddleware.jsverifyToken
Configconfig/env.js, config/db.jsEnvironment + Mongoose connect
Utilsutils/util.js, utils/redisHealth.jsVision, transcription, Redis health

Specialist agents

AgentTool wrapperModelFungsi
Customer Servicecustomer_service_departmentgpt-4o-miniFAQ, katalog, stok, komplain
Adminadmin_departmentgpt-5.4Cart, checkout, perubahan produk/varian/quantity
Logisticslogistics_departemengpt-5.4Alamat, ongkir, kurir, tracking resi
Paymentpayment_departmentgpt-5.4Metode bayar, konfirmasi, instant payment
Bookingbooking_departementgpt-4o-miniReservasi event — tool masih stub

Cara kerja singkat

Inbound: backend-go memanggil POST /api/chatbot-api dengan store_id, customer_id, agent_id, dan pesan. Controller menyiapkan context tenant, deteksi intent, lalu main orchestrator memanggil satu specialist tool berdasarkan prompt.

Follow-up: Setelah percakapan tertentu, scheduler mengenqueue delayed job ke Redis/BullMQ. Worker memeriksa ulang status order/payment sebelum mengirim pesan WhatsApp terjadwal.

Detail alur ada di Agent Architecture dan Order Flow.

Langkah berikutnya