كيفية استقبال الرسائل القصيرة باستخدام واجهة برمجة تطبيقات SMPP
بروتوكول الرسائل القصيرة من نظير إلى نظير (SMPP) هو بروتوكول قوي ومعياري مصمم لتسهيل تبادل رسائل SMS بين كيانات الرسائل القصيرة الخارجية (ESMEs) ومراكز خدمة الرسائل القصيرة (SMSCs). بالنسبة للمطورين والشركات التي تستخدم واجهة برمجة تطبيقات SMPP مع بوابة Ozeki للرسائل القصيرة كمنصة رئيسية، فإن فهم العمليات منخفضة المستوى للبروتوكول أمر ضروري لبناء حلول رسائل قصيرة قوية. تقدم هذه المقالة دليلًا شاملًا حول كيفية استقبال رسائل SMS باستخدام واجهة برمجة تطبيقات SMPP، مع التركيز على تفاعلات مستوى البروتوكول ووحدات بيانات البروتوكول (PDUs) المحددة المشاركة في إعداد وصيانة واستخدام اتصال عميل SMPP مع بوابة Ozeki للرسائل القصيرة.
مقدمة إلى واجهة برمجة تطبيقات SMPP وبوابة Ozeki للرسائل القصيرة
تُستخدم واجهة برمجة تطبيقات SMPP على نطاق واسع في صناعة الاتصالات نظرًا لكفاءتها في التعامل مع رسائل SMS الجماعية عبر اتصالات TCP/IP. تعمل بوابة Ozeki للرسائل القصيرة، وهي برنامج SMPP متعدد الاستخدامات، كعميل وخادم SMPP، مما يجعلها منصة مثالية لإرسال واستقبال رسائل SMS. من خلال تنفيذ بروتوكول SMPP (الإصدارات 3.3 و3.4، مع دعم الإصدار 5.0 في بوابة Ozeki 10 للرسائل القصيرة)، تمكن Ozeki من الاتصال السلس مع مراكز خدمة الرسائل القصيرة، مما يدعم تطبيقات مثل الحملات التسويقية والمصادقة الثنائية وأنظمة الإشعارات. تركز هذه المقالة على استقبال رسائل SMS، مع تفصيل وحدات بيانات بروتوكول SMPP المطلوبة لإعداد الاتصال وصيانته واستقبال الرسائل.
فهم وحدات بيانات بروتوكول SMPP
يعمل SMPP عن طريق تبادل وحدات بيانات البروتوكول (PDUs) بين عميل SMPP (مثل بوابة Ozeki للرسائل القصيرة) وخادم SMPP (مثل مركز خدمة الرسائل القصيرة). كل PDU هي رسالة منظمة تحمل تعليمات أو بيانات محددة، مثل بيانات اعتماد المصادقة أو محتوى الرسائل القصيرة أو استعلامات حالة الاتصال. لاستقبال رسائل SMS باستخدام واجهة برمجة تطبيقات SMPP، يجب على العميل إنشاء اتصال وصيانته ومعالجة الرسائل الواردة. وحدات بيانات البروتوكول الرئيسية المشاركة هي:
- bind_transceiver: ينشئ اتصالًا لكل من إرسال واستقبال الرسائل القصيرة.
- enquire_link: يحافظ على الاتصال عن طريق التحقق من حالته.
- deliver_sm: يسلم رسائل SMS الواردة من مركز خدمة الرسائل القصيرة إلى العميل.
- unbind: ينهي جلسة SMPP.
فيما يلي، سنستكشف كل PDU بالتفصيل، بما في ذلك بنيتها وتكوينها في بوابة Ozeki للرسائل القصيرة ودورها في استقبال رسائل SMS عبر واجهة برمجة تطبيقات SMPP.
إعداد اتصال عميل SMPP API
لاستقبال رسائل SMS، فإن الخطوة الأولى هي إنشاء اتصال عميل SMPP API مستقر مع SMSC. يبسط Ozeki SMS Gateway هذه العملية بواجهته البديهية، لكن فهم عمليات مستوى البروتوكول الأساسية أمر بالغ الأهمية للمستخدمين المتقدمين.
1. تكوين عميل SMPP في Ozeki SMS Gateway
لإعداد اتصال عميل SMPP API في Ozeki SMS Gateway، اتبع الخطوات التالية:
- تسجيل الدخول إلى وحدة التحكم الإدارية: قم بالوصول إلى واجهة الويب لـ Ozeki SMS Gateway باستخدام حساب المسؤول (اسم المستخدم الافتراضي: "admin").
- إضافة اتصال جديد: انتقل إلى لوحة "Connections"، انقر على "Add new connection"، واختر "SMPP client" من قسم "IP SMS Connections".
- تكوين إعدادات SMPP: قدم التفاصيل التالية، والتي يتم توفيرها عادةً من قبل مزود خدمة الرسائل القصيرة:
- اسم المضيف: عنوان IP أو اسم المضيف لـ SMSC (مثال: "192.168.1.1").
- رقم المنفذ: منفذ TCP/IP لاتصال SMPP (الافتراضي هو 9500، لكن تأكد من مزود الخدمة).
- اسم المستخدم (System ID): معرف حسابك لـ SMSC.
- كلمة المرور: كلمة المرور المرتبطة بـ System ID.
- إصدار SMPP: اختر v3.4 لدعم transceiver (موصى به للإرسال والاستقبال).
- نوع النظام: اختياري، غالبًا ما يكون "SMPP"، كما هو محدد من قبل المزود.
- عنوان المرسل: رقم الهاتف الافتراضي لرسائل SMS الصادرة (مثال: "+1234567890").
- نطاق العناوين: اختياري، يستخدم لاستقبال الرسائل من أرقام متعددة.
- وضع الربط: اختر "Transceiver" لتمكين إرسال واستقبال SMS عبر اتصال واحد.
- الإعدادات المتقدمة: قم بتمكين "Connect automatically on startup" لإعادة الاتصال بسلاسة وتحقق من "Send keepalive packets" للحفاظ على الاتصال.
- تمكين التسجيل: في علامة التبويب "Advanced"، قم بتمكين "Log Communication Events" لتسجيل PDUs لـ SMPP لأغراض التصحيح.
- حفظ والتوصيل: انقر على "OK" لحفظ التكوين، ثم انقر على "Connect" لبدء الاتصال.
تجهز هذه الإعدادات Ozeki SMS Gateway لإنشاء اتصال SMPP API باستخدام PDU bind_transceiver.
2. PDU bind_transceiver
PDU bind_transceiver هو أول PDU يتم إرساله بواسطة عميل SMPP للمصادقة وإنشاء اتصال مع SMSC. فهو يمكّن من إرسال واستقبال رسائل SMS عبر اتصال TCP/IP واحد، مما يجعله مثاليًا لمعظم تطبيقات SMPP API.
هيكل PDU bind_transceiver
طول الأمر: 4 بايت (الطول الكلي لـ PDU) معرف الأمر: 0x00000009 (bind_transceiver) حالة الأمر: 0x00000000 (يتم تعيينه على 0 للطلبات) رقم التسلسل: معرف فريد لـ PDU معرف النظام: اسم المستخدم للمصادقة (مثال: "smppuser") كلمة المرور: كلمة المرور للمصادقة (مثال: "password123") نوع النظام: اختياري، غالبًا ما يكون "SMPP" إصدار الواجهة: إصدار SMPP (مثال: 0x34 لـ v3.4) نطاق العناوين: اختياري، لاستقبال الرسائل من أرقام محددة
مثال PDU bind_transceiver (ست عشري):
0000002F 00000009 00000000 00000001 736D70707573657200 70617373776F726431323300 534D505000 34 00
شرح:
- طول الأمر (0000002F): الطول الكلي لـ PDU (47 بايت).
- معرف الأمر (00000009): يحدد PDU كـ bind_transceiver.
- حالة الأمر (00000000): يتم تعيينه على 0 للطلب.
- رقم التسلسل (00000001): معرف فريد لتتبع PDU.
- معرف النظام (736D70707573657200): ASCII لـ "smppuser" متبوعًا بمُنهي فارغ.
- كلمة المرور (70617373776F726431323300): ASCII لـ "password123" متبوعًا بمُنهي فارغ.
- نوع النظام (534D505000): ASCII لـ "SMPP" متبوعًا بمُنهي فارغ.
- إصدار الواجهة (34): يشير إلى SMPP v3.4.
- نطاق العناوين (00): فارغ، لأنه اختياري.
عند استلام PDU bind_transceiver، يقوم SMSC بالتحقق من بيانات الاعتماد. إذا نجحت العملية، فإنه يستجيب بـ PDU bind_transceiver_resp بحالة أمر 0x00000000، مما يشير إلى اتصال ناجح. يقوم Ozeki SMS Gateway بتسجيل هذا التفاعل، والذي يمكن عرضه في سجل "Communication Events".
الحفاظ على اتصال SMPP API
بمجرد إنشاء الاتصال، يجب الحفاظ عليه لضمان استقبال مستمر لرسائل SMS. يستخدم بروتوكول SMPP PDU enquire_link للتحقق من حالة الاتصال ومنع انقطاع الاتصال بسبب عدم النشاط.
PDU enquire_link
PDU enquire_link هو رسالة خفيفة الوزن يتم إرسالها بشكل دوري بواسطة عميل SMPP إلى SMSC لتأكيد أن الاتصال نشط. هذا مهم بشكل خاص للحفاظ على الاتصالات طويلة الأمد، حيث قد تقوم الخوادم الوكيلة أو SMSCs بإنهاء الاتصالات الخاملة.
هيكل PDU enquire_link
طول الأمر: 0x00000010 (16 بايت) معرف الأمر: 0x00000015 (enquire_link) حالة الأمر: 0x00000000 (يتم تعيينه على 0 للطلبات) رقم التسلسل: معرف فريد لـ PDU
مثال PDU enquire_link (ست عشري):
00000010 00000015 00000000 00000002
شرح:
- طول الأمر (00000010): الطول الكلي (16 بايت).
- معرف الأمر (00000015): يحدد PDU كـ enquire_link.
- حالة الأمر (00000000): يتم تعيينه على 0 للطلب.
- رقم التسلسل (00000002): معرف فريد لتتبع PDU.
يستجيب SMSC بـ PDU enquire_link_resp، مؤكدًا حالة الاتصال. في Ozeki SMS Gateway، يؤدي تمكين خيار "Send keepalive packets" في علامة التبويب "Communication" إلى ضمان إرسال PDUs enquire_link تلقائيًا على فترات منتظمة (مثال: كل 30 ثانية). هذا الإعداد مهم للحفاظ على اتصال SMPP API مستقر، خاصة عند استقبال رسائل SMS بشكل متقطع.
استقبال رسائل SMS باستخدام واجهة برمجة تطبيقات SMPP
بمجرد إنشاء الاتصال والحفاظ عليه، يمكن لعميل واجهة برمجة تطبيقات SMPP استقبال رسائل SMS عبر وحدة بيانات البروتوكول (PDU) deliver_sm. يتم إرسال هذه الوحدة من قبل مركز خدمة الرسائل القصيرة (SMSC) إلى العميل عند توفر رسالة SMS واردة أو تقرير تسليم.
وحدة بيانات البروتوكول deliver_sm
تحمل وحدة بيانات البروتوكول deliver_sm محتوى رسالة SMS واردة أو تقرير تسليم. لاستقبال رسائل SMS، تحتوي الوحدة على رقم هاتف المرسل، ورقم المستلم (الرقم الافتراضي المخصص من قبل المزود)، ونص الرسالة.
هيكل وحدة بيانات البروتوكول deliver_sm
طول الأمر: متغير (يعتمد على طول الرسالة) معرف الأمر: 0x00000005 (deliver_sm) حالة الأمر: 0x00000000 (يتم تعيينه إلى 0 للطلبات) رقم التسلسل: معرف فريد للوحدة نوع الخدمة: اختياري، غالبًا ما يكون فارغًا نوع رقم عنوان المصدر: نوع رقم المرسل مؤشر خطة ترقيم عنوان المصدر: مؤشر خطة ترقيم المرسل عنوان المصدر: رقم هاتف المرسل (مثال: "+1234567890") نوع رقم عنوان الوجهة: نوع رقم المستلم مؤشر خطة ترقيم عنوان الوجهة: مؤشر خطة ترقيم المستلم عنوان الوجهة: رقم هاتف المستلم (مثال: رقم افتراضي) فئة ESM: نوع الرسالة (مثال: 0x04 لـ SMS) ترميز البيانات: ترميز الأحرف (مثال: 0x00 لـ GSM 7-bit) الرسالة القصيرة: نص الرسالة (حتى 160 حرفًا لـ GSM)
مثال لوحدة بيانات البروتوكول deliver_sm (بالنظام الست عشري):
0000005F 00000005 00000000 00000003 00 01 01 2B3132333435363738393000 01 01 2B3938373635343332313000 00 00 00 00 00 48656C6C6F2C207468697320697320616E20534D5321
شرح:
- طول الأمر (0000005F): الطول الإجمالي (95 بايت).
- معرف الأمر (00000005): يحدد الوحدة كـ deliver_sm.
- حالة الأمر (00000000): يتم تعيينه إلى 0 للطلب.
- رقم التسلسل (00000003): معرف فريد لتتبع الوحدة.
- نوع الخدمة (00): فارغ، لأنه اختياري.
- نوع رقم عنوان المصدر (01): رقم دولي.
- مؤشر خطة ترقيم عنوان المصدر (01): خطة ترقيم ISDN/هاتف.
- عنوان المصدر (2B3132333435363738393000): ASCII لـ "+1234567890".
- نوع رقم عنوان الوجهة (01): رقم دولي.
- مؤشر خطة ترقيم عنوان الوجهة (01): خطة ترقيم ISDN/هاتف.
- عنوان الوجهة (2B3938373635343332313000): ASCII لـ "+9876543210".
- فئة ESM (00): تشير إلى رسالة SMS قياسية.
- ترميز البيانات (00): ترميز GSM 7-bit.
- الرسالة القصيرة (48656C6C6F2C207468697320697320616E20534D5321): ASCII لـ "Hello, this is an SMS!".
عند استقبال وحدة بيانات البروتوكول deliver_sm، تقوم بوابة Ozeki SMS بمعالجة الرسالة وتوجيهها إلى التطبيق أو قاعدة البيانات المكونة. يجب على العميل الرد بوحدة بيانات البروتوكول deliver_sm_resp لتأكيد الاستلام، مما يضمن تسليمًا موثوقًا. في Ozeki، يتم التعامل مع هذا الرد تلقائيًا، وتسجل الرسالة في لوحة "الرسائل" أو تخزن في قاعدة البيانات إذا تم تكوينها.
تكوين بوابة Ozeki SMS لاستقبال رسائل SMS
لضمان قدرة بوابة Ozeki SMS على استقبال رسائل SMS:
- إعداد الرقم الافتراضي: تعاون مع مزود خدمة الرسائل القصيرة لتعيين رقم افتراضي (IMSI) لاستقبال رسائل SMS. يتم تحديد هذا الرقم في حقل "نطاق العناوين" أثناء التكوين.
- تكامل قاعدة البيانات: قم بتكوين Ozeki لتخزين الرسائل الواردة في قاعدة بيانات عن طريق تعديل عبارة SQL SELECT في تكوين "مستخدم قاعدة البيانات" (مثال: "SELECT id, sender, receiver, msg, msgtype FROM ozekimessagein").
- التسجيل: قم بتمكين تسجيل وحدات بيانات البروتوكول SMPP لمراقبة وحدات deliver_sm الواردة لأغراض تصحيح الأخطاء.
بمجرد التكوين، يتم توجيه رسائل SMS الواردة تلقائيًا إلى التطبيق أو قاعدة البيانات المحددة، مما يجعل بوابة Ozeki SMS منصة قوية لاستقبال رسائل SMS بناءً على واجهة برمجة تطبيقات SMPP.
إنهاء اتصال واجهة برمجة تطبيقات SMPP
عندما لا تكون جلسة واجهة برمجة تطبيقات SMPP مطلوبة بعد الآن، يرسل العميل وحدة بيانات البروتوكول unbind لإنهاء الاتصال بشكل سلس.
وحدة بيانات البروتوكول unbind
تشير وحدة بيانات البروتوكول unbind إلى مركز خدمة الرسائل القصيرة (SMSC) لإغلاق جلسة SMPP.
هيكل وحدة بيانات البروتوكول unbind
طول الأمر: 0x00000010 (16 بايت) معرف الأمر: 0x00000006 (unbind) حالة الأمر: 0x00000000 (يتم تعيينه إلى 0 للطلبات) رقم التسلسل: معرف فريد للوحدة
مثال لوحدة بيانات البروتوكول unbind (بالنظام الست عشري):
00000010 00000006 00000000 00000004
شرح:
- طول الأمر (00000010): الطول الإجمالي (16 بايت).
- معرف الأمر (00000006): يحدد الوحدة كـ unbind.
- حالة الأمر (00000000): يتم تعيينه إلى 0 للطلب.
- رقم التسلسل (00000004): معرف فريد لتتبع الوحدة.
يستجيب مركز خدمة الرسائل القصيرة (SMSC) بوحدة بيانات البروتوكول unbind_resp، مؤكدًا إنهاء الجلسة. في بوابة Ozeki SMS، يمكنك بدء ذلك بالنقر على "قطع الاتصال" في لوحة "الاتصالات".
أفضل الممارسات لمستخدمي واجهة برمجة تطبيقات SMPP
لتحسين تنفيذ واجهة برمجة تطبيقات SMPP مع بوابة Ozeki SMS لاستقبال رسائل SMS:
- تمكين حزم Keepalive: تأكد من تمكين خيار "إرسال حزم keepalive" للحفاظ على اتصال مستقر.
- مراقبة السجلات: تحقق بانتظام من سجلات وحدات بيانات البروتوكول SMPP لاستكشاف المشكلات المتعلقة بوحدات bind_transceiver، أو enquire_link، أو deliver_sm.
- استخدام وضع Transceiver: يُفضل استخدام وضع transceiver للكفاءة، حيث يدعم الإرسال والاستقبال عبر اتصال واحد.
- تأمين الاتصالات: إذا كان مزود الخدمة يدعم ذلك، استخدم SMPPS (SMPP عبر SSL/TLS) للاتصال المشفر.
- معالجة تقارير التسليم: قم بتكوين Ozeki لمعالجة وحدات deliver_sm التي تحتوي على تقارير تسليم لتتبع حالة الرسالة.
الختام
يتضمن استقبال رسائل SMS باستخدام واجهة برمجة تطبيقات SMPP مع بوابة Ozeki للرسائل القصيرة إنشاء اتصال باستخدام PDU من نوع bind_transceiver، والحفاظ عليه باستخدام PDU من نوع enquire_link، ومعالجة الرسائل الواردة عبر PDU من نوع deliver_sm. من خلال فهم هذه الـ PDUs وتكوين بوابة Ozeki للرسائل القصيرة بشكل مناسب، يمكن للمطورين بناء تطبيقات رسائل قصيرة موثوقة وعالية الأداء. توفر واجهة برمجة تطبيقات SMPP مرونة كبيرة بينما تقدم Ozeki تنفيذًا قويًا، مما يجعلها خيارًا ممتازًا للشركات التي تحتاج إلى حلول رسائل قصيرة قابلة للتوسع. لمزيد من التفاصيل، يُرجى الرجوع إلى وثائق بوابة Ozeki للرسائل القصيرة أو الاتصال بمزود خدمة الرسائل القصيرة للحصول على معلمات التكوين المحددة.
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