أرسل رسائل WhatsApp باستخدام Python
أرسل نصوص WhatsApp وصورًا وملفات من سكربت Python، من رقمك الخاص المربوط بـ WbizTool مثل WhatsApp Web. استخدم الحزمة الرسمية wbiztool-client أو استدعاءً بسيطًا بمكتبة requests إلى نقطة النهاية نفسها.
فترة تجريبية مجانية: 50 رسالة خلال أي 30 يومًا، دون بطاقة.
كيف يعمل
احصل على مفتاح API واربط رقمك
سجّل، ثم اربط رقم WhatsApp الخاص بك في صفحة أرقام WhatsApp برمز QR أو رمز الربط، مثل WhatsApp Web. في الإعدادات ← مفاتيح API، أنشئ مفتاحًا وانسخ Client ID (يوضح دليل مفاتيح API أدناه مكانه). المعرّف الظاهر على بطاقة الرقم (مثل ID 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 رسمية لـ WbizTool API؟
- نعم:
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 في حقل اسمه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 شهريًا في الولايات المتحدة. الأسعار
