Kirim pesan WhatsApp dengan Python
Kirim teks, gambar, dan file WhatsApp dari skrip Python, dari nomor Anda sendiri yang ditautkan ke WbizTool seperti WhatsApp Web. Gunakan paket resmi wbiztool-client atau panggilan requests biasa ke endpoint yang sama.
Uji coba gratis: 50 pesan dalam 30 hari mana pun, tanpa kartu.
Cara kerjanya
Dapatkan kunci API dan tautkan nomor Anda
Daftar, lalu tautkan nomor WhatsApp Anda di halaman Nomor WhatsApp dengan kode QR atau kode penautan, seperti WhatsApp Web. Di Pengaturan → Kunci API, buat kunci dan salin Client ID Anda (panduan Kunci API di bawah menunjukkan letaknya). ID di kartu nomor (seperti ID 678) adalah
whatsapp_clientAnda.Instal client, atau gunakan requests
Jalankan
pip install wbiztool-clientuntuk client resmi. Jika tidak ingin menambah paket, library requests juga bisa – contoh di bawah menunjukkan keduanya.Kirim pesannya
POST kredensial Anda, nomor telepon, dan teksnya ke
https://wbiztool.com/api/v1/send_msg/. Balasan dengan"status": 1danmsg_idberarti pesan sudah masuk antrean di nomor Anda.Pastikan pesan terkirim
Sertakan URL
webhookuntuk diberi tahu saat pesan terkirim atau gagal, atau tanyakan ke endpoint Status pesan denganmsg_id.
Contoh kode Python
pip install wbiztool-clientfrom wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id="12345")
result = client.send_message(
phone="9876543210",
country_code="91",
msg="Hi Aman, your order #4821 has shipped.",
whatsapp_client=678,
)
print(result)import requests
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": "9876543210",
"msg": "Hi Aman, your order #4821 has shipped and will arrive on Thursday.",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
print("Queued with msg_id", result["msg_id"])
else:
print("Failed:", result.get("message")){"status": 1, "message": "Created", "msg_id": 9817263}import requests
with open("invoice-4821.pdf", "rb") as f:
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/",
data={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 2,
"country_code": "91",
"phone": "9876543210",
"msg": "Your invoice for order #4821 is attached.",
"file_name": "invoice-4821.pdf",
},
files={"file": f},
timeout=120,
)
print(response.json())import requests
msg_id = 9817263
response = requests.post(
f"https://wbiztool.com/api/v1/message/status/{msg_id}/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("message") == "Unknown message id":
print("No message with this ID in your workspace")
elif "status_text" not in result:
print("Request failed:", result.get("message", "no message in response"))
elif result["status"] == 1:
print("Sent")
elif result["status"] == 2:
print("Failed:", result["error"])
else:
print("Status:", result["status_text"])from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
import requests
send_at = datetime.now(ZoneInfo("Asia/Kolkata")) + timedelta(hours=2)
response = requests.post(
"https://wbiztool.com/api/v1/schedule_msg/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": "9876543210",
"msg": "Hi Aman, a reminder that your appointment starts in 30 minutes.",
"date": send_at.strftime("%d/%m/%Y"),
"time": send_at.strftime("%H:%M"),
"timezone": "Asia/Kolkata",
},
timeout=60,
)
result = response.json() # schedule errors come back with HTTP 200 and "status": 0
if result.get("status") == 1:
print("Scheduled with msg_id", result["msg_id"])
else:
print("Failed:", result.get("message", "no message in response"))from flask import Flask, request
app = Flask(__name__)
@app.post("/wbiztool-webhook")
def wbiztool_webhook():
# WbizTool posts form fields, not JSON.
msg_id = request.form["msg_id"]
status = request.form["status"] # SENT, FAILED, CANCELLED or EXPIRED
print(msg_id, status)
return "", 200Yang bisa Anda lakukan
Teks, gambar, dan file
Atur
msg_typeke 0 untuk teks, 1 untuk gambar, atau 2 untuk file. Beriimg_urlataufile_urlpublik, atau unggah filenya langsung denganfiles=di requests.Pesan personal dari data Anda
Susun
msgdari data Anda sendiri – nama, nomor pesanan, tanggal jatuh tempo. Format WhatsApp seperti *tebal* dan _miring_ bisa dipakai, hingga 3.000 karakter.Status lewat webhook atau dengan bertanya
Webhook menerima POST dengan
msg_iddanSENT,FAILED,CANCELLED, atauEXPIRED. Atau panggil Status pesan: pesan yang gagal disertai error-nya, sepertiPhone number invalid.Jadwalkan untuk nanti
POST ke
/api/v1/schedule_msg/dengandate(dd/mm/yyyy),time(HH:MM), dantimezonesepertiAsia/Kolkata.strftime("%d/%m/%Y")danstrftime("%H:%M")menyusunnya untuk Anda.Buang pesan yang terlambat
expire_after_secondsmenandai pesan sebagai kedaluwarsa jika belum terkirim tepat waktu, cocok untuk pesan yang sensitif waktu seperti perkiraan waktu pengiriman.Pengingat berulang
API Pengingat mengulang pesan sesuai jadwal cron, seperti pukul 10.00 setiap tanggal 1. Pengingat memerlukan paket berbayar.
Perlu diketahui
"status": 1berarti pesan masuk antrean, bukan sudah diterima. Terkirim (Sent) adalah status sukses terakhir; API tidak melaporkan apakah pesan sudah diterima atau dibaca.- Error Kirim pesan kembali dengan HTTP 400 (429 saat batas harian); error Jadwalkan pesan biasanya kembali dengan HTTP 200 dan
"status": 0, jadi bacaresponse.json()dan periksastatus, bukan kode HTTP. Client resmi memunculkanrequests.HTTPError: baca alasannya dengane.response.json()["message"]. - Client resmi belum menangani semua endpoint dengan benar:
schedule_messagedancheck_credentials()di dalamnya tidak berfungsi dengan API saat ini. Panggil/api/v1/schedule_msg/dengan requests seperti contoh di atas, dan/api/v1/me/dengan cara yang sama. - Simpan kunci API di server Anda, misalnya di environment variable. Siapa pun yang memilikinya bisa mengirim dari nomor-nomor Anda, jadi jangan pernah menaruhnya di JavaScript browser, aplikasi mobile, atau kode yang Anda publikasikan.
- Uji coba gratis berisi 50 pesan dalam 30 hari mana pun dan 1 nomor, tanpa kartu. Paket berbayar mulai $25 per bulan di AS (harga Anda ada di halaman Harga) dan mengirim pesan tanpa batas sesuai penggunaan wajar: hingga 1.000 per hari per nomor.
- Pesan dikirim dari nomor WhatsApp Anda sendiri, jadi aturan WhatsApp sendiri berlaku: kirim pesan ke orang yang menunggu kabar dari Anda.
Pertanyaan
- Apakah ada library Python resmi untuk API WbizTool?
- Ada:
wbiztool-clientdi PyPI (pip install wbiztool-client). Gunakansend_messagedanget_message_statusmiliknya. Untuk penjadwalan dan cek kredensial, panggil endpoint-nya dengan requests. - Bagaimana cara mengirim PDF atau gambar dari Python?
- Gunakan
msg_type1 denganimg_urluntuk gambar, ataumsg_type2 denganfile_urluntuk file. Untuk mengirim file dari disk, kirim sebagai multipart form data di field bernamafile, dan aturfile_namedengan ekstensinya, sepertiinvoice-4821.pdf. - Bagaimana saya tahu pesan sudah terkirim?
- Balasan dengan
"status": 1danmsg_idberarti pesan sudah masuk antrean. Sertakan URLwebhookuntuk menerima POST denganSENT,FAILED,CANCELLED, atauEXPIRED, atau panggil endpoint Status pesan denganmsg_id. Terkirim (Sent) adalah status akhir: API tidak melaporkan pesan diterima atau dibaca. - Format nomor telepon apa yang harus saya kirim?
- Kirim nomor dengan kode negaranya (6281234567890), atau tanpa kode negara (81234567890) bersama
country_code(62). Spasi, +, tanda hubung, dan tanda kurung dihapus otomatis, jadi +62 812-3456-7890 juga bisa. - Apakah saya perlu WhatsApp Business API atau persetujuan Meta?
- Tidak. WbizTool mengirim dari nomor WhatsApp atau WhatsApp Business Anda sendiri, yang ditautkan seperti WhatsApp Web. Tidak perlu persetujuan Meta dan tidak ada template pesan yang harus disetujui.
- Apakah ada biaya per pesan?
- Tidak. Uji coba gratis mencakup 50 pesan dalam 30 hari mana pun. Paket berbayar mengirim pesan tanpa batas sesuai penggunaan wajar, hingga 1.000 per hari per nomor: Lite $25, Standard $59, dan Advanced $149 per bulan di AS; halaman Harga menampilkan harga untuk negara Anda.
Baca panduannya
- API Kirim pesan
- API Status pesan
- API Jadwalkan pesan
- API Cek kredensial
- Kunci API dan Client ID
- Hubungkan nomor WhatsApp Anda
Terkait
- Node.jsKirim pesan WhatsApp dari Node.js dengan client resmi atau fetch bawaan.
- cURLKirim, jadwalkan, dan lacak pesan WhatsApp dengan satu perintah cURL.
- API PengingatBuat, tampilkan, dan batalkan pengingat WhatsApp berulang dengan jadwal cron.
- Update pesananKonfirmasi pesanan, update pengiriman, dan notifikasi pesanan baru untuk Shopify, WooCommerce, dan lainnya.
Kirim pesan WhatsApp otomatis pertama Anda hari ini
Buat akun, scan kode QR, dan kirim pesan dalam waktu kurang dari lima menit.
Mulai gratisPaket berbayar mulai $25 per bulan di AS. Harga
