Sembang AIModelHargaDokumentasiPanduan

Bina bot WhatsApp yang dijawab AI: panduan langkah demi langkah

Sediakan nombor di WhatsApp Cloud API dari Meta, tetapkan webhook ke pelayan Python kecil anda, dan dalam pelayan itu hantar setiap mesej pelanggan ke https://api.macloudai.com/v1 dengan OpenAI SDK. Jawapan AI dihantar semula ke WhatsApp. Kos AI dikira ikut token setiap sembang; kos di pihak Meta ikut polisi Meta.

Dikemas kini 2026-11-01 · MaCloud AI

Bagaimana bot ini berfungsi?

Ambil contoh kedai kek kecil di Bangsar, Kuala Lumpur. Setiap hari pelanggan bertanya soalan yang sama di WhatsApp: ada kek coklat tak, boleh hantar ke Petaling Jaya tak, perlu tempah berapa hari awal. Bot AI boleh menjawab soalan begini 24 jam, dan pemilik kedai hanya masuk bila ada tempahan sebenar.

Alirannya ringkas: pelanggan menghantar mesej → Meta menghantar mesej itu ke webhook (pelayan anda) → pelayan menghantar teks ke model AI melalui MaCloud AI → jawapan dihantar semula ke pelanggan melalui WhatsApp Cloud API.

