İçeriğe geç
WbizTool

Python ile WhatsApp mesajı gönderin

WhatsApp Web gibi WbizTool’a bağlanan kendi numaranızdan, bir Python betiğiyle WhatsApp metinleri, görselleri ve dosyaları gönderin. Resmi wbiztool-client paketini ya da aynı endpoint’e düz bir requests çağrısını kullanın.

Ücretsiz deneme: herhangi bir 30 günde 50 mesaj, kart gerekmez.

Nasıl çalışır

  1. API anahtarınızı alın ve numaranızı bağlayın

    Kaydolun, ardından WhatsApp numaranızı WhatsApp numaraları sayfasında, WhatsApp Web’deki gibi bir QR kod veya eşleştirme koduyla bağlayın. Ayarlar → API anahtarları sayfasında bir anahtar oluşturun ve Client ID’nizi kopyalayın (aşağıdaki API anahtarları kılavuzu nerede olduğunu gösterir). Numaranın kartındaki ID (örneğin ID 678) sizin whatsapp_client değerinizdir.

  2. İstemciyi kurun ya da requests kullanın

    Resmi istemci için pip install wbiztool-client çalıştırın. Paket eklemek istemiyorsanız requests kütüphanesi de aynı işi görür – aşağıdaki örnekler ikisini de gösterir.

  3. Mesajı gönderin

    Kimlik bilgilerinizi, telefon numarasını ve metni https://wbiztool.com/api/v1/send_msg/ adresine POST edin. "status": 1 ve bir msg_id içeren yanıt, mesajın numaranızda sıraya alındığı anlamına gelir.

  4. Gittiğini kontrol edin

    Mesaj gönderildiğinde veya başarısız olduğunda haber almak için bir webhook URL’si verin ya da msg_id ile Mesaj durumu endpoint’ine sorun.

Python kod örnekleri

Resmi istemciyi kurun
pip install wbiztool-client
Resmi istemciyle metin gönderin
from 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)
requests ile metin gönderin
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"))
Yanıt
{"status": 1, "message": "Created", "msg_id": 9817263}
PDF gönderin (dosya yükleme)
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())
Mesaj durumunu kontrol edin
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"])
Bir mesajı sonraya zamanlayın
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"))
Durum webhook’unu alın (Flask)
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 "", 200

Neler yapabilirsiniz

  • Metinler, görseller ve dosyalar

    msg_type değerini metin için 0, görsel için 1, dosya için 2 yapın. Herkese açık bir img_url veya file_url verin ya da dosyanın kendisini requests’te files= ile yükleyin.

  • Verilerinizden kişisel mesajlar

    msg metnini kendi kayıtlarınızdan oluşturun – bir ad, bir sipariş numarası, bir son ödeme tarihi. *Kalın* ve _italik_ gibi WhatsApp biçimlendirmeleri 3.000 karaktere kadar çalışır.

  • Webhook ile veya sorarak durum

    Bir webhook, msg_id ve SENT, FAILED, CANCELLED veya EXPIRED içeren bir POST alır. Ya da Mesaj durumu’nu çağırın: başarısız bir mesaj, Phone number invalid gibi hatasıyla birlikte gelir.

  • Sonraya zamanlayın

    date (dd/mm/yyyy), time (HH:MM) ve Asia/Kolkata gibi bir timezone ile /api/v1/schedule_msg/ adresine POST gönderin. strftime("%d/%m/%Y") ve strftime("%H:%M") bunları sizin için oluşturur.

  • Geç kalan mesajları bırakın

    expire_after_seconds, zamanında gitmeyen bir mesajı süresi dolmuş olarak işaretler; teslimat saati tahmini gibi zamana duyarlı mesajlar için uygundur.

  • Tekrarlayan hatırlatmalar

    Hatırlatıcılar API’si bir mesajı cron zamanlamasıyla tekrarlar, örneğin her ayın 1’inde saat 10:00’da. Hatırlatıcılar ücretli plan gerektirir.

Bilmeniz gerekenler

  • "status": 1 mesajın teslim edildiği değil, sıraya alındığı anlamına gelir. Sent son başarı durumudur; API mesajın teslim edilip edilmediğini veya okunup okunmadığını bildirmez.
  • Mesaj gönderme hataları HTTP 400 ile döner (günlük sınırda 429); Mesaj zamanlama hataları ise genellikle HTTP 200 ve "status": 0 ile döner; bu yüzden HTTP koduna değil, response.json() ile okuduğunuz gövdedeki status değerine bakın. Resmi istemci requests.HTTPError fırlatır: nedeni e.response.json()["message"] ile okuyun.
  • Resmi istemci henüz her endpoint’i doğru desteklemiyor: schedule_message ve check_credentials() güncel API ile çalışmıyor. /api/v1/schedule_msg/ endpoint’ini yukarıdaki gibi requests ile, /api/v1/me/ endpoint’ini de aynı şekilde çağırın.
  • API anahtarını sunucunuzda, örneğin bir ortam değişkeninde tutun. Anahtara sahip olan herkes numaralarınızdan mesaj gönderebilir; bu yüzden onu asla tarayıcıdaki JavaScript’e, bir mobil uygulamaya veya yayımladığınız koda koymayın.
  • Ücretsiz deneme herhangi bir 30 günde 50 mesaj ve 1 numara içerir, kart gerekmez. Ücretli planlar ABD’de aylık $25’dan başlar (sizin fiyatınız Fiyatlar sayfasındadır) ve adil kullanım kapsamında sınırsız mesaj gönderir: numara başına günde en fazla 1.000.
  • Mesajlar kendi WhatsApp numaranızdan gider, bu yüzden WhatsApp’ın kuralları geçerlidir: sizden haber bekleyen kişilere yazın.

Sık sorulan sorular

WbizTool API’si için resmi bir Python kütüphanesi var mı?
Evet: PyPI’de wbiztool-client (pip install wbiztool-client). send_message ve get_message_status yöntemlerini kullanın. Zamanlama ve kimlik bilgisi kontrolü için endpoint’leri requests ile çağırın.
Python’dan PDF veya görsel nasıl gönderirim?
Görsel için img_url ile msg_type 1, dosya için file_url ile msg_type 2 kullanın. Diskteki bir dosyayı göndermek için onu file adlı bir alanda multipart form verisi olarak gönderin ve file_name değerini uzantısıyla, örneğin invoice-4821.pdf olarak ayarlayın.
Mesajın gönderildiğini nasıl anlarım?
"status": 1 ve bir msg_id içeren yanıt, mesajın sıraya alındığı anlamına gelir. SENT, FAILED, CANCELLED veya EXPIRED içeren bir POST almak için bir webhook URL’si verin ya da msg_id ile Mesaj durumu endpoint’ini çağırın. Sent son durumdur: API teslim edildi veya okundu bilgisi vermez.
Telefon numarasını hangi biçimde göndermeliyim?
Numarayı ülke koduyla (919876543210) ya da ülke kodu olmadan (9876543210) country_code (91) ile birlikte gönderin. Boşluklar, +, tireler ve parantezler sizin için kaldırılır; yani +91 98765-43210 da çalışır.
WhatsApp Business API’ye veya Meta onayına ihtiyacım var mı?
Hayır. WbizTool, WhatsApp Web gibi bağlanan kendi WhatsApp veya WhatsApp Business numaranızdan gönderir. Meta onayı yoktur ve onaylatılması gereken mesaj şablonu yoktur.
Mesaj başına mı ücret alınıyor?
Hayır. Ücretsiz deneme herhangi bir 30 günde 50 mesaj içerir. Ücretli planlar adil kullanım kapsamında, numara başına günde en fazla 1.000 olmak üzere sınırsız mesaj gönderir: ABD’de aylık Lite $25, Standard $59 ve Advanced $149; Fiyatlar sayfası ülkenizin fiyatını gösterir.

Kılavuzları okuyun

İlgili sayfalar

İlk otomatik WhatsApp mesajınızı bugün gönderin

Bir hesap oluşturun, QR kodu okutun ve beş dakikadan kısa sürede mesaj gönderin.

Ücretsiz başlayın

Ücretli planlar ABD’de aylık $25’dan başlar. Fiyatlar