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
| Aspek | Penjelasan |
|---|---|
| Identitas | Package chatbot-dazo, repo engine-bot |
| Posisi | Antara backend-go (pemanggil) dan OpenAI/MongoDB/DazoApp/DOKU |
| Tenant | store_id — di-scope via query aplikasi, bukan database terpisah |
| Datastore | MongoDB primer (DB dazo lokal / dazodev remote) |
| Queue | Redis + BullMQ — delayed follow-up jobs |
| Auth | JWT HS256 — validasi-only, issued by dazoapp |
| AI | LangChain/LangGraph + OpenAI — hierarchical multi-agent |
| Realtime | Socket.IO — event newMessage |
Arsitektur
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 APIEngine 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
| Lapisan | Teknologi |
|---|---|
| Bahasa | Node.js ES modules |
| Web framework | Express 4.21 |
| Database | MongoDB via Mongoose 8.7 |
| AI orchestration | LangChain 1.2 + LangGraph 1.1 |
| LLM | OpenAI (gpt-4o, gpt-5.4, gpt-4o-mini, gpt-4o-transcribe) |
| Vector DB | FAISS (faiss-node) |
| Queue | Redis + BullMQ 5.70 |
| Auth | JWT (jsonwebtoken) |
| Realtime | Socket.IO 4.8 |
| Ongkir/tracking | RajaOngkir / Komerce |
| Instant payment | DazoApp → DOKU |
| NLP | node-nlp / @nlpjs/lang-id (intent detection) |
| Cron | node-cron |
| Deploy | GitHub Actions → PM2 |
Komponen utama
| Komponen | Lokasi | Catatan |
|---|---|---|
| HTTP server | app.js (60 baris) | Express, CORS, Socket.IO, MongoDB startup, Redis health, routes |
| Routes | routes/chatbotRoutes.js (35 baris) | Semua endpoint /api, JWT middleware |
| Main controller | controllers/mainController.js | Buffer, dedup, context, orchestration, response, scheduling |
| Main prompt | prompt/main-agent.md | Aturan routing ke specialist agent |
| Order agents | subagents/subagents-orders.js | Customer service, admin, logistics |
| Payment agent | subagents/subagents-payment.js | Metode bayar, konfirmasi, status instant payment |
| Booking agent | subagents/subagents-booking.js | Facade booking; tool backend belum diimplementasikan |
| Order tools | tools/order/tools.js | Cart, checkout, address, shipping, payment, complaint |
| Domain services | service/ | Query, formatting, order lifecycle, external API |
| Models | models/ (24 file) | Mongoose schema |
| Follow-up producer | scheduler/workerService.js | Generate dan enqueue delayed job |
| Follow-up worker | scheduler/worker/worker.js | Re-check order dan kirim pesan WhatsApp |
| Middleware | middleware/authMiddleware.js | verifyToken |
| Config | config/env.js, config/db.js | Environment + Mongoose connect |
| Utils | utils/util.js, utils/redisHealth.js | Vision, transcription, Redis health |
Specialist agents
| Agent | Tool wrapper | Model | Fungsi |
|---|---|---|---|
| Customer Service | customer_service_department | gpt-4o-mini | FAQ, katalog, stok, komplain |
| Admin | admin_department | gpt-5.4 | Cart, checkout, perubahan produk/varian/quantity |
| Logistics | logistics_departemen | gpt-5.4 | Alamat, ongkir, kurir, tracking resi |
| Payment | payment_department | gpt-5.4 | Metode bayar, konfirmasi, instant payment |
| Booking | booking_departement | gpt-4o-mini | Reservasi 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
- Baru mulai? Baca Setup Environment —
config/env.jsmemegang seluruh URL service dan kredensial. - Sudah punya env? Lanjut ke Local Development.
- Akan deploy? Baca Deployment — PM2, dua process (app + worker).
- Engineer baru wajib baca Agent Architecture sebelum menyentuh agent/prompt.