Membuat Chatbot WhatsApp dengan AI

Membuat Chatbot WhatsApp dengan AI

Membuat Chatbot WhatsApp dengan AI: Panduan Teknis Lengkap

Pendahuluan

Chatbot WhatsApp berbasis AI memungkinkan otomatisasi respons pelanggan dengan kecerdasan kontekstual. Artikel ini membahas arsitektur sistem yang terdiri dari tiga komponen utama: WhatsApp Business API (gateway pesan), Backend Python (logika & orkestrasi), dan AI LLM (generasi respons). Arsitektur ini memastikan skalabilitas, latensi rendah, dan pemisahan tanggung jawab yang jelas.

Prasyarat & Persiapan

Sebelum memulai, pastikan Anda memiliki:
1. Akun WhatsApp Business API: Terdaftar melalui Meta Business Manager.
2. Server VPS: Minimal 2GB RAM, OS Ubuntu 20.04/22.04.
3. Python 3.9+: Dengan pip terinstal.
4. API Key AI: Untuk layanan LLM. Kami merekomendasikan ChatGPT Plus untuk akurasi respons teknis atau Claude Pro untuk penalaran kompleks. Jika Anda membutuhkan referensi real-time, Perplexity Pro dapat diintegrasikan sebagai sumber data eksternal.

Langkah Demi Langkah

Step 1: Setup Environment Server

Instal dependensi Python dan konfigurasi lingkungan virtual.

# Update sistem
sudo apt update && sudo apt upgrade -y

# Instal Python dan pip
sudo apt install python3-pip python3-venv -y

# Buat direktori proyek
mkdir ~/whatsapp-ai-bot && cd ~/whatsapp-ai-bot

# Buat virtual environment
python3 -m venv venv
source venv/bin/activate

# Instal library inti
pip install flask requests openai python-dotenv

Step 2: Konfigurasi API Keys

Buat file .env untuk menyimpan kredensial secara aman. Jangan pernah commit file ini ke repository publik.

# Buat file .env
cat > .env <<EOF
WHATSAPP_TOKEN=your_meta_access_token
WHATSAPP_PHONE_NUMBER_ID=your_phone_number_id
OPENAI_API_KEY=your_openai_api_key
WEBHOOK_VERIFY_TOKEN=your_random_verify_token
EOF

Catatan: Anda dapat menggunakan Notion AI untuk mendokumentasikan struktur konfigurasi ini secara rapi dalam tim Anda.

Step 3: Implementasi Backend Python

Buat file app.py yang menangani webhook WhatsApp dan orkestrasi AI.

import os
import requests
from flask import Flask, request, abort
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()

app = Flask(__name__)

# Inisialisasi Client AI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

WHATSAPP_API_URL = "https://graph.facebook.com/v18.0/"
WHATSAPP_TOKEN = os.getenv("WHATSAPP_TOKEN")
PHONE_NUMBER_ID = os.getenv("WHATSAPP_PHONE_NUMBER_ID")
VERIFY_TOKEN = os.getenv("WEBHOOK_VERIFY_TOKEN")

def get_ai_response(user_message: str) -> str:
    """Mengirim pesan ke AI dan mengembalikan respons."""
    try:
        completion = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": "Kamu adalah asisten customer service yang ramah dan profesional. Jawab dalam Bahasa Indonesia."},
                {"role": "user", "content": user_message}
            ],
            max_tokens=150,
            temperature=0.7
        )
        return completion.choices[0].message.content
    except Exception as e:
        return f"Maaf, terjadi kesalahan: {str(e)}"

def send_whatsapp_message(to_phone: str, message: str):
    """Mengirim pesan via WhatsApp Business API."""
    url = f"{WHATSAPP_API_URL}{PHONE_NUMBER_ID}/messages"
    headers = {
        "Authorization": f"Bearer {WHATSAPP_TOKEN}",
        "Content-Type": "application/json"
    }
    payload = {
        "messaging_product": "whatsapp",
        "to": to_phone,
        "type": "text",
        "text": {"body": message}
    }
    response = requests.post(url, json=payload, headers=headers)
    if response.status_code != 200:
        print(f"Error sending message: {response.text}")

