فهاد المقال غانشوفو كيفاش نقادو 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
.
كانتمنا تكونو ستمتعتو بهاد المقال. نتشاوفو فمقال أخر.