שליחת הודעות WhatsApp עם Python
שלחו טקסטים, תמונות וקבצים ב-WhatsApp מסקריפט Python, מהמספר שלכם שמקושר ל-WbizTool כמו WhatsApp Web. השתמשו בחבילה הרשמית wbiztool-client או בקריאת requests פשוטה לאותה נקודת קצה.
ניסיון חינם: 50 הודעות בכל 30 יום, בלי כרטיס אשראי.
איך זה עובד
קבלו מפתח API וקשרו את המספר שלכם
הירשמו, ואז קשרו את מספר ה-WhatsApp שלכם בדף מספרי WhatsApp עם קוד QR או קוד צימוד, כמו WhatsApp Web. בהגדרות ← מפתחות API, צרו מפתח והעתיקו את ה-Client ID שלכם (המדריך למפתחות API למטה מראה איפה). המזהה שעל הכרטיס של המספר (כמו מזהה 678) הוא ה-
whatsapp_clientשלכם.התקינו את הלקוח, או השתמשו ב-requests
הריצו
pip install wbiztool-clientבשביל הלקוח הרשמי. אם אתם מעדיפים לא להוסיף חבילה, ספריית requests עובדת לא פחות טוב – הדוגמאות למטה מראות את שתי הדרכים.שלחו את ההודעה
שלחו POST עם פרטי ההתחברות, מספר הטלפון והטקסט אל
https://wbiztool.com/api/v1/send_msg/. תגובה עם"status": 1ו-msg_idפירושה שההודעה נכנסה לתור במספר שלכם.בדקו שההודעה יצאה
העבירו כתובת
webhookכדי לדעת מתי ההודעה נשלחת או נכשלת, או שאלו את נקודת הקצה של סטטוס ההודעה עם ה-msg_id.
דוגמאות קוד: 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 "", 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_type1 עםimg_urlלתמונה, או ב-msg_type2 עם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$ לחודש בארה״ב; בדף המחירים מופיע המחיר במדינה שלכם.
קראו את המדריכים
- API לשליחת הודעה
- API לסטטוס הודעה
- API לתזמון הודעה
- API לבדיקת פרטי התחברות
- מפתחות API ו-Client ID
- חיבור מספר ה-WhatsApp שלכם
עוד בנושא
- Node.jsשליחת הודעות WhatsApp מ-Node.js עם הלקוח הרשמי או עם fetch המובנה.
- cURLשליחה, תזמון ומעקב של הודעות WhatsApp עם פקודת cURL אחת.
- API לתזכורותיצירה, הצגה וביטול של תזכורות WhatsApp חוזרות לפי לוח זמנים של cron.
- עדכוני הזמנותאישורי הזמנה, עדכוני משלוח והתראות על הזמנות חדשות ל-Shopify, ל-WooCommerce ועוד.
שלחו היום את הודעת ה-WhatsApp האוטומטית הראשונה שלכם
צרו חשבון, סרקו את קוד ה-QR ושלחו הודעה בפחות מחמש דקות.
התחילו בחינםתוכניות בתשלום מתחילות ב-25$ לחודש בארה״ב. מחירים
