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:
-
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.
-
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).
-
Python 3.10+ — install di komputer atau VPS.
-
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! 🚀