كيفية إرسال الرسائل القصيرة عبر واجهة برمجة تطبيقات SMPP باستخدام جافا
إرسال رسائل SMS باستخدام جافا عبر واجهة برمجة تطبيقات SMPP
بمجرد الاتصال، يمكنك إرسال رسائل SMS باستخدام وحدة submit_sm
PDU.
يوضح طريقة جافا التالية كيفية إرسال رسالة SMS باستخدام واجهة برمجة تطبيقات SMPP
في جافا:
public static void sendSMS(SMPPSession session, String sender, String recipient, String message) throws Exception { try { String messageId = session.submitShortMessage( "CMT", // نوع الخدمة TypeOfNumber.ALPHANUMERIC, // مصدر TON NumberingPlanIndicator.UNKNOWN, // مصدر NPI sender, // عنوان المرسل TypeOfNumber.INTERNATIONAL, // الوجهة TON NumberingPlanIndicator.ISDN, // الوجهة NPI recipient, // عنوان المستلم new ESMClass(), // فئة ESM (byte)0, // معرف البروتوكول (byte)1, // علم الأولوية null, // وقت التسليم المحدد null, // فترة الصلاحية new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE), // إيصال التسليم (byte)0, // علم الاستبدال إذا كان موجودًا new GeneralDataCoding(Alphabet.ALPHA_DEFAULT), // ترميز البيانات (byte)0, // معرف الرسالة الافتراضي message.getBytes() // محتوى الرسالة ); System.out.println("تم إرسال الرسالة القصيرة بمعرف الرسالة: " + messageId); } catch (PDUException e) { System.err.println("معامل PDU غير صالح: " + e.getMessage()); throw e; } catch (ResponseTimeoutException e) { System.err.println("انتهت مهلة الاستجابة: " + e.getMessage()); throw e; } catch (InvalidResponseException e) { System.err.println("استجابة غير صالحة: " + e.getMessage()); throw e; } catch (NegativeResponseException e) { System.err.println("تم استلام استجابة سلبية: " + e.getMessage()); throw e; } catch (Exception e) { System.err.println("فشل إرسال الرسالة القصيرة: " + e.getMessage()); throw e; } }
هذه الطريقة ترسل رسالة SMS مع تمكين تتبع إيصال التسليم. تضمن المعلمة
RegisteredDelivery
أن تتلقى إشعارات حول حالة تسليم الرسالة.
لتتبع ما إذا كانت الرسالة القصيرة قد تم تسليمها بنجاح، يمكنك ربط جلسة SMPP الخاصة بك
كمستقبل-مرسل (BindType.BIND_TRX
) وتنفيذ مستمع مستقبل الرسائل.
فيما يلي مثال لكيفية معالجة تقارير التسليم في جافا:
// الربط كمستقبل-مرسل لإرسال واستقبال الرسائل BindParameter bindParam = new BindParameter( BindType.BIND_TRX, "اسم_المستخدم_الخاص_بك", "كلمة_المرور_الخاصة_بك", "cp", TypeOfNumber.ALPHANUMERIC, NumberingPlanIndicator.UNKNOWN, null ); // تعيين مستمع مستقبل الرسائل لتقارير التسليم session.setMessageReceiverListener(new MessageReceiverListener() { @Override public void onAcceptDeliverSm(DeliverSm deliverSm) { if (MessageType.SMSC_DEL_RECEIPT.containedIn(deliverSm.getEsmClass())) { DeliveryReceipt delReceipt = deliverSm.getShortMessageAsDeliveryReceipt(); System.out.println(String.format( "تم استلام إيصال تسليم للرسالة %s: %s", delReceipt.getId(), delReceipt.getFinalStatus() )); } // الرد على تقرير التسليم try { byte[] messageId = new byte[]{1}; session.deliverSmResponse(0, messageId, deliverSm); } catch (PDUException e) { System.err.println("فشل في الرد على deliver_sm: " + e.getMessage()); } } });
يعالج هذا الكود إيصالات التسليم، مما يسمح لك بتتبع نجاح أو فشل كل رسالة SMS يتم إرسالها عبر واجهة برمجة تطبيقات SMPP في جافا.
عميل جافا كامل لبروتوكول SMPP لإرسال الرسائل القصيرة عبر واجهة برمجة تطبيقات SMPP
فيما يلي فئة جافا كاملة تتكامل مع إدارة الاتصال، وإرسال الرسائل، والتعامل مع تقارير التسليم. هذا التنفيذ جاهز للإنتاج مع معالجة مناسبة للأخطاء وإدارة الموارد:
import org.jsmpp.*; import org.jsmpp.bean.*; import org.jsmpp.session.*; import org.jsmpp.util.*; public class SMPPClient implements AutoCloseable { private SMPPSession session; private String host; private int port; private String username; private String password; public SMPPClient(String host, int port, String username, String password) { this.host = host; this.port = port; this.username = username; this.password = password; this.session = new SMPPSession(); } public void connect() throws Exception { try { BindParameter bindParam = new BindParameter( BindType.BIND_TRX, username, password, "cp", TypeOfNumber.ALPHANUMERIC, NumberingPlanIndicator.UNKNOWN, null ); session.connectAndBind(host, port, bindParam); // Configure session settings session.setEnquireLinkTimer(30000); session.setTransactionTimer(10000); // Set up delivery receipt handler session.setMessageReceiverListener(new DeliveryReceiptListener()); System.out.println("Successfully connected to SMPP server"); } catch (Exception e) { System.err.println("Failed to connect to SMPP server: " + e.getMessage()); throw e; } } public String sendSMS(String sender, String recipient, String message) throws Exception { try { return session.submitShortMessage( "CMT", TypeOfNumber.ALPHANUMERIC, NumberingPlanIndicator.UNKNOWN, sender, TypeOfNumber.INTERNATIONAL, NumberingPlanIndicator.ISDN, recipient, new ESMClass(), (byte)0, (byte)1, null, null, new RegisteredDelivery(SMSCDeliveryReceipt.SUCCESS_FAILURE), (byte)0, new GeneralDataCoding(Alphabet.ALPHA_DEFAULT), (byte)0, message.getBytes() ); } catch (Exception e) { System.err.println("Failed to send SMS: " + e.getMessage()); throw e; } } @Override public void close() { if (session != null) { session.unbindAndClose(); } } private static class DeliveryReceiptListener implements MessageReceiverListener { @Override public void onAcceptDeliverSm(DeliverSm deliverSm) { if (MessageType.SMSC_DEL_RECEIPT.containedIn(deliverSm.getEsmClass())) { DeliveryReceipt delReceipt = deliverSm.getShortMessageAsDeliveryReceipt(); System.out.println(String.format( "Received delivery receipt for message %s: %s", delReceipt.getId(), delReceipt.getFinalStatus() )); } } } public static void main(String[] args) { try (SMPPClient client = new SMPPClient( "your.ozeki.server", 2775, "your_username", "your_password")) { client.connect(); String messageId = client.sendSMS( "12345", "+1234567890", "Hello from Java SMPP client!" ); System.out.println("SMS sent with ID: " + messageId); // Keep application running to receive delivery reports System.out.println("Press Ctrl+C to exit..."); Thread.sleep(Long.MAX_VALUE); } catch (Exception e) { System.err.println("Error in SMPP client: " + e.getMessage()); } } }
هذا التنفيذ الكامل يغلف وظيفة عميل SMPP في فئة قابلة لإعادة الاستخدام، مما يجعلها أسهل للتكامل مع تطبيقات جافا الأكبر. واجهة
AutoCloseable
تضمان تنظيف الموارد بشكل صحيح.
لضمان أن يكون عميل واجهة برمجة تطبيقات SMPP لجافا قويًا وقابلاً للتوسع، اتبع أفضل الممارسات التالية:
- تجميع الاتصالات: استخدم تجميع الاتصالات لتطبيقات الرسائل القصيرة ذات الحجم الكبير لإدارة جلسات SMPP المتعددة بكفاءة.
- معالجة الاستثناءات: نفذ معالجة شاملة للاستثناءات للتعافي من مشاكل الشبكة أو أخطاء الخادم.
- مجموعات الخيوط: استخدم مجموعات الخيوط لمعالجة الرسائل المتزامنة لتحسين الأداء.
- تسلسل الرسائل: نفذ آلية تسلسل لضمان تسليم الرسائل بشكل موثوق أثناء انقطاعات الشبكة.
- مراقبة الاتصال: راقب حالة جلسة SMPP ونفذ منطق إعادة الاتصال التلقائي لضمان الموثوقية.
- ترميز الأحرف: تعامل مع ترميزات الأحرف المختلفة (مثل GSM 7-bit، UCS-2) لدعم الرسائل القصيرة الدولية.
تنفيذ واجهة برمجة تطبيقات SMPP في جافا مع بوابة Ozekي للرسائل القصيرة
يوفر حلاً قويًا لإرسال واستقبال الرسائل القصيرة في تطبيقاتك. مكتبة
jSMPP
تبسط تعقيدات بروتوكول SMPP، مما يسمح للمطورين بالتركيز على بناء ميزات
المراسلة القوية. غطى هذا الدليل الأساسيات لإعداد عميل جافا لبروتوكول SMPP،
إدارة الاتصالات، إرسال الرسائل القصيرة، والتعامل مع تقارير التسليم. باتباع
الأمثلة المقدمة وأفضل الممارسات، يمكنك إنشاء تطبيقات رسائل قصيرة قابلة للتوسع
وموثوقة باستخدام جافا وواجهة برمجة تطبيقات SMPP.
لبيئات الإنتاج، فكر في إضافة ميزات متقدمة مثل دمج الرسائل للرسائل القصيرة الطويلة، تسجيل مفصل، ومراقبة الأداء. يوفر بروتوكول SMPP إمكانيات إضافية، مثل جدولة تسليم الرسائل وإعدادات الأولوية، لتعزيز تطبيقك مع تطور المتطلبات.
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