إرسال SMS باستخدام JavaScript (Node.js): مكتبة twilio
في تطوير الويب الحديث، غالبًا ما تكون هناك حاجة لإرسال إشعارات SMS للمستخدمين: تأكيد التسجيل، رموز المصادقة الثنائية، إشعارات حالة الطلب وغيرها الكثير. في نظام Node.js البيئي، واحدة من أشهر وأكثر المكتبات موثوقية لهذه المهمة هي twilio. وهي SDK رسمية من شركة Twilio، توفر واجهة برمجة تطبيقات بسيطة وقوية لإرسال SMS برمجيًا، والمكالمات الصوتية، والعمل مع خدمات الاتصالات الأخرى.
في هذه المقالة، سنشرح بالتفصيل كيفية تثبيت وتهيئة واستخدام مكتبة twilio لإرسال SMS من تطبيق Node.js الخاص بك. ستتعرف على الطرق الأساسية، وتتعلم كيفية معالجة الأخطاء، وسترى عدة أمثلة عملية.
التثبيت والإعداد
للبدء، ستحتاج إلى حساب على Twilio. بعد التسجيل، ستحصل على:
- Account SID — معرف فريد لحسابك.
- Auth Token — مفتاح سري لمصادقة الطلبات.
- Twilio phone number — رقم هاتف سيتم إرسال SMS منه (يتم توفيره مجانًا للاختبار).
قم بتثبيت المكتبة عبر npm:
npm install twilioبعد التثبيت، قم بإنشاء ملف send-sms.js وقم بتضمين المكتبة مع تمرير بيانات الاعتماد الخاصة بك:
const twilio = require('twilio');
const accountSid = 'YOUR_ACCOUNT_SID';const authToken = 'YOUR_AUTH_TOKEN';const client = twilio(accountSid, authToken);إرسال SMS أساسي
لإرسال رسالة، استخدم الطريقة client.messages.create(). تقبل هذه الطريقة كائنًا بثلاثة حقول إلزامية:
body— نص الرسالة (حتى 1600 حرف لرسالة SMS واحدة).from— رقم Twilio الخاص بك (بالتنسيق+1234567890).to— رقم المستلم (أيضًا بالتنسيق الدولي).
مثال على إرسال SMS بسيط:
client.messages .create({ body: 'مرحبًا! هذه رسالة اختبارية من Twilio.', from: '+1234567890', to: '+79876543210' }) .then(message => console.log('تم إرسال الرسالة. SID:', message.sid)) .catch(error => console.error('خطأ:', error));بعد الإرسال الناجح، ستحصل على كائن message يحتوي على sid فريد (معرف الرسالة)، وحالة التسليم، ومعلومات أخرى.
الإرسال غير المتزامن باستخدام async/await
للحصول على نهج أكثر حداثة، استخدم بناء الجملة async/await. قم بتغليف الاستدعاء في try...catch لمعالجة الأخطاء:
const sendSMS = async (to, body) => { try { const message = await client.messages.create({ body: body, from: '+1234567890', to: to }); console.log(`تم إرسال SMS إلى ${to}. SID: ${message.sid}`); return message; } catch (error) { console.error('فشل إرسال SMS:', error.message); throw error; }};
// الاستخدامsendSMS('+79876543210', 'رمز التأكيد الخاص بك: 1234');معلمات إضافية
تدعم المكتبة العديد من المعلمات الاختيارية. إليك بعضها:
mediaUrl— رابط صورة أو ملف وسائط آخر (لـ MMS).statusCallback— رابط لتلقي إشعارات حالة التسليم (webhook).applicationSid— SID تطبيق Twilio لتكوين إضافي.
مثال على إرسال MMS مع صورة:
client.messages .create({ from: '+1234567890', to: '+79876543210', body: 'ألق نظرة على هذا',