D
Setup

Local Development

Cara menjalankan engine-bot lokal — app.js dengan nodemon sebagai process utama, scheduler/worker/worker.js sebagai process terpisah. Tanpa Redis, follow-up dilewati. Tanpa MongoDB, service tetap listen tapi gagal query.

engine-bot berjalan sebagai dua process di lokal: app (app.js) dan worker (scheduler/worker/worker.js). Worker hanya wajib jika fitur follow-up dipakai.

Prasyarat

Sudah selesai Setup Environment? Pastikan:

  • config/env.js ada dengan env.env = 'local'
  • MongoDB lokal berjalan di 127.0.0.1:27017 (DB dazo)
  • Redis lokal di 127.0.0.1:6379 (opsional, untuk follow-up)
  • apiKey (OpenAI) terisi — orchestrator akan gagal tanpa ini

Menjalankan app

bash
npm run dev

Script ini menjalankan nodemon app.js. Server listen di port 1313 (dari env.port saat env.env === 'local').

Verifikasi:

bash
curl http://localhost:1313/health

Response harus berisi status: "ok" dan redis.healthy: true (jika Redis aktif).

Menjalankan worker

bash
node scheduler/worker/worker.js

Worker mengonsumsi queue followUpAi dari Redis dengan concurrency 10. Tanpa Redis berjalan, worker gagal konek dan follow-up tidak diproses — tapi app tetap berjalan.

PM2 (opsional)

File ecosystem.config.js mendefinisikan app untuk PM2:

bash
pm2 start ecosystem.config.js
pm2 logs engine-bot

Testing endpoint

Health

bash
curl http://localhost:1313/health

Auth smoke test

bash
curl -X GET http://localhost:1313/api/test \
  -H "Authorization: Bearer <jwt>"

JWT harus diterbitkan dazoapp dengan jwtSecret yang sama — lihat Auth & JWT.

Chatbot reply

bash
curl -X POST http://localhost:1313/api/chatbot-api \
  -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  -d '{
    "store_id": "store-1",
    "customer_id": "628123456789",
    "agent_id": "agent-1",
    "question": "Halo",
    "time_reply": 2
  }'

Detail endpoint ada di API Reference.

Yang tidak bisa diuji lokal

FituriKeterbatasan
Instant paymentButuh dazoapp + DOKU reachable — base_url harus production atau staging
WhatsApp deliveryButuh messaging API (BASE_URL_SEND_MESSAGE) + device terdaftar
RajaOngkirButuh apiKey_RajaOngkirV2 valid
Socket.IO newMessageBisa connect, tapi tidak ada auth/tenant room — lihat Conventions

Setelah mengubah kode JavaScript

Tidak ada test suite. Jalankan minimal:

bash
node --check <file-yang-berubah>

Prompt reload

Prompt Markdown di prompt/ dibaca dari filesystem saat agent dibangun (per request). Perubahan prompt berlaku pada request berikutnya — restart tidak diwajibkan oleh loader saat ini.

Langkah berikutnya