Cara Pakai OpenAI API untuk Auto-Reply WhatsApp Bisnis Online

Bayangin toko online lo respons customer 24/7, tanpa hire admin shift malam. Customer nanya jam 2 pagi “kak stoknya ada?” — langsung kejawab. Nanya “berapa ongkir ke Bandung?” — langsung dihitung. Semua otomatis, natural, dan gak kayak bot jadul yang jawabnya kaku.

Ini bukan science fiction. Dengan OpenAI API + WhatsApp Business API, lo bisa bikin auto-reply intelligent dalam 1-2 jam. Tutorial ini bakal kasih step-by-step lengkapnya.

Kenapa Auto-Reply AI untuk WhatsApp Bisnis?

Statistik bicara: 70% customer expects respons dalam 5 menit. Kalau lo slow reply, mereka pindah ke kompetitor. Tapi hire admin 24 jam mahal banget.

Auto-reply AI solve 3 masalah: 1. Respons instant — customer happy, conversion naik 2. Jawaban konsisten — gak ada “admin lagi mood buruk” 3. Filter pertanyaan umum — admin human cuma handle case kompleks

Pertanyaan yang AI bisa handle: cek stok, cek harga, info ongkir, jam buka, return policy, tracking order. Yang manusia handle: negosiasi harga, complaint serius, case custom.

Prasyarat

Sebelum mulai, siapin:

  1. OpenAI API Key — daftar di platform.openai.com. Kalau belum punya atau kesulitan pembayaran, bisa beli API key di abdijualan.online tanpa ribet kartu kredit. Pahami dulu beda API key vs akun login kalau masih bingung.

  2. WhatsApp Business API access — via Meta Cloud API (gratis) atau provider seperti Twilio, Wati, atau Fonnte. Untuk pemula, rekomendasi: Fonnte ( Indonesia, murah, mudah) atau Twilio (international, dokumentasi lengkap).

  3. Python 3.10+ — install di komputer atau VPS.

  4. Basic Python knowledge — kalau lo bisa baca code Python, cukup. Gak perlu jadi senior dev.

Step 1: Setup OpenAI API Key

Install OpenAI Python SDK:

pip install openai python-dotenv requests

Buat file .env untuk simpan API key:

OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx
WHATSAPP_TOKEN=token_dari_provider
WHATSAPP_PHONE_ID=phone_id_dari_meta

Penting: Jangan commit file .env ke Git. Tambahkan ke .gitignore.

Test API key:

from openai import OpenAI
import os
from dotenv import load_dotenv

load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "Kamu adalah customer service toko online yang ramah."},
        {"role": "user", "content": "Halo, apakah stoknya masih ada?"}
    ]
)

print(response.choices[0].message.content)

Kalau jalan dan ngasih jawaban, API key lo siap.

Step 2: Bikin System Prompt untuk Customer Service

System prompt adalah “otak” bot lo. Tentukan persona, aturan, dan knowledge bisnis lo.

SYSTEM_PROMPT = """
Kamu adalah customer service dari Toko Gadget Murah, toko online yang jual 
aksesoris HP dan gadget. 

INFO TOKO:
- Jam buka: 09:00 - 21:00 WIB
- Lokasi: Jakarta Selatan
- Ongkir Jakarta: Rp 8.000 (Regular), Rp 12.000 (Instant)
- Ongkir luar Jakarta: sesuai JNE calculator
- Payment: QRIS, BCA, Mandiri, GoPay, OVO, DANA
- Return policy: 7 hari jika barang cacat
- Garansi: 1 bulan untuk aksesoris, 1 tahun untuk gadget

ATURAN:
1. Jawab dengan ramah, singkat, dan jelas
2. Jika ditanya stok dan kamu tidak tahu pasti, katakan: 
   "Untuk cek stok real-time, mohon tunggu admin kami balas ya kak 😊"
3. Jika ditanya hal di luar info toko, arahkan ke admin
4. Selalu pakai bahasa Indonesia santai
5. Jangan janji yang tidak bisa dipenuhi
6. Jika customer marah/complain serius, arahkan ke admin human
"""

Sesuaikan info toko dengan bisnis lo. Semakin detail, semakin baik jawaban AI.

Step 3: Bikin Fungsi Auto-Reply

from openai import OpenAI
import os
from dotenv import load_dotenv

load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# Simpan riwayat percakapan per nomor customer
chat_history = {}

def generate_reply(phone_number: str, incoming_message: str) -> str:
    """Generate AI reply berdasarkan pesan masuk."""

    # Ambil atau init history chat
    if phone_number not in chat_history:
        chat_history[phone_number] = []

    # Tambah pesan customer ke history
    chat_history[phone_number].append({
        "role": "user",
        "content": incoming_message
    })

    # Batasi history ke 10 pesan terakhir (hemat token)
    recent_history = chat_history[phone_number][-10:]

    # Call OpenAI API
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": SYSTEM_PROMPT}
        ] + recent_history,
        max_tokens=200,
        temperature=0.7
    )

    reply = response.choices[0].message.content

    # Simpan reply AI ke history
    chat_history[phone_number].append({
        "role": "assistant",
        "content": reply
    })

    return reply

Kenapa pakai gpt-4o-mini? Murah dan cepat. Untuk customer service, mini cukup. Kalau butuh reasoning kompleks, upgrade ke gpt-4o. Baca cara setup AI coding workflow kalau mau optimize cost API lebih lanjut.

Step 4: Integrate dengan WhatsApp API

Contoh pakai Fonnte (provider WhatsApp API Indonesia):

import requests
import os
from dotenv import load_dotenv

load_dotenv()

