كيفية إرسال الرسائل القصيرة عبر واجهة برمجة تطبيقات SMPP باستخدام جافا سكريبت/Node.js
واجهة برمجة تطبيقات الرسائل القصيرة من نظير إلى نظير (SMPP) هي بروتوكول قوي وشائع الاستخدام لإرسال واستقبال الرسائل القصيرة بين مراكز خدمة الرسائل القصيرة (SMSCs) وكيانات الرسائل القصيرة الخارجية (ESMEs). بالنسبة للمطورين الذين يستفيدون من JavaScript و Node.js، فإن دمج واجهة برمجة تطبيقات SMPP مع أدوات مثل بوابة Ozeki للرسائل القصيرة يتيح اتصالاً سلسًا بالرسائل القصيرة. يوفر هذا الدليل برنامجًا تعليميًا خطوة بخطوة لإعداد عميل SMPP، وإدارة الاتصالات، وإرسال الرسائل القصيرة، والتعامل مع تقارير التسليم باستخدام JavaScript و Node.js، مع أمثلة عملية للكود.
لماذا تستخدم واجهة برمجة تطبيقات SMPP مع جافا سكريبت؟
بروتوكول SMPP هو خيار قوي للاتصال بالرسائل القصيرة نظرًا لموثوقيته،
وقابليته للتوسع، ودعمه لرسائل الحجم الكبير. باستخدام JavaScript
و Node.js، يمكن للمطورين إنشاء تطبيقات فعالة تعمل بالأحداث وتتكامل
بسلاسة مع واجهة برمجة تطبيقات SMPP. حزمة smpp
، المتاحة
عبر npm، تبسط تفاعلات البروتوكول منخفضة المستوى، مما يسمح للمطورين بالتركيز
على بناء تطبيقات رسائل قصيرة قوية.
إعداد عميل واجهة برمجة تطبيقات SMPP في جافا سكريبت (Node.js) لإرسال الرسائل القصيرة
قبل أن تتمكن من إرسال رسائل قصيرة باستخدام واجهة برمجة تطبيقات SMPP، تحتاج إلى تكوين حساب مستخدم SMPP والاتصال بخادم SMPP، مثل الخادم المقدم من بوابة Ozeki للرسائل القصيرة. يشرح هذا القسم كيفية إعداد البيئة وإنشاء اتصال باستخدام JavaScript.
الخطوة 1: تثبيت حزمة SMPP
للتفاعل مع بروتوكول SMPP، قم بتثبيت حزمة smpp
من
npm، والتي توفر واجهة بسيطة لعمليات واجهة برمجة تطبيقات SMPP
في JavaScript.
npm install smpp
الخطوة 2: إنشاء اتصال
يوجد أدناه مثال لكيفية الاتصال بخادم SMPP باستخدام Node.js وحزمة
smpp
. استبدل your.ozeki.server
، your_username
،
و your_password
بتفاصيل الخادم الفعلية وبيانات الاعتماد الخاصة بك.
const smpp = require('smpp'); const session = smpp.connect({ host: 'your.ozeki.server', port: 2775 }); session.on('connect', () => { console.log('تم الاتصال بخادم SMPP'); session.bind_transceiver({ system_id: 'your_username', password: 'your_password' }, (pdu) => { if (pdu.command_status === 0) { console.log('تم الربط بنجاح بخادم SMPP'); } else { console.error('فشل الربط:', pdu.command_status); } }); }); session.on('error', (error) => { console.error('خطأ في اتصال SMPP:', error); });
تأكد من أن خادم SMPP الخاص بك يمكن الوصول إليه وأن بيانات الاعتماد الخاصة بك صحيحة لتجنب
مشكلات الاتصال. طريقة bind_transceiver
تنشئ اتصالًا ثنائي الاتجاه
لإرسال واستقبال الرسائل القصيرة.
إدارة اتصالات واجهة برمجة تطبيقات SMPP في Node.js لمراسلة الرسائل القصيرة
الحفاظ على جلسة SMPP نشطة يتطلب إرسال رسائل حية دورية
باستخدام PDU enquire_link
. هذا يضمن بقاء الاتصال مفتوحًا
ومستجيبًا، خاصة للتطبيقات طويلة المدى.
const keepAliveInterval = setInterval(() => { session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('فشل الحفاظ على الاتصال:', pdu.command_status); } }); }, 30000); session.on('close', () => { clearInterval(keepAliveInterval); console.log('تم إغلاق اتصال SMPP'); });
هذا الكود يرسل enquire_link
كل 30 ثانية للحفاظ على
الجلسة نشطة ويمسح الفاصل الزمني عند إغلاق الاتصال.
إرسال الرسائل القصيرة باستخدام جافا سكريبت عبر واجهة برمجة تطبيقات SMPP (مثال Node.js)
بمجرد الاتصال، يمكنك إرسال رسائل قصيرة باستخدام PDU submit_sm
.
توضح وظيفة JavaScript التالية كيفية إرسال
رسالة قصيرة باستخدام واجهة برمجة تطبيقات SMPP.
function sendSMS(from, to, message) { session.submit_sm({ source_addr: from, destination_addr: to, short_message: message, data_coding: 0, // ترميز GSM 7 بت source_addr_ton: 1, // تنسيق دولي source_addr_npi: 1, // خطة ترقيم ISDN dest_addr_ton: 1, // تنسيق دولي dest_addr_npi: 1 // خطة ترقيم ISDN }, (pdu) => { if (pdu.command_status === 0) { console.log(`تم إرسال الرسالة بنجاح، معرف الرسالة: ${pdu.message_id}`); } else { console.error('فشل إرسال الرسالة:', pdu.command_status); } }); } sendSMS('12345', '+1234567890', 'مرحبًا من عميل SMPP لـ Node.js!');
معلمات data_coding
، source_addr_ton
، و dest_addr_ton
تضمن ترميز الرسالة بشكل صحيح وتنسيق رقم الهاتف.
اضبط هذه المعلمات بناءً على متطلباتك.
التعامل مع تقارير تسليم الرسائل القصيرة في جافا سكريبت باستخدام واجهة برمجة تطبيقات SMPP
تدعم واجهة برمجة تطبيقات SMPP تقارير التسليم لتأكيد ما إذا كانت
الرسالة القصيرة قد تم تسليمها. يتعامل الكود التالي مع PDU deliver_sm
الواردة لمعالجة إشعارات التسليم.
session.on('pdu', (pdu) => { if (pdu.command === 'deliver_sm') { const messageId = pdu.receipted_message_id; const status = pdu.message_state; console.log(`تقرير تسليم لـ ${messageId}: ${status}`); session.deliver_sm_resp({ sequence_number: pdu.sequence_number }); } });
يسجل هذا الكود حالة التسليم ويستجيب للخادم لتأكيد استلام التقرير.
تنفيذ كامل لعميل SMPP API بلغة JavaScript (Node.js) لإرسال الرسائل القصيرة
للحصول على حل جاهز للإنتاج، فإن الفئة التالية JavaScript تغلف إدارة الاتصال، وإرسال الرسائل، ومنطق إعادة الاتصال لـ SMPP API.
const smpp = require('smpp'); class SMPPClient { constructor(config) { this.config = config; this.session = null; this.keepAliveInterval = null; this.connect(); } connect() { this.session = smpp.connect(this.config); this.session.on('connect', () => { console.log('تم الاتصال بخادم SMPP'); this.bind(); }); this.session.on('error', (error) => { console.error('خطأ في الاتصال:', error); this.reconnect(); }); this.session.on('close', () => { console.log('تم إغلاق الاتصال'); this.cleanup(); this.reconnect(); }); } bind() { this.session.bind_transceiver({ system_id: this.config.system_id, password: this.config.password }, (pdu) => { if (pdu.command_status === 0) { console.log('تم الربط بنجاح بخادم SMPP'); this.startKeepAlive(); } else { console.error('فشل الربط:', pdu.command_status); this.session.close(); } }); } startKeepAlive() { this.keepAliveInterval = setInterval(() => { this.session.enquire_link({}, (pdu) => { if (pdu.command_status !== 0) { console.error('فشل في الحفاظ على الاتصال:', pdu.command_status); } }); }, 30000); } sendSMS(from, to, message) { return new Promise((resolve, reject) => { this.session.submit_sm({ source_addr: from, destination_addr: to, short_message: message, data_coding: 0 }, (pdu) => { if (pdu.command_status === 0) { resolve(pdu.message_id); } else { reject(new Error(`خطأ في SMPP: ${pdu.command_status}`)); } }); }); } cleanup() { if (this.keepAliveInterval) { clearInterval(this.keepAliveInterval); this.keepAliveInterval = null; } } reconnect() { this.cleanup(); setTimeout(() => { console.log('محاولة إعادة الاتصال...'); this.connect(); }, 5000); } } const client = new SMPPClient({ host: 'your.ozeki.server', port: 2775, system_id: 'your_username', password: 'your_password' }); client.sendSMS('12345', '+1234567890', 'مرحبًا من عميل SMPP الكامل!') .then(messageId => console.log('معرف الرسالة:', messageId)) .catch(err => console.error('خطأ:', err));
يتضمن هذا التنفيذ معالجة الأخطاء، وإعادة الاتصال التلقائي، وإرسال الرسائل المعتمد على الوعود، مما يجعله مناسبًا لبيئات الإنتاج.
أفضل الممارسات لاستخدام SMPP API مع JavaScript- معالجة الأخطاء: قم بتنفيذ معالجة قوية للأخطاء لإدارة مشكلات الشبكة وأخطاء الخادم.
- Async/Await: استخدم الوعود أو async/await لتحسين سير التحكم في العمليات غير المتزامنة.
- تسلسل الرسائل: لإرسال رسائل SMS بكميات كبيرة، قم بتنفيذ قائمة انتظار لإدارة معدل الإرسال.
- مراقبة الاتصال: راقب حالة الاتصال باستمرار وقم بتنفيذ منطق إعادة الاتصال التلقائي.
- ترميز الأحرف: تعامل مع ترميزات الأحرف المختلفة (مثل GSM 7-bit، UCS-2) لدعم الرسائل الدولية.
لقد أظهر هذا الدليل الشامل كيفية تنفيذ عميل SMPP قوي باستخدام JavaScript و Node.js للتفاعل مع SMPP API وبوابة Ozeki SMS. بدءًا من إعداد الاتصال وحتى إرسال الرسائل القصيرة ومعالجة تقارير التسليم، توضح الأمثلة المقدمة التطبيقات العملية لحزمة smpp
. لحالات الاستخدام المتقدمة، ضع في اعتبارك استكشاف ميزات مثل دمج الرسائل، ومخططات الترميز المتقدمة، والتسجيل لتطبيقات الإنتاج.
لمزيد من التفاصيل حول بروتوكول SMPP أو بوابة Ozeki SMS، قم بزيارة الوثائق الرسمية أو اتصل بمزود بوابة الرسائل القصيرة الخاص بك.
More information
- كيفية إعداد اتصال عميل SMPP API مع SMSC الخاص بك
- كيفية إعداد خادم SMPP API لإرسال واستقبال الرسائل القصيرة من تطبيقات متعددة
- كيفية اختيار موفر SMPP API المناسب لعملك
- كيفية إرسال الرسائل القصيرة باستخدام SMPP API على مستوى البروتوكول
- كيفية إرسال الرسائل القصيرة عبر SMPP API باستخدام Python
- كيفية إرسال الرسائل القصيرة عبر SMPP API باستخدام Javascript
- كيفية إرسال الرسائل القصيرة عبر SMPP API باستخدام Java
- كيفية إرسال الرسائل القصيرة عبر SMPP API باستخدام PHP
- كيفية إرسال رسائل نصية عبر SMPP API باستخدام C#
- كيفية إرسال الرسائل القصيرة عبر SMPP API باستخدام C/Cpp
- كيفية استقبال الرسائل القصيرة باستخدام SMPP API
- كيفية استقبال تقرير تسليم الرسائل القصيرة باستخدام SMPP API
- أسئلة شائعة حول SMPP API