WhatsApp bot berbasis whatsapp-web.js dengan dashboard React untuk mengelola koneksi, settings, pesan manual, API key, dan multi-session WhatsApp.
Dashboard memakai login berbasis API key sebelum Anda masuk ke area utama dan playground API.
- Login WhatsApp lewat QR code
- Login dashboard menggunakan API key
- Dashboard React dengan komponen gaya shadcn UI
- Edit konfigurasi bot dari UI
- Kelola beberapa session WhatsApp dari dashboard
- Kirim pesan manual dari dashboard
- API key untuk integrasi eksternal
- API playground untuk menguji endpoint
- Endpoint publik
POST /api/public/send-message
npm install
npm run devFrontend berjalan di Vite, backend berjalan di port 3010.
Sebelum menjalankan server, pastikan file .env sudah ada di root project.
npm run build
npm startJalankan command berikut untuk inisialisasi database dan migrasi data:
npm run db:migrate
npm run db:migrate:dataAtau jalankan sekaligus:
npm run db:migrate:all- Config, sesi, log, dan pesan disimpan di MySQL lewat variabel env
MYSQL_HOST,MYSQL_PORT,MYSQL_USER,MYSQL_PASSWORD, danMYSQL_DATABASE. - File
.envdimuat otomatis saat server start. - Session WhatsApp tetap memakai folder
data/session/karena disimpan olehwhatsapp-web.jsLocalAuth. - Setiap request session memakai field
sessionIddi body, misalnyadefault,session-2, atau nama lain yang Anda pilih - API key dipakai untuk login dashboard dan bisa dilihat atau diregenerate dari tab
API Key - Endpoint kirim pesan mendukung text dan image lewat
mediaUrl,mediaBase64,mediaDataUrl, ataumediaPath - Jika media dikirim, field
messageataucaptiondipakai sebagai caption gambar
Contoh isi .env:
MYSQL_HOST=127.0.0.1
MYSQL_PORT=8889
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=wwebjs_botGET /api/statusGET /api/status?sessionId=defaultGET /api/sessionsPUT /api/settingsPOST /api/bot/connectPOST /api/bot/disconnectPOST /api/send-messagePOST /api/public/send-message
Untuk endpoint POST yang berhubungan dengan session, kirim body seperti berikut:
{
"sessionId": "session-2",
"recipient": "6281234567890",
"message": "Halo"
}