إنشاء API لإرسال الرسائل عبر whatsapp

إنشاء API لإرسال الرسائل عبر whatsapp

5 أبريل 2022|3 دقائق قراءة

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

scan whatsapp qrcode

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

whatsapp api nodejs

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

whatsapp web api response


ل code كامل غاتلقاوه في Github


النهاية :

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