Skip to content

Repository files navigation

Chatbot Gwen — WhatsApp AI Kosmetik Bot

Bot WhatsApp customer service kosmetik menggunakan Baileys + n8n + Ollama (LLama3) + PostgreSQL.

Arsitektur

Customer (WhatsApp) → Baileys Bot → n8n Webhook → PostgreSQL (Produk DB) → Ollama LLM → Reply

Fitur

  • 🌸 Rekomendasi skincare berdasarkan masalah kulit (jerawat, kusam, sensitif, dll)
  • 💄 Pencarian produk by brand (Wardah, Emina, Skintific, Clinique, dll)
  • 💰 Info harga, promo, dan stok
  • 🧠 Session memory per customer (mengingat intent & tipe kulit)
  • 👋 Greeting handler otomatis
  • 🤖 Balasan natural via Ollama LLM
  • 📦 20+ kategori produk (sunscreen, serum, cleanser, moisturizer, dll)

1. Prasyarat

Komponen Minimum
Node.js 18+
n8n 2.14.2+
PostgreSQL 14+
Ollama Terbaru + model llama3

Pastikan Ollama sudah install model:

ollama pull llama3
ollama serve

2. Instalasi

npm install

3. Setup Database

a. Buat database & tabel

psql -U postgres -f db/postgres_dummy.sql

b. Insert 1000 produk branded

psql -U postgres -d kosmetik_db -f db/postgres_dummy_1000_branded.sql

c. Jalankan migrasi (tambah kolom brand, harga_promo, stok)

psql -U postgres -d kosmetik_db -f db/migrate_add_columns.sql

Verifikasi

SELECT COUNT(*) FROM produk;                    -- harus ~1000+
SELECT COUNT(DISTINCT brand) FROM produk;       -- harus ~25+ brand
SELECT * FROM produk LIMIT 5;                   -- cek kolom brand, harga_promo, stok ada

4. Konfigurasi .env

N8N_WEBHOOK=http://localhost:5678/webhook/whatsapp-v2
WA_PHONE=6281234567890

5. Import Workflow n8n

a. Import

  1. Buka n8n → WorkflowsImport from File
  2. Pilih: n8n/workflow_full_postgres_2142_ollama_memory.json

b. Set Credentials

  1. PostgreSQL: Klik node "Load Brands" & "Search Product" → set credential PostgreSQL
    • Host: localhost
    • Port: 5432
    • Database: kosmetik_db
    • User/Password: sesuai setup PostgreSQL kamu
  2. Ollama: Klik node "Ollama Reply" → set credential Ollama
    • Base URL: http://localhost:11434

c. Activate

  • Klik SaveActivate workflow

d. Jika setup manual (tanpa import)

Lihat n8n/manual_node_code.md untuk code setiap node.


6. Jalankan Bot

# Versi modular (src/)
npm start

# Versi single file
npm run start:baileys

Scan QR code WhatsApp yang muncul di terminal.


7. Cara Test

Test via curl (tanpa WhatsApp)

# Test greeting
curl -X POST http://localhost:5678/webhook/whatsapp-v2 \
  -H "Content-Type: application/json" \
  -d '{"message":"halo kak","from":"test123"}'

# Test cari produk jerawat
curl -X POST http://localhost:5678/webhook/whatsapp-v2 \
  -H "Content-Type: application/json" \
  -d '{"message":"ada skincare untuk jerawat?","from":"test123"}'

# Test cari brand
curl -X POST http://localhost:5678/webhook/whatsapp-v2 \
  -H "Content-Type: application/json" \
  -d '{"message":"produk wardah apa aja?","from":"test123"}'

# Test rekomendasi kulit sensitif
curl -X POST http://localhost:5678/webhook/whatsapp-v2 \
  -H "Content-Type: application/json" \
  -d '{"message":"kulit sensitif pakai apa ya?","from":"test123"}'

Test via WhatsApp

Chat ke nomor WhatsApp yang terhubung:

kak ada skincare buat kusam?

8. Struktur File

chatbot-gwen/
├── baileys.js                    # Bot WA (single file)
├── src/                          # Bot WA (modular)
│   ├── app.js
│   ├── config/env.js
│   ├── handlers/messageHandler.js
│   └── services/
│       ├── n8nService.js
│       └── whatsappService.js
├── n8n/                          # Workflow n8n
│   ├── workflow_full_postgres_2142_ollama_memory.json  ← UTAMA
│   └── manual_node_code.md       # Panduan setup manual per node
├── db/                           # Database
│   ├── postgres_dummy.sql        # Schema + 5 data dummy
│   ├── postgres_dummy_1000_branded.sql  # 1000 produk branded
│   └── migrate_add_columns.sql   # Migration: brand, harga_promo, stok
├── .env
└── package.json

9. Flow Diagram Workflow n8n

                                    Load Brands → Brands List
                                        ↑               ↓
Webhook → Extract Data → Is Greeting?             Session Memory → Normalize → Search DB → Format
                              ↓ YES                                                           ↓
                        Greeting Reply                                                    Has Results?
                              ↓                                                      YES ↓        ↓ NO
                        Respond Greeting                                          Ollama LLM    Fallback
                                                                                      ↓           ↓
                                                                                 Format Reply → Respond

Troubleshooting

Masalah Solusi
Webhook error 404 Pastikan workflow sudah Activate di n8n
"n8n no reply" di console Cek credential PostgreSQL & Ollama di n8n
Ollama timeout Pastikan ollama serve running, cek http://localhost:11434
Brand tidak terdeteksi Jalankan db/migrate_add_columns.sql dulu
Bot tidak reply di WA Cek QR scan berhasil, lihat log terminal

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages