דלגו לתוכן
WbizTool

שליחת הודעות WhatsApp עם Python

שלחו טקסטים, תמונות וקבצים ב-WhatsApp מסקריפט Python, מהמספר שלכם שמקושר ל-WbizTool כמו WhatsApp Web. השתמשו בחבילה הרשמית wbiztool-client או בקריאת requests פשוטה לאותה נקודת קצה.

ניסיון חינם: 50 הודעות בכל 30 יום, בלי כרטיס אשראי.

איך זה עובד

  1. קבלו מפתח API וקשרו את המספר שלכם

    הירשמו, ואז קשרו את מספר ה-WhatsApp שלכם בדף מספרי WhatsApp עם קוד QR או קוד צימוד, כמו WhatsApp Web. בהגדרות ← מפתחות API, צרו מפתח והעתיקו את ה-Client ID שלכם (המדריך למפתחות API למטה מראה איפה). המזהה שעל הכרטיס של המספר (כמו מזהה 678) הוא ה-whatsapp_client שלכם.

  2. התקינו את הלקוח, או השתמשו ב-requests

    הריצו pip install wbiztool-client בשביל הלקוח הרשמי. אם אתם מעדיפים לא להוסיף חבילה, ספריית requests עובדת לא פחות טוב – הדוגמאות למטה מראות את שתי הדרכים.

  3. שלחו את ההודעה

    שלחו POST עם פרטי ההתחברות, מספר הטלפון והטקסט אל https://wbiztool.com/api/v1/send_msg/. תגובה עם "status": 1 ו-msg_id פירושה שההודעה נכנסה לתור במספר שלכם.

  4. בדקו שההודעה יצאה

    העבירו כתובת webhook כדי לדעת מתי ההודעה נשלחת או נכשלת, או שאלו את נקודת הקצה של סטטוס ההודעה עם ה-msg_id.

דוגמאות קוד: Python

