إرسال SMS باستخدام JavaScript (Node.js): مكتبات API وأمثلة عملية
في العالم الحديث، تظل إشعارات SMS واحدة من أكثر الطرق موثوقية للتواصل مع المستخدمين. سواء كان تأكيد التسجيل، أو رمز المصادقة الثنائية، أو الحملات التسويقية - فإن القدرة على إرسال رسائل SMS برمجيًا تعتبر أمرًا بالغ الأهمية للعديد من تطبيقات الويب. في هذه المقالة، سننظر في كيفية تنفيذ إرسال SMS باستخدام JavaScript (Node.js) من خلال استخدام APIs ومكتبات مختلفة.
اختيار مزود خدمة SMS والحصول على مفتاح API
الخطوة الأولى هي اختيار خدمة لإرسال SMS. هناك العديد من المزودين، مثل Twilio و Nexmo (Vonage) و Amazon SNS و ClickSend وغيرهم. للبدء، ستحتاج إلى:
- التسجيل في الخدمة المختارة.
- شحن الرصيد أو تفعيل حساب تجريبي.
- الحصول على مفتاح API و SID ورمز الوصول (لكل مزود مصطلحاته الخاصة).
- إعداد المرسل (Sender ID) - رقم هاتف أو اسم نصي.
تثبيت المكتبات اللازمة
للعمل مع APIs مزودي SMS في Node.js، غالبًا ما تُستخدم SDKs الرسمية. سننظر في التثبيت باستخدام خدمة Twilio الشهيرة والمكتبة العامة axios لطلبات HTTP.
# تثبيت مكتبة Twilionpm install twilio
# تثبيت axios لطلبات REST APInpm install axiosمثال 1: إرسال SMS عبر Twilio SDK
توفر Twilio SDK مناسبًا لـ Node.js. بعد التثبيت، قم بإنشاء ملف send-sms.js وأضف الكود التالي:
const twilio = require('twilio');
// بيانات الاعتماد الخاصة بك من لوحة تحكم Twilioconst accountSid = process.env.TWILIO_ACCOUNT_SID;const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = new twilio(accountSid, authToken);
async function sendSMS() { try { const message = await client.messages.create({ body: 'مرحبًا! هذه رسالة SMS تجريبية من تطبيق Node.js.', from: '+1234567890', // الرقم الذي حصلت عليه من Twilio to: '+79001234567' // رقم المستلم }); console.log('تم إرسال SMS. المعرف:', message.sid); } catch (error) { console.error('خطأ في إرسال SMS:', error); }}
sendSMS();هام: لا تقم أبدًا بتخزين المفاتيح مباشرة في الكود. استخدم متغيرات البيئة (ملف .env أو إعدادات النظام).
مثال 2: إرسال SMS عبر REST API عام
إذا لم يكن لدى مزودك SDK رسمي، يمكنك استخدام axios لإرسال طلب POST. لننظر في مثال مع بوابة SMS افتراضية:
const axios = require('axios');
const API_URL = 'https://api.sms-provider.com/v1/send';const API_KEY = process.env.SMS_API_KEY;
async function sendSMSViaREST(phone, message) { try { const response = await axios.post(API_URL, { apiKey: API_KEY, phone: phone, text: message, sender: 'MyApp' // اسم المرسل }, { headers: { 'Content-Type': 'application/json' } }); console.log('استجابة الخادم:', response.data); } catch (error) { console.error('خطأ:', error.response ? error.response.data : error.message); }}
// الاستخدامsendSMSViaREST('+79001234567', 'رمز التأكيد الخاص بك: 1234');معالجة الأخطاء وحالات التسليم
عند العمل مع SMS، من المهم مراعاة الأخطاء المحتملة:
- رقم غير صحيح - تحقق من تنسيق الهاتف (التنسيق الدولي مع +).
- رصيد غير كافٍ - راقب رصيد الحساب.
- قيود المزود - بعض المشغلين يحظرون الإرسال الجماعي.
- انتهاء المهلة - استخدم معالجة الأخطاء المناسبة.