Langkah-langkah membina bot

  1. Di Meta for Developers, cipta app dan tambah produk WhatsApp. Di sana anda akan mendapat access token, Phone number ID dan nombor ujian. Butiran tepat setiap skrin, ikut dokumentasi rasmi Meta.
  2. Di MaCloud AI, daftar, tambah nilai di Tambah nilai dan cipta kunci khas bernama bot-whatsapp di API Key.
  3. Sediakan pelayan Python dengan kod di bawah, pada pelayan yang boleh dicapai dari internet melalui HTTPS.
  4. Isi pemboleh ubah persekitaran: kunci MaCloud AI, access token WhatsApp, Phone number ID, verify token pilihan anda sendiri dan versi Graph API.
  5. Di tetapan WhatsApp dalam app Meta, isi alamat webhook (contohnya https://bot.kedai-anda.my/webhook) dan verify token yang sama, kemudian langgan medan messages.
  6. Hantar mesej dari telefon anda ke nombor bot dan semak jawapannya. Semak kosnya di Penggunaan.

Verify token ialah perkataan rahsia yang anda cipta sendiri (contohnya kekbangsar2026), bukan token dari Meta dan bukan kunci API MaCloud AI. Ia mesti sama di app Meta dan dalam pemboleh ubah WA_VERIFY_TOKEN, kalau tidak pengesahan webhook akan gagal.

Kod pelayan Python lengkap

Pasang pakej dengan pip install flask openai requests, simpan kod ini sebagai bot.py:

import os
import requests
from flask import Flask, request
from openai import OpenAI

app = Flask(__name__)
ai = OpenAI(base_url="https://api.macloudai.com/v1", api_key=os.environ["MACLOUD_KEY"])

VERIFY_TOKEN = os.environ["WA_VERIFY_TOKEN"]
WA_TOKEN = os.environ["WA_TOKEN"]
PHONE_ID = os.environ["WA_PHONE_ID"]
GRAPH_VERSION = os.environ["WA_GRAPH_VERSION"]  # contoh: v21.0, semak versi semasa di dokumentasi Meta

ARAHAN = (
    "Anda pembantu WhatsApp untuk Kedai Kek Seri Bangsar, Kuala Lumpur. "
    "Jawab dalam bahasa pelanggan (Melayu, Inggeris atau Cina), ringkas dan mesra. "
    "Menu: kek coklat moist, kek red velvet, kek pandan gula melaka, cupcake. "
    "Waktu buka: Selasa hingga Ahad, 10 pagi hingga 8 malam. "
    "Tempahan kek hari jadi perlu dibuat sekurang-kurangnya 2 hari awal. "
    "Penghantaran sekitar Kuala Lumpur dan Petaling Jaya. "
    "Jangan sahkan harga, bayaran atau tempahan sendiri; untuk itu katakan staf akan membalas."
)

sejarah = {}  # nombor -> mesej terkini (dalam memori sahaja)


@app.get("/webhook")
def sahkan():
    if request.args.get("hub.mode") == "subscribe" and request.args.get("hub.verify_token") == VERIFY_TOKEN:
        return request.args.get("hub.challenge", "")
    return "forbidden", 403


@app.post("/webhook")
def terima():
    data = request.get_json(silent=True) or {}
    for entry in data.get("entry", []):
        for change in entry.get("changes", []):
            for msg in change.get("value", {}).get("messages", []):
                if msg.get("type") == "text":
                    balas(msg["from"], msg["text"]["body"])
    return "ok", 200


def balas(nombor, teks):
    h = sejarah.setdefault(nombor, [])
    h.append({"role": "user", "content": teks})
    del h[:-10]  # simpan 10 mesej terakhir sahaja supaya token tidak membengkak
    try:
        r = ai.chat.completions.create(
            model="gem-3.8-flash",
            messages=[{"role": "system", "content": ARAHAN}] + h,
            max_tokens=400,
        )
        jawapan = r.choices[0].message.content
    except Exception:
        jawapan = "Maaf, sistem kami sibuk sebentar. Staf kami akan membalas secepat mungkin."
    h.append({"role": "assistant", "content": jawapan})
    requests.post(
        f"https://graph.facebook.com/{GRAPH_VERSION}/{PHONE_ID}/messages",
        headers={"Authorization": "Bearer " + WA_TOKEN},
        json={"messaging_product": "whatsapp", "to": nombor, "type": "text", "text": {"body": jawapan}},
        timeout=15,
    )


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

Kod ini sengaja dibuat ringkas: sejarah perbualan disimpan dalam memori dan hilang bila pelayan dimulakan semula. Untuk kedai sebenar, simpan sejarah dalam pangkalan data kecil seperti SQLite, dan jalankan balas() di latar belakang supaya webhook terus memulangkan 200 kepada Meta.

Jalankan pelayan

export MACLOUD_KEY=sk-...
export WA_TOKEN=token-dari-meta
export WA_PHONE_ID=phone-number-id-anda
export WA_VERIFY_TOKEN=kekbangsar2026
export WA_GRAPH_VERSION=v21.0
python bot.py

Meta memerlukan alamat HTTPS. Anda boleh letak pelayan di VPS kecil dengan sijil HTTPS, atau semasa ujian, guna alat terowong yang memberi alamat HTTPS sementara ke port 8000 di komputer anda.

Berapa kos AI setiap sembang?

Satu soalan pelanggan biasanya pendek, tetapi setiap panggilan turut menghantar arahan sistem dan sejarah sembang. Sebagai anggaran kasar, satu balasan mungkin guna kira-kira seribu hingga dua ribu token input dan beberapa ratus token output. Kosnya ialah token input × harga input + token output × harga output, ikut harga semasa:

Harga sebenar sekarang

Anggaran daripada harga di halaman model: 2,000 token input dan 500 token output bagi setiap chat. Caj sebenar dipaparkan dalam konsol.

ModelSetiap chat1,000 chat
GEM 3.8 FlashRM 0.001RM 0.99
TT-6 LunaRM 0.0024RM 2.38
TT-6.1 TerraRM 0.0016RM 1.63
HK-5.5RM 0.0008RM 0.78
GEM 4 ArgonRM 0.02RM 18.94
TT-6.1 SolRM 0.0033RM 3.25

Cara paling tepat: biarkan bot berjalan sehari, kemudian buka Penggunaan dan bahagikan jumlah kos dengan bilangan balasan. Untuk soalan kedai yang mudah, model yang lebih murah biasanya sudah memadai; baca cara memilih model.

Kos di pihak Meta (contohnya caj perbualan atau mesej templat) adalah berasingan dan ikut polisi serta harga Meta. Ia tidak ditolak daripada baki MaCloud AI. Semak syarat terkini di dokumentasi WhatsApp Business rasmi.

Tip supaya bot berguna dan selamat

  • Tulis maklumat kedai yang betul dalam arahan sistem: menu, waktu buka, kawasan penghantaran. AI hanya tahu apa yang anda beritahu.
  • Larang bot mengesahkan harga, bayaran atau tempahan sendiri. Biar staf yang mengesahkan.
  • Hadkan max_tokens dan bilangan mesej sejarah supaya kos setiap sembang kekal kecil.
  • Simpan kunci dalam pemboleh ubah persekitaran, bukan dalam kod. Kalau kunci bocor, padam di konsol dan cipta yang baharu.
  • Ikut polisi WhatsApp Business Meta, termasuk peraturan bila anda boleh menghantar mesej kepada pelanggan.

Boleh guna untuk Telegram atau laman web?

Boleh. Bahagian AI (fungsi balas) tetap sama; yang berubah hanya cara menerima dan menghantar mesej. Contoh tetapan SDK lain ada di dokumentasi, dan kalau anda baru bermula, baca dahulu satu kunci untuk semua model.

Soalan lazim

Q1Adakah saya perlu WhatsApp Business API yang berbayar?
Bot ini guna WhatsApp Cloud API dari Meta. Syarat, had dan caj di pihak Meta ikut polisi Meta; semak dokumentasi rasmi mereka. Kos AI pula ditolak daripada baki MaCloud AI ikut token.
Q2Bolehkah bot menjawab dalam Bahasa Melayu, Inggeris dan Cina?
Boleh. Model besar seperti Claude, GPT dan Gemini boleh menjawab dalam pelbagai bahasa. Tulis dalam arahan sistem supaya bot menjawab dalam bahasa pelanggan.
Q3Model mana yang sesuai untuk bot kedai?
Untuk soalan biasa seperti menu dan waktu buka, model yang lebih murah biasanya memadai. Cuba dua atau tiga model dengan soalan sebenar pelanggan dan bandingkan kos di menu Penggunaan.
Q4Adakah isi sembang pelanggan disimpan oleh MaCloud AI?
Tidak. Kami hanya merekodkan bilangan token, nama model dan masa untuk pengebilan. Sejarah sembang hanya ada di pelayan anda sendiri.
Q5Apa jadi kalau baki habis?
Panggilan AI akan ditolak dan kod di atas menghantar mesej maaf kepada pelanggan. Tambah nilai semula dan bot terus berfungsi.

Panduan lain