كيفية إرسال رسائل SMS عبر واجهة برمجة تطبيقات SMPP باستخدام Python
تعد واجهة برمجة تطبيقات SMPP (Short Message Peer-to-Peer) بروتوكولًا قويًا لتبادل رسائل SMS بين كيانات الرسائل القصيرة الخارجية (ESMEs) ومراكز خدمة الرسائل القصيرة (SMSCs). بالنسبة للمطورين الذين يستخدمون بوابة Ozeki SMS، فإن استخدام واجهة برمجة تطبيقات SMPP مع Python يتيح تكاملًا سلسًا لرسائل SMS في التطبيقات. يوفر هذا الدليل الشامل تعليمات خطوة بخطوة، وأمثلة عملية لأكواد Python، وأفضل الممارسات لإنشاء اتصال بواجهة برمجة تطبيقات SMPP وصيانته واستخدامه لإرسال رسائل SMS بكفاءة.
لماذا تستخدم Python مع واجهة برمجة تطبيقات SMPP لإرسال رسائل SMS؟
تمثل بساطة Python ومكتباتها القوية، مثل smpplib
، خيارًا مثاليًا للتكامل مع واجهة برمجة تطبيقات SMPP. يسمح بروتوكول SMPP بتسليم رسائل SMS عالية الأداء، وتقارير التسليم في الوقت الفعلي، وإدارة اتصالات موثوقة. من خلال الجمع بين Python وواجهة برمجة تطبيقات SMPP، يمكن للمطورين إنشاء حلول قابلة للتوسع لرسائل SMS لتطبيقات مثل الإشعارات، وحملات التسويق، أو المصادقة الثنائية (2FA).
كيفية إرسال رسائل SMS عبر واجهة برمجة تطبيقات SMPP باستخدام Python (خطوات سريعة)
- التحقق من بيانات اعتماد SMPP: تأكد من صحة المضيف، والمنفذ، واسم المستخدم، وكلمة المرور لمستخدم SMPP في بوابة Ozeki SMS.
- كتابة وتنفيذ كود Python: استخدم مكتبة
smpplib
لإنشاء سكريبت للاتصال بخادم SMPP وإرسال رسائل SMS. - التحقق من النتائج: تأكد من نجاح إرسال الرسائل من خلال سجلات واجهة بوابة Ozeki SMS.
كيفية إرسال رسائل SMS عبر واجهة برمجة تطبيقات SMPP باستخدام Python (فيديو تعليمي)
شاهد هذا الفيديو التعليمي خطوة بخطوة لتعلم كيفية إرسال رسائل SMS باستخدام Python وواجهة برمجة تطبيقات SMPP مع بوابة Ozeki SMS. يغطي الفيديو إعداد مستخدم SMPP، والاتصال بمكتبة smpplib
، وإرسال الرسائل، والحفاظ على الاتصالات، ومعالجة تقارير التسليم.
دليل خطوة بخطوة لإرسال رسائل SMS باستخدام Python وواجهة برمجة تطبيقات SMPP
الخطوة 1: حدد مستخدم SMPP الخاص بك
في واجهة بوابة Ozeki SMS، انتقل إلى قسم "المستخدمون والتطبيقات". حدد أو أنشئ مستخدم SMPP لإجراء اتصال من سكريبت Python الخاص بك. سيقوم هذا المستخدم بمصادقة تطبيقك مع خادم SMPP.
الخطوة 2: استرجاع تفاصيل الاتصال
بعد تحديد مستخدم SMPP الخاص بك، انتقل إلى علامة التبويب "مساعدة" في واجهة بوابة Ozeki SMS. هنا، ستجد تفاصيل الاتصال الأساسية، بما في ذلك عنوان IP، ورقم المنفذ، واسم المستخدم، وكلمة المرور. تعد هذه البيانات الأساسية ضرورية لتكوين سكريبت Python الخاص بك للاتصال بخادم SMPP.
الخطوة 3: كتابة كود SMPP في Python
افتح بيئة تطوير Python المفضلة لديك أو المحرر والصق كود اتصال SMPP المقدم أدناه. يستخدم هذا الكود مكتبة smpplib
لإجراء اتصال مع بوابة Ozeki SMS وإعداد البيئة لإرسال رسائل SMS.
الخطوة 4: تحديث بيانات اعتماد SMPP
استبدل القيم النائبة في كود Python (المضيف، المنفذ، اسم المستخدم، كلمة المرور، وأرقام الهواتف) ببيانات اعتماد SMPP الفعلية ورقم هاتف المستلم. هذا يضمن اتصال السكريبت بخادم SMPP الصحيح وإرسال الرسائل إلى المستلم المقصود.
الخطوة 5: التحقق من نجاح الاتصال
شغل سكريبت Python الخاص بك. إذا تم تكوينه بشكل صحيح، سجلت واجهة بوابة Ozeki SMS اتصالًا ناجحًا لمستخدم SMPP الخاص بك. هذا يؤكد أن سكريبت Python الخاص بك جاهز لإرسال رسائل SMS عبر واجهة برمجة تطبيقات SMPP.
كيفية إنشاء اتصال SMPP API في بايثون لرسائل SMS
لإرسال رسائل SMS باستخدام SMPP API، يجب عليك أولاً إعداد مستخدم SMPP
في Ozeki SMS Gateway وربط عميل بايثون الخاص بك بـ خادم SMPP.
تسهل مكتبة smpplib
هذه العملية من خلال التعامل مع تفاصيل البروتوكول منخفضة المستوى.
فيما يلي مثال على كود بايثون لإنشاء اتصال SMPP:
import smpplib # معلمات اتصال SMPP HOST = 'your.ozeki.server' PORT = 2775 SYSTEM_ID = 'your_username' PASSWORD = 'your_password' # تهيئة عميل SMPP client = smpplib.client.Client(HOST, PORT) # الربط كمرسل لإرسال SMS client.connect() client.bind_transmitter( system_id=SYSTEM_ID, password=PASSWORD, ) print("تم الاتصال بنجاح بخادم SMPP باستخدام بايثون")
وحدات بيانات البروتوكول الرئيسية (PDUs) في SMPP
يعتمد بروتوكول SMPP على وحدات بيانات البروتوكول (PDUs) لإدارة الاتصالات و الرسائل. فيما يلي جدول يلخص وحدات PDU الرئيسية المستخدمة في بايثون لدمج SMPP API:
PDU | طريقة بايثون | الغرض |
---|---|---|
bind_transmitter |
client.bind_transmitter() |
يبدأ اتصالاً لإرسال رسائل SMS |
bind_receiver |
client.bind_receiver() |
يؤسس اتصالاً لاستقبال رسائل SMS |
bind_transceiver |
client.bind_transceiver() |
يمكن من إرسال واستقبال رسائل SMS في كلا الاتجاهين |
الحفاظ على اتصال SMPP API مستقر في بايثون لإرسال SMS
تتطلب اتصالات SMPP إشارات "حيوية" دورية لمنع انقطاع الاتصال.
يتم إرسال وحدة PDU enquire_link
كل 30 ثانية للحفاظ على الاتصال.
فيما يلي مثال على بايثون باستخدام نهج الخيوط لإرسال إشارات الحيوية:
import time import threading def send_enquire_link(): while True: try: client.enquire_link() print("تم إرسال enquire_link PDU للحفاظ على اتصال SMPP") except Exception as e: print(f"خطأ في إرسال enquire_link: {e}") time.sleep(30) # إرسال كل 30 ثانية # بدء خيط الحيوية keepalive_thread = threading.Thread(target=send_enquire_link) keepalive_thread.daemon = True keepalive_thread.start()
إرسال رسائل SMS باستخدام Python عبر واجهة برمجة تطبيقات SMPP
بمجرد إنشاء الاتصال، يمكنك إرسال رسائل SMS باستخدام وحدة submit_sm
PDU. يوضح كود Python التالي كيفية إرسال رسالة SMS والتعامل مع
الاستجابة:
def send_sms(source_addr, destination_addr, message): try: # إرسال وحدة submit_sm PDU pdu = client.send_message( source_addr_ton=smpplib.consts.SMPP_TON_INTL, source_addr_npi=smpplib.consts.SMPP_NPI_ISDN, source_addr=source_addr, dest_addr_ton=smpplib.consts.SMPP_TON_INTL, dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN, destination_addr=destination_addr, short_message=message, data_coding=0x00, # ترميز GSM 7-bit ) print(f"تم إرسال الرسالة بنجاح، معرف الرسالة: {pdu.message_id}") except smpplib.exceptions.PDUError as e: print(f"خطأ في وحدة SMPP PDU: {e}") except Exception as e: print(f"حدث خطأ أثناء إرسال الرسالة: {e}") # مثال للاستخدام send_sms( source_addr="12345", destination_addr="+1234567890", message="مرحبًا من عميل SMPP باستخدام Python!" )
معالجة تقارير تسليم الرسائل في Python
لتتبع حالة تسليم رسائل SMS المرسلة، يمكنك معالجة تقارير التسليم
باستخدام وحدة deliver_sm
PDU. فيما يلي مثال باستخدام Python لمعالجة
تقارير التسليم:
def handle_delivery_report(pdu): print(f"تم استلام تقرير تسليم للرسالة {pdu.receipted_message_id}") print(f"الحالة: {pdu.message_state}") # إعداد معالج تقارير التسليم client.set_message_received_handler(lambda pdu: handle_delivery_report(pdu))
مثال كامل لعميل SMPP API باستخدام Python لإرسال رسائل SMS
فيما يلي نموذج كامل وجاهز للإنتاج باستخدام Python يتكامل مع واجهة برمجة تطبيقات SMPP لإرسال رسائل SMS، والحفاظ على اتصال مستقر، ومعالجة تقارير التسليم:
import smpplib import threading import time class SMPPClient: def __init__(self, host, port, system_id, password): self.client = smpplib.client.Client(host, port) self.client.set_message_received_handler(self.handle_message) # الاتصال بخادم SMPP self.client.connect() self.client.bind_transceiver( system_id=system_id, password=password, ) # بدء مؤشر الحفاظ على الاتصال self.start_keepalive() def start_keepalive(self): def _keepalive(): while True: try: self.client.enquire_link() print("تم إرسال إشارة الحفاظ على الاتصال") except Exception: try: self.client.connect() self.client.bind_transceiver( system_id=system_id, password=password, ) print("تم إعادة الاتصال بخادم SMPP") except Exception as e: print(f"فشلت إعادة الاتصال: {e}") time.sleep(30) thread = threading.Thread(target=_keepalive) thread.daemon = True thread.start() def send_sms(self, from_addr, to_addr, message): try: return self.client.send_message( source_addr=from_addr, destination_addr=to_addr, short_message=message, ) except Exception as e: print(f"فشل إرسال الرسالة: {e}") return None def handle_message(self, pdu): if pdu.command == "deliver_sm": print(f"تقرير التسليم: {pdu.receipted_message_id} - {pdu.message_state}") else: print(f"تم استلام رسالة: {pdu.short_message}") # مثال للاستخدام if __name__ == "__main__": client = SMPPClient( host="your.ozeki.server", port=2775, system_id="your_username", password="your_password" ) # إرسال رسالة SMS client.send_sms( from_addr="12345", to_addr="+1234567890", message="مرحبًا من عميل SMPP باستخدام Python!" ) # إبقاء البرنامج قيد التشغيل while True: time.sleep(1)أفضل الممارسات لدمج واجهة برمجة تطبيقات SMPP مع Python
- معالجة الأخطاء: قم دائمًا بتنفيذ معالجة قوية للاستثناءات لإدارة فشل الاتصال، وأخطاء PDU، وانتهاء المهلة.
- إعادة إنشاء الاتصال: ضمّن منطقًا لإعادة الاتصال تلقائيًا في حالة انقطاع اتصال SMPP.
- التسجيل: سجل حالة الاتصال، والرسائل المرسلة، وتقارير التسليم لأغراض التصحيح والمراقبة.
- الأمان: قم بتخزين بيانات اعتماد SMPP بشكل آمن، باستخدام متغيرات البيئة أو ملف التكوين.
- القابلية للتوسع: بالنسبة لتطبيقات SMS عالية الحجم، فكر في استخدام مكتبات غير متزامنة أو تجميع الاتصالات.
قدم هذا الدليل شرحًا تفصيليًا لدمج
واجهة برمجة تطبيقات SMPP مع Python باستخدام بوابة Ozeki SMS.
من خلال الاستفادة من مكتبة smpplib
، يمكن للمطورين إنشاء اتصالات SMPP موثوقة،
وإرسال رسائل SMS، ومعالجة تقارير التسليم بسهولة. تضمن
أمثلة كود Python والممارسات المقدمة تطبيقات رسائل 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