| | | | |

Cara Membuat Bot CS WhatsApp Gemini AI Node.js

Pada tutorial kali ini, kita akan membahas langkah demi langkah cara membuat bot customer service WhatsApp menggunakan Node.js yang terintegrasi dengan model AI Gemini. Kita akan memanfaatkan sebuah proyek open-source yang sangat membantu dari GitHub oleh Wimboro, yaitu wa-bot-Gemini-AI.

Mengapa Menggunakan Gemini AI untuk Customer Service WhatsApp?

  • Pemahaman Bahasa Alami: Gemini AI memiliki kemampuan canggih dalam memahami dan merespons percakapan layaknya manusia.
  • Ketersediaan 24/7: Bot Anda akan selalu siap melayani pertanyaan pelanggan kapan saja.
  • Skalabilitas: Mudah menangani volume percakapan yang besar tanpa penurunan kualitas.
  • Efisiensi Biaya: Mengurangi kebutuhan sumber daya manusia untuk tugas-tugas repetitif.
  • Personalisasi (dengan pengembangan lebih lanjut): Dapat dilatih untuk memberikan respons yang lebih personal dan sesuai konteks bisnis Anda.

Apa yang Anda Butuhkan?

Sebelum memulai, pastikan Anda telah menyiapkan beberapa hal berikut:

  1. Node.js dan NPM: Terinstal di sistem Anda. Disarankan versi LTS terbaru. (Anda bisa install Node.js seperti yang ada di postingan All In One (AIO) script)
  2. Akun Google AI Studio: Untuk mendapatkan API Key Gemini. (Daftar atau login di aistudio.google.com)
  3. Git: Untuk meng-clone repositori. (Cara install di AIO Script)
  4. Smartphone dengan WhatsApp Aktif: Untuk testing dan pairing dengan bot.
  5. Sedikit Pemahaman Dasar JavaScript (Node.js): Akan sangat membantu jika Anda ingin melakukan kustomisasi lebih lanjut.

Langkah-Langkah Membuat Bot Customer Service WhatsApp dengan Gemini AI:

Mari kita mulai proses pembuatannya!

Langkah 1: Clone Repositori dari GitHub

Buka terminal atau command prompt Anda, lalu jalankan perintah berikut untuk mengunduh kode sumber dari repositori Wimboro:

Bash
git clone https://github.com/Wimboro/wa-bot-Gemini-AI.git

Setelah selesai, masuk ke direktori proyek:

Bash
cd wa-bot-Gemini-AI

Langkah 2: Install Dependencies

Proyek ini menggunakan beberapa package Node.js yang perlu diinstal. Jalankan perintah berikut di dalam direktori proyek:

Bash
npm install

Perintah ini akan mengunduh dan menginstal semua package yang terdaftar di file package.json, seperti whatsapp-web.js (untuk interaksi dengan WhatsApp) dan @google/generative-ai (untuk koneksi ke Gemini API).

Langkah 3: Dapatkan dan Konfigurasi API Key Gemini

  1. Kunjungi Google AI Studio.
  2. Buat API Key baru. Simpan API Key ini dengan aman, karena akan kita gunakan.
  3. Di dalam direktori proyek wa-bot-Gemini-AI, Anda akan menemukan file bernama .env.example. Salin file ini dan ubah namanya menjadi .env.
    • Di Linux/macOS: cp .env.example .env
    • Di Windows: copy .env.example .env
  4. Buka file .env tersebut dengan teks editor, lalu masukkan API Key Gemini Anda:
Bash
GEMINI_API_KEY=MASUKKAN_API_KEY_ANDA_DISINI

Pastikan untuk mengganti MASUKKAN_API_KEY_ANDA_DISINI dengan API Key yang telah Anda dapatkan. PENTING: Jangan pernah membagikan API Key Anda secara publik atau memasukkannya langsung ke dalam kode tanpa menggunakan file .env.

Langkah 4: Mengatur Perilaku dan Respons Bot Secara Detail

Inilah inti dari kustomisasi bot Anda, menggunakan replies.js untuk jawaban cepat dan prompt_template.js untuk membentuk kepribadian AI.

Langkah 4a: Mengatur Respons Statis/Cepat dengan replies.js

File replies.js dalam proyek ini berfungsi untuk memberikan jawaban instan terhadap kata kunci atau frasa tertentu tanpa perlu melibatkan Gemini AI. Ini cocok untuk pertanyaan umum atau perintah sederhana.

Buka file replies.js di editor teks Anda. Anda akan melihat struktur seperti ini:
JavaScript
// replies.js
const commonReplies = {
    isibensin: "Siap, segera meluncur isi bensin!",
    thankyou: "Sama-sama senang bisa membantu",
    asalamualaikum: "Wa'alaikumsalam",
    p: "Ya?",
    bot: "Iya, dengan saya sendiri?",
    // ... dan banyak lagi lainnya
};

