דלגו לתוכן
Wbiztool

API להודעות

ממשק API לשליחה למספרים מרובים

שלחו את אותה הודעת WhatsApp לכמה מספרי טלפון וקבוצות בבקשה אחת. השתמשו בו לתפוצות קטנות, כמו ניוזלטרים, מבצעים והודעות.

POSThttps://wbiztool.com/api/v1/send_msg/multi/

גוף הבקשה: JSON או שדות טופס

מערכת Wbiztool יוצרת הודעה אחת לכל נמען ומחזירה msg_id לכל אחת, כך שאפשר לבדוק את הסטטוס שלהן בנפרד.

דוגמה מהירה#

curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 0,
    "country_code": "91",
    "phone": "9876543210,9812345670,Sales Team Mumbai",
    "msg": "Our Diwali sale starts tomorrow. Get 20% off on all orders!"
  }'

החליפו את 12345, YOUR_API_KEY ו-678 בערכים שלכם. בסעיף אימות מוסבר איפה למצוא אותם.

פרמטרי הבקשה#

אימות

client_idintegerחובה

מזהה הלקוח שלכם ל-API (API Client ID) מהדף Settings → API keys.

api_keystringחובה

מפתח ה-API שלכם מאותו דף.

whatsapp_clientintegerחובה

המזהה של מספר ה-WhatsApp שממנו שולחים, מהדף הגדרות WhatsApp. בשונה משליחת הודעה, ה-endpoint הזה אף פעם לא בוחר מספר בשבילכם.

נמענים והודעה

phonestringחובה

מספרי טלפון ושמות קבוצות במחרוזת אחת מופרדת בפסיקים, למשל 9876543210,9812345670,Sales Team Mumbai. אל תשלחו מערך JSON. ראו איך הנמענים מזוהים.

country_codestringאופציונלי

קידומת החיוג של המדינה בלי +, למשל 91. היא מתווספת לפני כל מספר טלפון, אלא אם המספר כבר מתחיל בה. ב-JSON שלחו אותה כמחרוזת ("91"), לא כמספר. אם תשלחו מספר, כל מספר טלפון ברשימה יטופל כשם קבוצה (is_group: true), וההודעות האלה ייכשלו.

msg_typeintegerאופציונלי

0 טקסט (ברירת מחדל), 1 תמונה, 2 קובץ או מסמך.

msgstringחובה כש-msg_type הוא 0

טקסט ההודעה. בתמונות ובקבצים זה הכיתוב, והוא יכול להיות ריק. עיצוב של WhatsApp עובד: *bold*, _italic_, ~strikethrough~. אפשר להשתמש גם בשם החלופי message.

תמונות וקבצים

img_urlstringחובה כש-msg_type הוא 1

כתובת URL ציבורית של התמונה, ב-http או ב-https.

file_urlstringחובה כש-msg_type הוא 2

כתובת URL ציבורית ב-http או ב-https שממנה אפשר להוריד את הקובץ ישירות.

file_namestringאופציונלי

שם הקובץ שהנמענים רואים, למשל price-list.pdf. הוא נשלח באותיות קטנות, תווים כמו & : ? * $ ; מוחלפים ב-_, והוא נחתך ל-150 תווים. אם לא תשלחו אותו, השם יילקח מכתובת ה-URL.

אפשרויות מסירה

webhookstringאופציונלי

כתובת URL שמקבלת בקשת POST עבור כל הודעה כשהיא נשלחת או נכשלת. התוכן זהה לזה של שליחת הודעה.

תמונה מכתובת URLcURL
curl -X POST https://wbiztool.com/api/v1/send_msg/multi/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "whatsapp_client": 678,
    "msg_type": 1,
    "country_code": "91",
    "phone": "9876543210,9812345670",
    "img_url": "https://example.com/offers/diwali-sale.jpg",
    "msg": "Our Diwali sale starts tomorrow."
  }'

איך הנמענים מזוהים#

מערכת Wbiztool מפצלת את phone לפי פסיקים, מסירה רווחים סביב כל פריט ואז מחליטה מה כל פריט:

  • ספרות בלבד (+ בהתחלה או אפסים מובילים הם בסדר): מטופל כמספר טלפון. הקידומת country_code מתווספת, אלא אם המספר כבר מתחיל בה, ואז המספר חייב להיות באורך של 6 עד 15 ספרות.
  • כל דבר אחר: מטופל כשם של קבוצת WhatsApp, שמאותרת באותה דרך כמו ב-שליחה לקבוצה.
  • קבוצה ששמה מורכב מספרות בלבד (למשל 2024) מטופלת כמספר טלפון, ואי אפשר לשלוח מה-endpoint הזה לקבוצות ששמן מכיל פסיקים. לקבוצות כאלה השתמשו ב-שליחה לקבוצה.

דברים נוספים שכדאי לדעת:

  • מספרים קצרים מדי או ארוכים מדי אחרי הוספת קידומת המדינה מדולגים בשקט. הם לא מופיעים בתגובה ולא מקבלים msg_id.
  • כפילויות לא מוסרות. מספר שמופיע פעמיים מקבל שתי הודעות.
  • אם מספר מקומי מתחיל במקרה באותן ספרות כמו country_code (למשל 9123456780 עם country_code 91), הקידומת לא מתווספת. שלחו מספרים כאלה כשקידומת המדינה כבר כלולה בהם (919123456780).
  • כתובות URL של תמונות וקבצים לא נבדקות כשאתם קוראים ל-API. הן מורדות בזמן שליחת כל הודעה, כך שקישור שבור גורם להודעות להיכשל מאוחר יותר, ולא לבקשה עצמה. חלים אותם כללים של זמן שליחה כמו בשליחת הודעה: תמונות מעל 16 MB וסרטונים מעל 64 MB נכשלים, אודיו WAV ו-OGG לא נתמך, ולקבצים (msg_type 2) בלי סיומת נתמכת מתווסף ‎.pdf. ראו שליחת תמונות וקבצים.

קרדיטים#

לפני שנוצר משהו, כל האצווה נבדקת מול הקרדיטים שנותרו לכם. כל פריט לא ריק ב-phone נספר, כולל פריטים שמדולגים בהמשך. אם הספירה גבוהה מהקרדיטים שנותרו לכם, לא נוצרת אף הודעה ומתקבלת התגובה:

{
  "message": "Not enough credits: 120 messages requested, 85 credits remaining",
  "status": 0
}

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

תגובה#

בקשה מוצלחת מחזירה HTTP 200:

{
  "msg_ids": [9817263, 9817264, 9817265],
  "messages": [
    { "msg_id": 9817263, "contact": "919876543210", "is_group": false },
    { "msg_id": 9817264, "contact": "919812345670", "is_group": false },
    { "msg_id": 9817265, "contact": "Sales Team Mumbai", "is_group": true }
  ],
  "message": "Successfully created 3 messages",
  "status": 1
}
שדהסוגתיאור
statusinteger1 אם לפחות הודעה אחת נכנסה לתור, אחרת 0.
messagestringSuccessfully created N messages בהצלחה, אחרת השגיאה.
msg_idsarray of integersהמזהים של ההודעות שבתור, לפי הסדר ב-phone. מופיע רק בהצלחה.
messagesarrayאובייקט אחד לכל הודעה שבתור. מופיע רק בהצלחה.
messages[].msg_idintegerהמזהה של ההודעה.
messages[].contactstringמספר הטלפון אחרי הוספת קידומת המדינה, או שם הקבוצה.
messages[].is_groupbooleantrue אם הפריט טופל כשם קבוצה.

השוו את messages לרשימה ששלחתם כדי למצוא מספרים שדולגו, ובדקו שהערך של is_group הוא false בכל פריט שהתכוונתם אליו כמספר טלפון.

שגיאות#

רוב השגיאות מחזירות HTTP 200 עם status שמוגדר ל-0, לכן תמיד בדקו את status בגוף התגובה. מלבד שגיאות HTTP 400 ו-403, התגובות (כולל תגובות מוצלחות) הן JSON שנשלח עם Content-Type: text/html, לכן פענחו את הגוף בעצמכם ואל תסתמכו על זיהוי JSON אוטומטי (למשל בכלי no-code):

{ "message": "Invalid whatsapp client", "status": 0 }
הודעהאיך לתקן
Auth Errorשלחו גם client_id וגם api_key.
Invalid Client Idשלחו את client_id כמספר. מוחזר עם HTTP 403.
Auth Error: invalid api keyודאו שהמפתח קיים, לא נמחק ושייך ל-client_id הזה. מוחזר עם HTTP 400.
Msg cant be nullהודעות טקסט (msg_type 0) דורשות msg.
Image Url Can't be nullעבור msg_type 1, שלחו img_url.
File Url Can't be nullעבור msg_type 2, שלחו file_url.
Not enough credits: … messages requested, … credits remainingשלחו לפחות נמענים או הוסיפו קרדיטים. ראו קרדיטים.
Invalid whatsapp clientהמזהה whatsapp_client הזה לא נמצא בסביבת העבודה שלכם.
No valid contacts foundכל הפריטים ב-phone היו ריקים או דולגו. ודאו שהמספרים באורך 6 עד 15 ספרות כולל קידומת המדינה.
Demo Account can not access apisהשתמשו בחשבון רגיל.
Invalid JSON format: …גוף ה-JSON לא תקין, או ששלחתם שדות טופס בלי client_id.

טיפים#

  • שלחו את phone כמחרוזת: חברו את הרשימה שלכם בפסיקים. מערך JSON מחזיר {}.
  • אל תשתמשו כרגע ב-send_bulk_messages של לקוח ה-Python: הוא שולח את הרשימה בתור phones, וה-endpoint הזה מתעלם מזה. קראו ל-endpoint ישירות, כמו בדוגמאות שלמעלה.
  • עקבו אחרי כל הודעה: שמרו כל msg_id מתוך messages, או העבירו webhook כדי לקבל התראה כשכל הודעה נשלחת או נכשלת.
  • השאירו את המספר מחובר: כל הודעה נשלחת ממספר ה-WhatsApp שלכם, ולכן הוא חייב להישאר מחובר בהגדרות WhatsApp עד שכל האצווה יוצאת.
  • טקסט שונה לכל אדם: ה-endpoint הזה שולח את אותו msg לכולם. כדי להתאים אישית כל הודעה, קראו ל-שליחת הודעה פעם אחת לכל נמען.