התקנת הלקוח הרשמי
pip install wbiztool-client
שליחת טקסט עם הלקוח הרשמי
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
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}
שליחת PDF (העלאת קובץ)
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"))
קבלת ה-Webhook של הסטטוס (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

מה אפשר לעשות

  • טקסטים, תמונות וקבצים

    הגדירו msg_type ל-0 לטקסט, ל-1 לתמונה או ל-2 לקובץ. תנו img_url או file_url ציבוריים, או העלו את הקובץ עצמו עם files= ב-requests.

  • הודעות אישיות מהנתונים שלכם

    בנו את msg מהרשומות שלכם – שם, מספר הזמנה, תאריך פירעון. עיצוב של WhatsApp כמו *מודגש* ו-_נטוי_ עובד, עד 3,000 תווים.

  • סטטוס ב-Webhook או בשאילתה

    Webhook מקבל POST עם ה-msg_id ועם SENT, FAILED, CANCELLED או EXPIRED. או קראו לנקודת הקצה של סטטוס ההודעה: הודעה שנכשלה מגיעה עם השגיאה שלה, כמו Phone number invalid.

  • תזמון למועד מאוחר יותר

    שלחו POST אל /api/v1/schedule_msg/ עם date (dd/mm/yyyy), time (HH:MM) ו-timezone כמו Asia/Kolkata. הפונקציות strftime("%d/%m/%Y") ו-strftime("%H:%M") בונות אותם בשבילכם.

  • ויתור על הודעות שמגיעות מאוחר מדי

    expire_after_seconds מסמן הודעה כפג תוקף אם היא לא יצאה בזמן, מה שמתאים להודעות רגישות לזמן כמו זמן הגעה משוער של משלוח.

  • תזכורות חוזרות

    ה-API לתזכורות חוזר על הודעה לפי לוח זמנים של cron, למשל ב-10:00 ב-1 בכל חודש. תזכורות דורשות תוכנית בתשלום.

טוב לדעת

  • "status": 1 פירושו שההודעה נכנסה לתור, לא שהיא הגיעה. „נשלחה” הוא מצב ההצלחה הסופי; ה-API לא מדווח אם ההודעה הגיעה או נקראה.
  • שגיאות של שליחת הודעה חוזרות עם HTTP 400 (429 במגבלה היומית); שגיאות של תזמון הודעה חוזרות בדרך כלל עם HTTP 200 ו-"status": 0, אז קראו את response.json() ובדקו את status במקום את קוד ה-HTTP. הלקוח הרשמי זורק requests.HTTPError: קראו את הסיבה עם e.response.json()["message"].
  • הלקוח הרשמי עדיין לא מכסה נכון כל נקודת קצה: הפונקציות schedule_message ו-check_credentials() שלו לא עובדות עם ה-API הנוכחי. קראו ל-/api/v1/schedule_msg/ עם requests כמו שמוצג למעלה, ול-/api/v1/me/ באותה דרך.
  • שמרו את מפתח ה-API בשרת שלכם, למשל במשתנה סביבה. כל מי שמחזיק בו יכול לשלוח מהמספרים שלכם, אז לעולם אל תשימו אותו ב-JavaScript של הדפדפן, באפליקציה לנייד או בקוד שאתם מפרסמים.
  • בתקופת הניסיון החינמית יש 50 הודעות בכל 30 יום ומספר אחד, בלי כרטיס אשראי. תוכניות בתשלום מתחילות ב-25$ לחודש בארה״ב (המחיר שלכם מופיע בדף המחירים) ושולחות הודעות ללא הגבלה במסגרת שימוש הוגן: עד 1,000 ביום לכל מספר.
  • ההודעות יוצאות ממספר ה-WhatsApp שלכם, ולכן הכללים של WhatsApp עצמה חלים: שלחו הודעות לאנשים שמצפים לשמוע מכם.

שאלות

יש ספריית Python רשמית ל-API של WbizTool?
כן: wbiztool-client ב-PyPI (pip install wbiztool-client). השתמשו ב-send_message וב-get_message_status שלה. לתזמון ולבדיקת פרטי התחברות, קראו לנקודות הקצה עם requests.
איך שולחים PDF או תמונה מ-Python?
השתמשו ב-msg_type 1 עם img_url לתמונה, או ב-msg_type 2 עם file_url לקובץ. כדי לשלוח קובץ מהדיסק, שלחו אותו כ-multipart form data בשדה בשם file, והגדירו file_name עם הסיומת שלו, כמו invoice-4821.pdf.
איך יודעים שההודעה נשלחה?
תגובה עם "status": 1 ו-msg_id פירושה שההודעה נכנסה לתור. העבירו כתובת webhook כדי לקבל POST עם SENT, FAILED, CANCELLED או EXPIRED, או קראו לנקודת הקצה של סטטוס ההודעה עם ה-msg_id. „נשלחה” הוא המצב הסופי: ה-API לא מדווח אם ההודעה הגיעה או נקראה.
באיזה פורמט לשלוח את מספר הטלפון?
שלחו את המספר עם קידומת המדינה (919876543210), או בלעדיה (9876543210) יחד עם country_code (91). רווחים, +, מקפים וסוגריים מוסרים בשבילכם, כך שגם ‎+91 98765-43210 עובד.
צריך את WhatsApp Business API או אישור של Meta?
לא. WbizTool שולחת ממספר ה-WhatsApp או ה-WhatsApp Business שלכם, שמקושר כמו WhatsApp Web. אין אישור של Meta ואין תבניות הודעה שצריך לאשר.
יש תשלום לכל הודעה?
לא. תקופת הניסיון החינמית כוללת 50 הודעות בכל 30 יום. תוכניות בתשלום שולחות הודעות ללא הגבלה במסגרת שימוש הוגן, עד 1,000 ביום לכל מספר: Lite ב-25$, Standard ב-59$ ו-Advanced ב-149$ לחודש בארה״ב; בדף המחירים מופיע המחיר במדינה שלכם.

קראו את המדריכים

עוד בנושא

שלחו היום את הודעת ה-WhatsApp האוטומטית הראשונה שלכם

צרו חשבון, סרקו את קוד ה-QR ושלחו הודעה בפחות מחמש דקות.

התחילו בחינם

תוכניות בתשלום מתחילות ב-25$ לחודש בארה״ב. מחירים