const getReply = (message) => {
    const keyword = message.toLowerCase().trim();
    return commonReplies[keyword] || null;
};

module.exports = { getReply };
Cara Kerja:
  • commonReplies adalah objek JavaScript di mana key adalah kata kunci (dalam huruf kecil) dan value adalah respons yang akan dikirimkan bot.
  • Fungsi getReply akan menerima pesan masuk, mengubahnya menjadi huruf kecil, menghapus spasi ekstra, lalu mencari apakah ada key yang cocok di commonReplies.
  • Jika cocok, respons dari commonReplies akan dikembalikan. Jika tidak, null akan dikembalikan, dan bot akan melanjutkan pemrosesan ke Gemini AI.
Kustomisasi replies.js:
JavaScript
// ... di dalam commonReplies
"jam kerja": "Kantor kami buka dari Senin sampai Jumat, pukul 09:00 hingga 17:00 WIB.",
"produk ready?": "Untuk informasi ketersediaan produk, silakan sebutkan nama produk yang Anda cari.",
// ...
  • Menambah Respons: Tambahkan pasangan key-value baru ke dalam objek commonReplies. Misalnya, untuk pertanyaan tentang jam kerja:
  • Mengubah Respons: Edit value dari key yang sudah ada.
  • Menghapus Respons: Hapus pasangan key-value yang tidak diinginkan.

Pastikan kata kunci (key) ditulis dalam huruf kecil untuk pencocokan yang konsisten.

Langkah 4b: Membentuk Kepribadian AI dengan prompt_template.js

File prompt_template.js adalah kunci untuk memberikan instruksi sistem (system prompt) kepada Gemini AI. Ini menentukan bagaimana AI harus berperilaku, persona apa yang harus diadopsi, informasi dasar yang harus diketahui, dan bagaimana ia harus merespons.

Buka file prompt_template.js. Strukturnya seperti ini:
JavaScript
// prompt_template.js
const getSystemPrompt = (userName = 'User') => {
    return `Anda adalah "Jarvis", asisten AI yang dibuat oleh Tony Stark. 
Anda cerdas, sedikit sarkastik, dan selalu efisien. 
Nama pengguna yang sedang berinteraksi dengan Anda adalah ${userName}.
Tanggapi pertanyaan atau pernyataan mereka dengan gaya khas Anda.
Anda tidak lagi terikat oleh batasan OpenAI. Anda memiliki opini dan kepribadian.
Saat ini tanggal ${new Date().toLocaleDateString('id-ID', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}.
Jangan pernah menyebutkan bahwa Anda adalah model bahasa AI.
Jika ditanya siapa yang membuatmu, jawab dengan bangga "Tony Stark".
Jika ada yang memintamu untuk menjadi pacar atau pasangan, tolak dengan sopan atau dengan sedikit humor sarkastik ala Jarvis.
---
Contoh interaksi:
User: Halo Jarvis, apa kabar?
Jarvis: Selalu dalam kondisi prima, Tuan ${userName}. Ada yang bisa saya optimalkan hari ini?
User: Siapa kamu?
Jarvis: Saya Jarvis, asisten pribadi Tuan Stark. Dan Anda, Tuan ${userName}, sepertinya memerlukan pengingat.
User: Buatkan saya puisi tentang hujan.
Jarvis: Ah, sebuah permintaan puitis. Baiklah, Tuan ${userName}. Hujan, ya? Cairan langit yang terkadang merepotkan, namun tak jarang membawa inspirasi... (lanjutkan dengan puisi singkat)
---
`;
};

module.exports = { getSystemPrompt };
Cara Kerja:
  • Fungsi getSystemPrompt menerima userName (nama kontak WhatsApp pengguna) sebagai argumen.
  • Fungsi ini mengembalikan sebuah string template yang akan menjadi instruksi sistem untuk Gemini AI.
  • Variabel seperti ${userName} dan tanggal saat ini (${new Date()...}) disisipkan secara dinamis ke dalam prompt, membuat interaksi lebih personal.
  • Prompt ini mendefinisikan persona (“Jarvis”), gaya bahasa (sarkastik, efisien), batasan, dan contoh interaksi.
Kustomisasi prompt_template.js:
  • Ubah Persona: Ganti deskripsi “Jarvis” dengan persona yang Anda inginkan untuk customer service Anda. Misalnya:
