فهاد المقال غانشوفو كيفاش نقادو API بإستعمال nodejs و express لإرسال الرسائل عبر الواتساب Whatsapp.
الطريقة غير رسمية لأنها كاتم عن طريق
web scraping.
غانستعملو package سميتو whatsapp-web.js اللي كايقوم بإستعمال موقع Whatsapp Web وراء الستار.
البداية :
أولا غانقومو بإنشاء ملف package.json
npm init -y
الأن غانتبثو ل packages اللي غانحتاجو.
1- express : اللي غايساعدنا باش نقادو server بطريقة بسيطة و سهلة.
2- body-parser : غايعطينا القدرة باش نجبدو المعلومات اللي كاينين في ل body ديال request.
3- qrcode-terminal : ملي كاتبغي تسجل الدخول في whatsapp web خاصك تسكاني ل QrCode اللي كايطلعليك, لكن حنا غانكونو خدامي في server و عندنا غير terminal على داكشي غانحتاجو هاد ل package باش نرسمو داك ل QrCode في terminal.
4- whatsapp-web.js : ل package اللي غايساعدنا باش نرسلو الرسائل عبر ل whatsapp.
npm i express body-parser qrcode-terminal whatsapp-web.js
الأن في ملف index.js غانعيطو ل packages اللي ثبتنا.
const express = require("express"); const qrcode = require("qrcode-terminal"); const { Client, LocalAuth } = require("whatsapp-web.js"); const bodyParser = require("body-parser");
whatsapp-web.js غانجيبو منو 2 حوايج:
client : اللي هو الحساب اللي غاتخدم بيه.
LocalAuth : طريقة حفض session . غايتم إنشاء ملف إسمو wwebjs_auth. فيه غايتم حفض session باش ما تحتاش تسكاني ل QrCode فكل مرة كاتشغل server.
ثم غانشغلو express و body-parser.
const app = express(); app.use(bodyParser.json());
الخطوة التالية هي تشغيل ل Client الخاص ب whatsapp-web.js
const client = new Client({ authStrategy: new LocalAuth(), }); client.initialize();
هاد ل client كايعطينا مجموعة من ل events اللي نقدرو نستعملوهم, منهم qr اللي كايعطينا ل qrCode و غانستخدمو qrcode-terminal باش نرسموه في terminal.
client.on("qr", (qr) => { // كايخدم فقط إلى ما كنتيش مسجل الدخول event هاد ل console.log("----------QR RECEIVED---------"); qrcode.generate(qr, { small: true }); });
كاين event سميتو auth_failure كايتشغل إلى وقع شي خطأ في التسجيل.
client.on("auth_failure", (msg) => { console.error("AUTHENTICATION FAILURE", msg); });
ل event الأخير اللي غانستعملو هو ready, كايتشغل ملي كاتم عملية التسجيل بنجاح.
client.on("ready", () => { console.log("YOU ARE READY TO SEND MESSAGES"); });
الأن بإستعمال express غانقادو route غانسميوه sendmessage هو اللي غانستعملوه باش نسيفطو الرسائل من ل frontend.
app.post("/sendmessage", async (req, res, next) => { try { const { number, message } = req.body; // Get the body const msg = await client.sendMessage(`${number}@c.us`, message); // Send the message res.status(200).send({ msg }); // Send the response } catch (error) { res.status(500).send(error); } });
في ل body ديال request غايكونو 2 حوايج:
1- message: اللي هي الرسالة اللي غانسيفطو, غاتكون string.
2-number: اللي هو الرقم اللي غانسيفطوليه الرسالة , حتى هو string.
ل client فيه method سميتها sendMessage هي اللي غانستعملوها باش نرسلو الرسائل. كاتقبل message و number. لكن number خاصو إكون معاه رقم الدولة, بالنسبة للمغرب 212.
و أيضا خاصنا نضيفو للرقم c.us@ فالأخير, على داكشي غانستعملو template literals باش نحققو هادشي.
التشغيل :
الأن غانشغلو server و ل port غايكون هو 3000.
const PORT = 3000; app.listen(PORT, () => console.log(`Server Listening 🚀 @ http://localhost:${PORT}`) );
في package.json غاتزيد هاد script
"start": "node index.js"
الأن في terminal كتب:
npm start
في أول تشغيل غايطلعليك QrCode في terminal سكانيه بالواتساب اللي بغيتي ترسل بيه الرسائل.

الأن باش نجرب ل API أنا غانستعمل VsCode Extension سميتها Thunder Client.

الرقم اللي رسلتيلو الرسالة غاتوصلو و أنت غاترجليك هاد response.

ل code كامل غاتلقاوه في
Github
النهاية :
هاد ل API عندو العديد من الإستعمالات حيت ل whatsapp ولا كايتعتابر وسيلة ديال ل marketing.
كانتمنا تكونو ستمتعتو بهاد المقال. نتشاوفو فمقال أخر.