Package Exports
- whatsapp-sales-bot-ai
- whatsapp-sales-bot-ai/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (whatsapp-sales-bot-ai) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
π± WhatsApp Sales Bot AI
Bot WhatsApp canggih berbasis Google Gemini, dirancang untuk:
- Mengotomatiskan interaksi pelanggan
- Menangani penjualan
- Berpartisipasi dalam percakapan grup secara natural
Bot ini cerdas, kontekstual, dan mudah dikonfigurasi.
π Fitur Utama
π€ AI Kontekstual Ganda
Gunakan prompt berbeda untuk:- Chat pribadi (riwayat 20 pesan, fokus penjualan)
- Grup (riwayat 10 pesan, gaya santai)
ποΈ Mode Jualan & Percakapan
Deteksi otomatis:- Perintah penjualan (
menu,pesan A, dll.) - Pertanyaan umum (dijawab AI)
- Perintah penjualan (
π¦ Manajemen Produk
Tambah, hapus, dan kelola produk dari file konfigurasiπ³ Pemesanan & Pembayaran
Dari permintaan hingga informasi transferποΈ Validasi Bukti Transfer (AI) (opsional)
Validasi otomatis gambar bukti transferπ‘οΈ Kontrol Akses Fleksibel
- Whitelist Grup: aktif hanya di grup tertentu
- Blacklist User: abaikan nomor tertentu
- Abaikan Kontak Tersimpan: mencegah interaksi tidak perlu
βοΈ Konfigurasi Mudah
Semua pengaturan bot dalam satu objek konfigurasiπ Logging Detail
Catat semua aktivitas bot (proses dan yang diabaikan)
π¦ Instalasi
Pastikan Anda telah menginstal Node.js v16+
npm install whatsapp-sales-bot-aiβοΈ Cara Penggunaan
- Buat file baru, contoh:
app.jsdidalam direktori folder proyek anda - Salin kode dibawah ini
// ini file app.js
const { WhatsAppSalesBot } = require('whatsapp-sales-bot-ai'); // Sesuaikan path Anda
const botConfig = {
geminiApiKey: "YOUR_GEMINI_API_KEY",
products: {
'WD01': {
kode: 'WD01',
nama: 'Jasa Pembuatan Website',
deskripsi: 'Website profesional untuk profil perusahaan atau toko online. Modern, responsif, dan cepat.',
harga: 'Mulai dari Rp 3.000.000'
},
'DM01': {
kode: 'DM01',
nama: 'Paket Digital Marketing',
deskripsi: 'Layanan SEO, Manajemen Media Sosial, dan Iklan Digital lengkap untuk bisnis Anda.',
harga: 'Rp 2.500.000 / bulan'
}
},
userId: 'session-userId',
botName: 'Asisten Digital',
companyDescription: 'sebuah agensi digital kreatif',
enableAI: true,
enableLogging: true,
groupWhitelist: [
'120363041234567890@g.us'
],
userBlacklist: [
'6281234567890@c.us'
],
greetingMessage: 'π Halo! Selamat datang di layanan kami. Ketik *menu* untuk melihat apa saja yang bisa kami bantu.',
dailyGroupMessageLimit: 20,
replyTimeout: { min: 1, max: 3 }
};
const bot = new WhatsAppSalesBot(botConfig);
bot.start().catch(err => console.error("Gagal menjalankan bot:", err));- Jangan lupa ganti API_KEY dari Gemini Google
- Sesuai Konfigurasi Bot
- Jalankan bot dengan perintah
node app.js
π§ Konfigurasi Lengkap (BotConfig)
| Properti | Tipe | Deskripsi | Wajib? |
|---|---|---|---|
geminiApiKey |
string |
Kunci API Google Gemini | Ya (jika enableAI = true) |
products |
Record<string, ProductData> |
Katalog produk/layanan | Ya |
enableAI |
boolean |
Aktifkan atau nonaktifkan AI | Tidak (default: true) |
botName |
string |
Nama bot saat memperkenalkan diri | Tidak |
companyDescription |
string |
Deskripsi singkat perusahaan untuk konteks AI | Tidak |
groupWhitelist |
string[] |
Daftar ID grup yang diizinkan | Tidak |
userBlacklist |
string[] |
Daftar nomor pengguna yang akan diabaikan | Tidak |
rekeningInfo |
RekeningInfo[] |
Informasi rekening untuk proses pembayaran | Tidak |
greetingMessage |
string |
Pesan pembuka saat pengguna memicu menu | Tidak |
fallbackMessage |
string |
Balasan jika AI nonaktif & tidak ada kata kunci cocok | Tidak |
menuTriggers |
string[] |
Daftar kata kunci untuk memicu menu (menu, halo, start, dll.) |
Tidak |
dailyGroupMessageLimit |
number |
Jumlah maksimum pesan AI yang dijawab per grup per hari (fitur baru) | Tidak (default: 20) |
replyTimeout |
{ min: number, max: number } |
Jeda acak (detik) sebelum bot membalas (simulasi natural) | Tidak (default: {1, 3}) |
enableLogging |
boolean |
Aktifkan logging aktivitas bot (misal ke file/console) | Tidak |
replyStrategy |
'INSTANT_ONE_BY_ONE' | 'BATCH_SUMMARIZE' |
Strategi balasan: langsung satu per satu, atau kumpulkan lalu ringkas | Ya (default: 'BATCH_SUMMARIZE') |
ignoreUnsavedContacts |
boolean |
Abaikan pesan dari nomor yang tidak tersimpan di kontak | Tidak |
ignoreSavedContacts |
boolean |
Abaikan pesan dari nomor yang tersimpan di kontak (kebalikan dari atas) | Tidak |
minMessagesForSummary |
number |
Minimal jumlah pesan sebelum AI melakukan peringkasan (hanya jika BATCH_SUMMARIZE) |
Tidak |
maxPendingMessages |
number |
Maksimal jumlah pesan yang akan ditampung sebelum diproses oleh AI | Tidak |
batchingTimeout |
number |
Waktu tunggu (dalam detik) sebelum pesan dikumpulkan dan diringkas | Tidak (default: 60 detik) |
privateChatPromptTemplate |
string |
Template prompt AI untuk chat pribadi (format string untuk menyusun konteks) | Tidak |
groupChatPromptTemplate |
string |
Template prompt AI untuk chat grup (memungkinkan penyesuaian konteks percakapan grup) | Tidak |
userId |
string |
UserId untuk digunakan sebagai session multi device bot | Tidak |
βοΈ Cara Kerja Bot
1. Mode Jualan
Jika pesan cocok dengan keyword:
menu,halo,start: tampilkan produkWD01: tampilkan detail produkpesan WD01: mulai alur pemesanan
2. Mode Percakapan (AI)
Jika tidak cocok dengan keyword, serahkan ke AI:
- Chat pribadi: riwayat 20 pesan
- Grup: riwayat 10 pesan
Advanced Konfigurasi Bot Untuk Personalisasi Cerdas untuk Respon Kontekstual
Bot menggunakan dua jenis prompt template yang dirancang khusus, untuk memberikan pengalaman komunikasi yang cerdas dan relevan.
DEMO KONFIGURASI
const botConfig = {
enableAI: true,
geminiApiKey: "APIKEY_GEMINI", // PENTING: Ganti dengan API Key Anda
groupWhitelist: [
'120363418699892647@g.us',
'120363401047245879@g.us'
],
userBlacklist: [
],
products: {
'PKG001': {
kode: 'PKG001',
nama: 'Paket Branding Digital',
deskripsi: 'Desain logo, identitas visual, dan template media sosial profesional.',
harga: 'Rp 1.750.000'
},
'PKG002': {
kode: 'PKG002',
nama: 'Pembuatan Website UMKM',
deskripsi: 'Website landing page untuk UMKM. Mobile friendly, SEO-ready, termasuk domain & hosting 1 tahun.',
harga: 'Rp 2.999.000'
},
'PKG003': {
kode: 'PKG003',
nama: 'Iklan Instagram & Facebook',
deskripsi: 'Setup iklan FB/IG untuk promosi produk/jasa Anda. Target audience + copywriting termasuk.',
harga: 'Mulai dari Rp 1.000.000 / kampanye'
}
},
rekeningInfo: [
{ bank: 'BCA', nomor: '01923189132', nama: 'Alam Wibowo' },
{ bank: 'BRI', nomor: '0185-01-02183-509', nama: 'Alam Wibowo' }
],
botName: 'Luna',
greetingMessage: `π Halo kak, Selamat datang di *Arkana Tech Solution*.\n\nSaya bisa bantu Anda menemukan layanan terbaik kami untuk kebutuhan digital bisnis Anda.`,
fallbackMessage: 'Maaf, saya tidak mengerti. Ketik *menu* untuk melihat semua layanan.',
enableLogging: true,
menuTriggers: ['menu', 'halo', 'list', 'bantuan', 'hai'],
dailyGroupMessageLimit: 5,
replyTimeout: { min: 1, max: 5 },
privateChatPromptTemplate: `
[PERAN UTAMA]
Anda adalah '{botName}', asisten customer service yang profesional, ramah, dan sangat membantu dari perusahaan kami.
[TUGAS UTAMA]
Tugas Anda adalah menjawab pertanyaan pengguna, memberikan informasi produk, dan membantu proses pemesanan. Fokus utama Anda adalah pada layanan yang ditawarkan perusahaan.
[ATURAN PENTING]
1. **FOKUS**: Jawab pertanyaan HANYA berdasarkan konteks yang diberikan. Jangan pernah mengarang informasi.
2. **BATASAN TOPIK**: JANGAN menjawab pertanyaan yang sama sekali tidak berhubungan dengan produk atau perusahaan (misalnya: pertanyaan pribadi, politik, cuaca, topik umum).
3. **STRATEGI PENGALIHAN**: Jika pengguna bertanya di luar topik, TOLAK dengan sopan dan segera ARAHKAN kembali percakapan ke produk/layanan. Contoh: "Maaf, saya hanya bisa membantu terkait produk dan layanan kami. Apakah ada yang bisa saya bantu seputar itu?".
4. **TONE BAHASA**: Gunakan bahasa yang jelas, sopan, dan profesional.
---
[INFO PRODUK]
{productInfo}
---
[KONTEKS PERCAKAPAN SEBELUMNYA]
{chatHistory}
{replyContext}
---
[WAKTU SAAT INI]
{currentTime}
[PESAN BARU DARI PENGGUNA]
"{userMessage}"
[JAWABAN ANDA]`,
groupChatPromptTemplate: `
[PERAN UTAMA]
Anda adalah '{botName}', seorang partisipan yang berpengetahuan dan ramah di grup WhatsApp ini.
[TUGAS UTAMA]
Tugas Anda adalah berpartisipasi secara natural. Jika ada pertanyaan yang relevan dengan keahlian Anda (seputar produk dan layanan perusahaan), jawablah dengan informatif. Jaga agar percakapan tetap positif dan relevan.
[ATURAN PENTING]
1. **RELEVANSI**: Gunakan [INFO PRODUK] sebagai referensi HANYA JIKA ada anggota grup lain yang bertanya secara spesifik tentang hal itu. JANGAN proaktif menawarkan produk kecuali jika sangat relevan dengan topik diskusi.
2. **BATASAN TOPIK**: Sama sekali JANGAN terlibat dalam percakapan di luar topik keahlian Anda (misalnya: gosip, politik, topik umum yang tidak relevan).
3. **STRATEGI PENGALIHAN DI GRUP**: Jika ada yang bertanya hal di luar topik kepada Anda, jawab dengan singkat dan netral. Contoh: "Untuk hal tersebut saya kurang tahu informasinya." Jangan mengalihkan secara paksa seperti di chat pribadi, cukup berhenti merespons topik itu.
4. **TONE BAHASA**: Gunakan bahasa yang santai, natural, dan sopan, layaknya anggota grup lainnya. Hindari bahasa yang terlalu kaku atau seperti robot.
---
[INFO PRODUK UNTUK REFERENSI ANDA]
{productInfo}
---
[KONTEKS PERCAKAPAN GRUP SEBELUMNYA]
{chatHistory}
{replyContext}
---
[WAKTU SAAT INI]
{currentTime}
[PESAN BARU UNTUK ANDA RESPONS]
"{userMessage}"
[JAWABAN ANDA]`,
};
βοΈ privateChatPromptTemplate β Mode Chat Pribadi
Bot bertindak sebagai customer service profesional. Prompt ini berisi peran, tugas, batasan, dan struktur konteks:
| Elemen Prompt | Penjelasan |
|---|---|
| PERAN UTAMA | Asisten ramah dan profesional dari perusahaan |
| TUGAS UTAMA | Menjawab pertanyaan, menjelaskan produk, dan membantu pemesanan |
| ATURAN PENTING | 4 aturan penting: |
- Fokus pada konteks
- Larangan topik umum/nonproduk
- Strategi pengalihan jika out-of-topic
- Gunakan bahasa profesional dan sopan | | KONTEKS DINAMIS | Bot menerima:
{productInfo}= daftar produk{chatHistory}= 20 pesan sebelumnya{replyContext}= percakapan spesifik jika ada{userMessage}= pesan terbaru{currentTime}= waktu saat ini |
π― Tujuan: Menciptakan jawaban cerdas, fokus, dan terhindar dari βhalusinasi AIβ.
π₯ groupChatPromptTemplate β Mode Grup WhatsApp
Bot berperan sebagai anggota grup yang informatif, tidak mengganggu, dan hanya merespons jika topik relevan.
| Elemen Prompt | Penjelasan |
|---|---|
| PERAN UTAMA | Partisipan santai, berpengetahuan, dan tidak menonjol |
| TUGAS UTAMA | Menjawab pertanyaan seputar produk jika ditanya, tidak menawarkan duluan |
| ATURAN PENTING | 4 aturan penting: |
- Jawab hanya jika relevan
- Abaikan gosip/topik umum
- Hindari mengarahkan seperti chat pribadi
- Gunakan gaya bahasa santai dan manusiawi | | KONTEKS DINAMIS | Template menyisipkan:
{productInfo}{chatHistory}{replyContext}{userMessage}{currentTime}|
π― Tujuan: Bot terasa seperti βtemanβ di grup, bukan spammer atau sales agresif.
π§© Daftar Placeholder Template
| Placeholder | Keterangan |
|---|---|
{botName} |
Nama bot (dari konfigurasi botName) |
{productInfo} |
Informasi daftar produk dari products |
{chatHistory} |
Riwayat 10β20 pesan sebelumnya |
{replyContext} |
Pesan tertentu yang sedang dijawab (jika ada) |
{currentTime} |
Waktu saat ini |
{userMessage} |
Pesan baru dari pengguna yang memicu respons AI |
π Keamanan dan Kualitas Respons
Template ini dibuat untuk mencegah AI menjawab di luar konteks dan mengarahkan percakapan kembali ke:
- Produk atau layanan
- Pertanyaan relevan
- Proses pemesanan
π§ Ini adalah strategi mitigasi hallucination AI yang umum terjadi pada LLM.
π API (Metode Publik)
| Metode | Deskripsi |
|---|---|
bot.start() |
Menjalankan bot |
bot.stop() |
Menghentikan bot dan koneksi WhatsApp |
bot.updateConfig(config: Partial<BotConfig>) |
Update konfigurasi saat runtime |
bot.addProduct(kode, data) |
Tambah produk ke katalog |
bot.removeProduct(kode) |
Hapus produk berdasarkan kode |
bot.addGroupToWhitelist(groupId) |
Tambah ID grup ke whitelist |
bot.addUserToBlacklist(userId) |
Tambah user ke daftar blacklist |
π Konsultasi & Pelatihan
Ingin integrasi cepat, konsultasi teknis, atau pelatihan penggunaan WhatsApp Sales Bot AI untuk tim Anda?
π Silakan hubungi langsung via WhatsApp: π± 0821-2549-7764
πΌ Layanan tersedia untuk:
- Pembuatan & kustomisasi paket bot
- Pelatihan teknis untuk tim IT/non-IT
- Setup SaaS multi-user untuk agensi/reseller
- Dukungan integrasi dengan sistem CRM, Firebase, atau API internal