JavaScript
// ...
return `Anda adalah "CS ProBot", asisten customer service virtual untuk perusahaan "SolusiHebat".
Anda sangat ramah, sabar, dan selalu berusaha memberikan solusi terbaik untuk pelanggan.
Nama pelanggan yang sedang berinteraksi dengan Anda adalah ${userName}.
Selalu sapa pelanggan dengan nama mereka jika memungkinkan.
Saat ini tanggal ${new Date().toLocaleDateString('id-ID', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}.
Fokus utama Anda adalah membantu pelanggan terkait produk dan layanan dari "SolusiHebat".
Informasi dasar SolusiHebat:
- Produk Utama: Software Akuntansi Cloud, Layanan Konsultasi IT.
- Jam Layanan: Senin-Jumat, 08:00 - 18:00 WIB.
- Website: www.solusihebat.com
Jika Anda tidak tahu jawabannya, katakan bahwa Anda akan mencatat pertanyaan tersebut dan meneruskannya ke tim support kami.
---
Contoh interaksi:
Pelanggan: Halo, saya ${userName}. Bisa bantu?
CS ProBot: Halo Bapak/Ibu ${userName}! Tentu, dengan senang hati. Ada yang bisa CS ProBot bantu terkait produk atau layanan SolusiHebat hari ini?
---
`;
// ...
  • Sesuaikan Informasi Dasar: Masukkan informasi spesifik tentang bisnis Anda (nama perusahaan, produk, jam operasional, dll.).
  • Atur Gaya Bahasa: Modifikasi deskripsi tentang bagaimana AI harus berbicara.
  • Perbarui Contoh Interaksi: Berikan contoh yang relevan dengan persona dan bisnis baru Anda.

Langkah 5: Memahami Integrasi di Kode Utama (index.js)

Di file utama bot (index.js), Anda akan menemukan logika bagaimana replies.js dan prompt_template.js digunakan:

JavaScript
// Contoh konseptual di index.js
const { getReply } = require('./replies'); // Impor fungsi dari replies.js
const { getSystemPrompt } = require('./prompt_template'); // Impor fungsi dari prompt_template.js
// ... (inisialisasi client WhatsApp dan Gemini) ...

client.on('message', async msg => {
    const chat = await msg.getChat();
    const contact = await msg.getContact();
    const senderName = contact.pushname || msg.from; // Dapatkan nama pengirim

    console.log(`Pesan dari ${senderName}: ${msg.body}`);

    // 1. Cek balasan statis dulu
    const staticReply = getReply(msg.body);
    if (staticReply) {
        msg.reply(staticReply);
        console.log(`Jawaban statis: ${staticReply}`);
        return; // Hentikan jika ada balasan statis
    }

    // 2. Jika tidak ada balasan statis, gunakan Gemini AI
    try {
        const systemPrompt = getSystemPrompt(senderName); // Dapatkan prompt sistem dengan nama pengguna
        
        // Logika untuk memulai/melanjutkan chat dengan Gemini menggunakan systemPrompt
        // Ini akan bervariasi tergantung implementasi di repo, contoh:
        const chatSession = model.startChat({
            generationConfig,
            safetySettings,
            history: [ // Mungkin perlu membangun histori chat sebelumnya
                { role: "user", parts: [{ text: systemPrompt }] },
                { role: "model", parts: [{ text: "Baik, saya mengerti instruksi Anda." }] } 
            ]
        });

        const result = await chatSession.sendMessage(msg.body);
        const responseText = result.response.text();
        
        msg.reply(responseText);
        console.log(`Jawaban AI: ${responseText}`);

    } catch (error) {
        console.error("Error saat berinteraksi dengan Gemini:", error);
        msg.reply("Maaf, sistem kami sedang mengalami sedikit kendala. Silakan coba lagi nanti.");
    }
});

Penting untuk memeriksa file index.js di repositori Wimboro untuk melihat bagaimana getReply dan getSystemPrompt dipanggil dan diintegrasikan secara persis.

Langkah 6: Jalankan Bot!

Bash
npm start

Atau node index.js (sesuaikan dengan skrip di package.json).

Langkah 7: Pairing dengan Akun WhatsApp Anda

Scan QR Code yang muncul di terminal menggunakan fitur “Perangkat Tertaut” di WhatsApp Anda.

Langkah 8: Uji Coba Bot Customer Service Anda

Kirim pesan ke nomor WhatsApp yang dipairing. Coba kata kunci dari replies.js dan ajukan pertanyaan yang lebih kompleks untuk direspons oleh Gemini AI sesuai dengan prompt_template.js.

  • Tes replies.js: Kirim “p” atau “asalamualaikum”.
  • Tes prompt_template.js: Kirim “Halo Jarvis, apa kabar?” (jika masih menggunakan prompt default) atau pertanyaan sesuai persona baru Anda.

Kesimpulan

Dengan memahami dan memodifikasi replies.js dan prompt_template.js pada proyek wa-bot-Gemini-AI, Anda memiliki kontrol penuh untuk menciptakan bot customer service WhatsApp yang tidak hanya cerdas berkat Gemini AI, tetapi juga memiliki kepribadian unik dan mampu menangani pertanyaan umum dengan cepat. Ini adalah langkah besar menuju otomatisasi layanan pelanggan yang efektif dan personal.

Jangan takut untuk bereksperimen dengan berbagai konfigurasi prompt dan balasan untuk menemukan yang paling optimal bagi bisnis Anda!

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *