דלגו לתוכן
WbizTool

שליחת הודעות WhatsApp עם Node.js

שלחו טקסטים, תמונות וקבצים ב-WhatsApp מאפליקציית ה-Node.js שלכם, מהמספר שלכם שמקושר ל-WbizTool כמו WhatsApp Web. השתמשו בחבילה הרשמית wbiztool-client או ב-fetch שמובנה ב-Node.js 18 ומעלה.

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

איך זה עובד

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

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

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

    הריצו npm install wbiztool-client בשביל הלקוח הרשמי. או קראו ל-API עם fetch, שלא צריך חבילה ב-Node.js 18 ומעלה.

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

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

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

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

דוגמאות קוד: Node.js

התקנת הלקוח הרשמי
npm install wbiztool-client
שליחת טקסט עם הלקוח הרשמי
const { WbizToolClient } = require("wbiztool-client");

const client = new WbizToolClient({
  clientId: 12345,
  apiKey: "YOUR_API_KEY",
  whatsappClient: 678,
});

(async () => {
  // Errors throw, with the API's response in the error message.
  const result = await client.sendMessage({
    phone: "9876543210",
    countryCode: "91",
    message: "Hi Aman, your order #4821 has shipped.",
  });
  console.log(result);
})().catch(console.error);
שליחת טקסט עם fetch
// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    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.",
  }),
});
const result = await response.json(); // read the body even when the HTTP code is 400

if (result.status === 1) {
  console.log("Queued with msg_id", result.msg_id);
} else {
  console.error("Failed:", result.message);
}
תגובה
{"status": 1, "message": "Created", "msg_id": 9817263}
שליחת PDF (העלאת קובץ)
// Node.js 20+ (built-in fetch, FormData and fs.openAsBlob). Save as .mjs to use top-level await.
import { openAsBlob } from "node:fs";

const form = new FormData();
form.append("client_id", "12345");
form.append("api_key", "YOUR_API_KEY");
form.append("whatsapp_client", "678");
form.append("msg_type", "2");
form.append("country_code", "91");
form.append("phone", "9876543210");
form.append("msg", "Your invoice for order #4821 is attached.");
form.append("file_name", "invoice-4821.pdf");
form.append("file", await openAsBlob("./invoice-4821.pdf"), "invoice-4821.pdf");

// Don't set Content-Type yourself; fetch adds the multipart boundary.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/", { method: "POST", body: form });
console.log(await response.json());
בדיקת סטטוס ההודעה
// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const msgId = 9817263;
const response = await fetch(`https://wbiztool.com/api/v1/message/status/${msgId}/`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    client_id: 12345,
    api_key: "YOUR_API_KEY",
  }),
});
const result = await response.json(); // read the body even when the HTTP code is 400

if (result.message === "Unknown message id") {
  console.log("No message with this ID in your workspace");
} else if (!("status_text" in result)) {
  console.error("Request failed:", result.message ?? "no message in response");
} else if (result.status === 1) {
  console.log("Sent");
} else if (result.status === 2) {
  console.log("Failed:", result.error);
} else {
  console.log("Status:", result.status_text);
}
תזמון הודעה למועד מאוחר יותר
// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const tz = "Asia/Kolkata";
const sendAt = new Date(Date.now() + 2 * 60 * 60 * 1000); // two hours from now
// Format the date and time in the timezone you send, not your server's.
const date = new Intl.DateTimeFormat("en-GB", { timeZone: tz, day: "2-digit", month: "2-digit", year: "numeric" }).format(sendAt); // "24/12/2026"
const time = new Intl.DateTimeFormat("en-GB", { timeZone: tz, hour: "2-digit", minute: "2-digit", hourCycle: "h23" }).format(sendAt); // "09:00"

const response = await fetch("https://wbiztool.com/api/v1/schedule_msg/", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    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,
    time,
    timezone: tz,
  }),
});
const result = await response.json(); // schedule errors come back with HTTP 200 and "status": 0

if (result.status === 1) {
  console.log("Scheduled with msg_id", result.msg_id);
} else {
  console.error("Failed:", result.message ?? "no message in response");
}
קבלת ה-Webhook של הסטטוס (Express)
const express = require("express");

const app = express();

// WbizTool posts form fields, not JSON.
app.post("/wbiztool-webhook", express.urlencoded({ extended: false }), (req, res) => {
  const { msg_id, status } = req.body; // status: SENT, FAILED, CANCELLED or EXPIRED
  console.log(msg_id, status);
  res.sendStatus(200);
});

app.listen(3000);

מה אפשר לעשות

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

    הגדירו msg_type ל-0 לטקסט, ל-1 לתמונה או ל-2 לקובץ. תנו img_url או file_url ציבוריים, או העלו את הקובץ כ-multipart form data בשדה בשם file.

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

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

  • Webhooks לכל סטטוס

    העבירו webhook, והשרת שלכם יקבל POST מקודד כטופס, כמו msg_id=9817263&status=SENT, כשההודעה נשלחת, נכשלת, מבוטלת או שפג תוקפה.

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

    שלחו POST אל /api/v1/schedule_msg/ עם date (dd/mm/yyyy), time (HH:MM) ו-timezone. עצבו את התאריך עם Intl.DateTimeFormat באותו אזור זמן, לא באזור הזמן של השרת שלכם.

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

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

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

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

טוב לדעת

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

שאלות

יש חבילת Node.js רשמית ל-API של WbizTool?
כן: wbiztool-client ב-npm (npm install wbiztool-client). הפונקציה sendMessage שלה שולחת הודעה. לתזמון ולבדיקות סטטוס, קראו לנקודות הקצה עם fetch כמו שמוצג למעלה.
אפשר לקרוא ל-API מהדפדפן?
אל תעשו את זה: הבקשה נושאת את מפתח ה-API שלכם, וכל מי שמחזיק בו יכול לשלוח מהמספרים שלכם. קראו ל-API משרת ה-Node.js שלכם ושמרו את המפתח במשתנה סביבה.
איך יודעים שההודעה נשלחה?
תגובה עם "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$ לחודש בארה״ב. מחירים