FONNTE_TOKEN = os.getenv("FONNTE_TOKEN")

def send_whatsapp_message(phone: str, message: str):
    """Kirim pesan WhatsApp via Fonnte API."""

    url = "https://api.fonnte.com/send"
    headers = {
        "Authorization": FONNTE_TOKEN
    }
    payload = {
        "target": phone,
        "message": message,
        "countryCode": "62"
    }

    response = requests.post(url, headers=headers, data=payload)
    return response.json()

Step 5: Bikin Webhook untuk Terima Pesan

Lo butuh server untuk terima webhook dari WhatsApp provider. Pakai Flask:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/webhook", methods=["POST"])
def webhook():
    """Terima pesan masuk dari WhatsApp."""

    data = request.json

    # Extract info (format tergantung provider)
    phone_number = data.get("sender")
    message = data.get("message")

    if not phone_number or not message:
        return jsonify({"status": "error"}), 400

    # Generate AI reply
    reply = generate_reply(phone_number, message)

    # Kirim balasan
    send_whatsapp_message(phone_number, reply)

    return jsonify({"status": "success"}), 200

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

Step 6: Deploy ke Server

Jangan jalankan di laptop — mati = bot mati. Deploy ke VPS.

Option 1: VPS Indonesia (murah) - VPS Rumahweb, Idcloudhost, atau Domainesia - Mulai Rp 50.000/bulan - Setup Flask + Gunicorn + Nginx

Option 2: Railway / Render (easy) - Deploy langsung dari GitHub - Free tier ada, paid mulai $5/bulan - Auto SSL, gak perlu setup Nginx

Option 3: Ngrok (testing)

ngrok http 5000

Pakai URL Ngrok sebagai webhook URL di dashboard WhatsApp provider. Cocok untuk testing, bukan production.

Step 7: Tambahkan Fallback ke Human Admin

AI gak sempurna. Lo butuh fallback ke human admin untuk case yang AI gak bisa handle.

def should_escalate_to_human(message: str, ai_reply: str) -> bool:
    """Cek apakah perlu eskalasi ke admin human."""

    escalation_keywords = [
        "komplain", "marah", "rusak", "refund", "scam",
        "manager", "admin", "manusia", "bukan bot"
    ]

    message_lower = message.lower()
    return any(keyword in message_lower for keyword in escalation_keywords)

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.json
    phone_number = data.get("sender")
    message = data.get("message")

    reply = generate_reply(phone_number, message)

    if should_escalate_to_human(message, reply):
        # Kirim notifikasi ke admin
        send_whatsapp_message(
            "6281234567890",  # nomor admin
            f"🚨 Eskalasi dari {phone_number}:\n\nPesan: {message}\n\nAI Reply: {reply}"
        )
        # Tetap kirim AI reply ke customer, tapi kasih tau admin akan follow up
        reply += "\n\n_Admin kami akan segera follow up pertanyaan kakak ya 😊_"

    send_whatsapp_message(phone_number, reply)
    return jsonify({"status": "success"}), 200

Tips Optimasi

1. Pakai Model yang Tepat

  • gpt-4o-mini: untuk 90% query (hemat, cepat)
  • gpt-4o: untuk query kompleks yang butuh reasoning
  • Kalau mau hemat lebih, baca 5 cara cuan pakai AI 2026 untuk strategi cost optimization.

2. Cache Jawaban Umum

Pertanyaan seperti “jam buka”, “lokasi”, “payment apa aja” — simpan ke cache. Gak perlu call API setiap kali.

FAQ_CACHE = {
    "jam buka": "Jam buka kami 09:00 - 21:00 WIB kak 😊",
    "lokasi": "Kami di Jakarta Selatan kak. Bisa COD di area itu ya.",
    "payment": "Kami terima QRIS, BCA, Mandiri, GoPay, OVO, DANA kak."
}

def check_faq_cache(message: str) -> str | None:
    message_lower = message.lower()
    for keyword, answer in FAQ_CACHE.items():
        if keyword in message_lower:
            return answer
    return None

3. Monitor dan Logs

Log semua percakapan untuk audit dan improvement:

import logging
from datetime import datetime

logging.basicConfig(
    filename="whatsapp_bot.log",
    level=logging.INFO,
    format="%(asctime)s - %(message)s"
)

# Di fungsi webhook
logging.info(f"From: {phone_number} | Message: {message} | Reply: {reply}")

4. Rate Limiting

Limit maksimal 10 pesan per customer per jam. Cegah spam dan boros token.

Estimasi Biaya Per Bulan

Komponen Biaya
OpenAI API (gpt-4o-mini) $10-30
WhatsApp API (Fonnte) Rp 50.000-100.000
VPS Rp 50.000-100.000
Domain + SSL Rp 150.000/tahun
Total ~Rp 400.000-600.000/bulan

Bandingkan dengan hire admin 24 jam: Rp 4-6 juta/bulan. Auto-reply AI save lo 90% biaya.

Kesimpulan

Auto-reply WhatsApp pakai OpenAI API adalah game changer untuk bisnis online Indonesia. Dengan budget Rp 500.000/bulan, lo dapet customer service 24/7 yang ramah, konsisten, dan scalable.

Tutorial ini adalah fondasi. Lo bisa expand dengan: - Integrate ke database stok untuk cek real-time - Integrate ke RajaOngkir untuk kalkulasi ongkir otomatis - Pakai function calling untuk aksi seperti “buat order”, “cek tracking” - Multi-language support (Indonesia + English)

Mulai dari basic dulu, iterate dari sana. Yang penting: customer lo dapat respons cepat, lo hemat biaya admin, bisnis tumbuh. Win-win.

Selamat coding! 🚀