@app.route("/webhook", methods=["GET", "POST"])
def webhook():
    # Verifikasi Webhook (GET Request)
    if request.method == "GET":
        mode = request.args.get("hub.mode")
        token = request.args.get("hub.verify_token")
        challenge = request.args.get("hub.challenge")

        if mode and token == VERIFY_TOKEN:
            return challenge, 200
        else:
            abort(403)

    # Proses Pesan Masuk (POST Request)
    if request.method == "POST":
        data = request.get_json()

        # Ekstrak pesan dari struktur JSON WhatsApp
        try:
            entry = data["entry"][0]["changes"][0]["value"]
            messages = entry["messages"]

            for msg in messages:
                if msg["type"] == "text":
                    user_text = msg["text"]["body"]
                    sender_phone = msg["from"]

                    # Dapatkan respons AI
                    ai_response = get_ai_response(user_text)

                    # Kirim balasan
                    send_whatsapp_message(sender_phone, ai_response)
        except (IndexError, KeyError) as e:
            print(f"Parsing error: {e}")

    return "", 200

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

Step 4: Konfigurasi Webhook di Meta Developer

  1. Login ke Meta for Developers.
  2. Pergi ke WhatsApp > Configuration.
  3. Isi Callback URL: https://your-domain.com/webhook.
  4. Isi Verify Token: your_random_verify_token (sama dengan di .env).
  5. Centang messages di bagian Webhook Fields.

Tips: Jika Anda membutuhkan bantuan dalam merancang alur percakapan atau skrip prompt, gunakan Jasper atau Writesonic untuk menghasilkan variasi prompt yang lebih natural.

Step 5: Jalankan dengan Gunicorn & Nginx

Untuk produksi, jangan gunakan Flask development server. Gunakan Gunicorn dan Nginx sebagai reverse proxy.

# Instal Gunicorn
pip install gunicorn

# Jalankan aplikasi
nohup gunicorn -w 4 -b 0.0.0.0:5000 app:app > gunicorn.log 2>&1 &

Konfigurasi Nginx (/etc/nginx/sites-available/whatsapp-bot):

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Aktifkan site dan restart Nginx:

sudo ln -s /etc/nginx/sites-available/whatsapp-bot /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Tips Optimasi & Keamanan

  1. Rate Limiting: Implementasi rate limiting di Nginx untuk mencegah penyalahgunaan API AI yang berbayar.
  2. Logging: Gunakan library logging Python untuk mencatat setiap interaksi. Ini krusial untuk debugging dan analisis perilaku pengguna.
  3. Prompt Injection: Validasi input pengguna. Jika Anda menggunakan Claude Pro, manfaatkan kemampuan sistem prompt-nya yang lebih kuat untuk menolak instruksi berbahaya.
  4. Backup Data: Jika Anda menyimpan riwayat chat di database, pastikan backup otomatis harian.

Troubleshooting Error Umum

Error Penyebab Solusi
401 Unauthorized Token Meta tidak valid atau kedaluwarsa Perbarui Access Token di Meta Business Manager.
500 Internal Server Error Error parsing JSON atau koneksi AI gagal Cek log gunicorn.log. Pastikan format JSON dari WhatsApp sesuai struktur terbaru.
Webhook Verification Failed Token tidak cocok Pastikan VERIFY_TOKEN di .env sama persis dengan yang diinput di Meta Developer.
AI Response Slow Latensi API AI Gunakan model yang lebih cepat (misal gpt-4o-mini) atau implementasi caching untuk pertanyaan umum.

Kesimpulan

Anda telah berhasil membangun chatbot WhatsApp yang terintegrasi dengan AI. Sistem ini siap untuk di-scale dengan menambahkan fitur seperti database riwayat, multi-bahasa, atau integrasi CRM. Untuk kebutuhan visualisasi data performa chatbot, Anda dapat menggunakan Canva Pro untuk membuat dashboard laporan mingguan yang profesional.

Selamat mencoba dan optimalkan terus prompt AI Anda untuk hasil yang lebih akurat.

🏷️ Topik Terkait: