SMS API أم SMPP: أي طريقة ربط تناسب نشاطك؟
مقارنة بين SMS API وSMPP: الجلسات والـ bind، والنوافذ، والإنتاجية، وتقارير التسليم، والترميز، وأمان TLS، والجهد التشغيلي، وخطوات الانتقال.
بقلم OmniChannels.ai Editorial Team · مراجعة BroadNet Messaging Solutions Team
التكامل
الإجابة المختصرة
استخدم REST SMS API لحركة التطبيقات مثل رموز OTP والتنبيهات والإشعارات، وكلما احتجت أيضًا إلى WhatsApp أو RCS أو قنوات أخرى، فهي طلبات HTTPS عديمة الحالة وسهلة التأمين وسريعة التطوير. واستخدم SMPP عندما ترسل حجمًا كبيرًا ومستمرًا من رسائل SMS، أو تشغّل عملاء SMPP أصلًا، أو تعيد بيع خدمة SMS، لأن الـ bind الدائم مع آلية النوافذ يُبقي رسائل كثيرة قيد الإرسال في آن واحد. وتجمع شركات كثيرة بين الاثنين على حساب واحد.
في هذه الصفحة
- ما الفرق بين SMS API وSMPP؟
- كيف يعمل REST SMS API؟
- كيف يعمل SMPP؟
- ما آلية النوافذ في SMPP ولماذا تهم؟
- كيف تختلف تقارير التسليم؟
- كيف يُعالَج الترميز؟
- كيف تُقارن نماذج الأمان؟
- ما التكلفة التشغيلية لكل خيار؟
- متى تستخدم كل خيار؟
- كيف يبدو الإعداد الهجين؟
- كيف تنتقل من SMS API إلى SMPP؟
- مثال تطبيقي: متجر إقليمي يضيف SMPP لكشوف الحساب
- أخطاء شائعة
- كيف تساعدك OmniChannels.ai
أهم النقاط
- يرسل REST SMS API كل رسالة في طلب HTTPS مستقل، بينما يُبقي SMPP جلسة طويلة الأمد تُسمّى bind ويتبادل عبرها وحدات PDU ثنائية.
- تعتمد إنتاجية SMPP على النوافذ (windowing): العميل الذي ينتظر كل submit_sm_resp قبل إرسال الرسالة التالية يهدر معظم سعة الاتصال.
- تصل حالات التسليم في REST إلى الـ webhook لديك، أما في SMPP فتصل تقارير التسليم على شكل deliver_sm عبر الجلسة نفسها ويجب الرد على كل منها.
- لا يتضمن SMPP v3.4 تشفيرًا مدمجًا، لذا ينبغي تشغيل الـ bind في بيئة الإنتاج عبر TLS ومن عناوين IP مصدر مسجّلة في قائمة السماح.
- يحمل SMPP رسائل SMS فقط، ولذلك يشيع على المدى الطويل تصميم هجين: REST للحركة متعددة القنوات وSMPP لرسائل SMS الجماعية.
هذا الدليل موجّه للمهندسين والقادة التقنيين الذين يقررون طريقة الربط مع مزوّد رسائل SMS: عبر HTTP/REST SMS API، أو عبر SMPP، أو بالاثنين معًا. ويشرح الفروق الحقيقية بينهما على مستوى البروتوكول وعلى مستوى التشغيل، لتختار الواجهة المناسبة لكل نوع من الحركة، وتخطط للانتقال إذا تجاوزت احتياجاتك خيارك الأول.
وللاطلاع على أنماط الربط بصورة أشمل، بما فيها الـ webhooks ومنع التكرار (idempotency)، راجع دليل ربط واجهات المراسلة البرمجية.
ما الفرق بين SMS API وSMPP؟
يرسل REST SMS API كل رسالة في طلب HTTPS منفصل ويعيد معرّف الرسالة. أما SMPP (Short Message Peer-to-Peer) فيُبقي جلسة واحدة طويلة الأمد وموثّقة مفتوحة، ويتبادل عبرها في الاتجاهين رسائل ثنائية تُسمّى PDU. صُمّم REST للبساطة، وصُمّم SMPP للحجم المستمر من رسائل SMS.
| REST SMS API | SMPP v3.4 | |
|---|---|---|
| النقل | طلب واستجابة عبر HTTPS | جلسة TCP دائمة، مغلّفة بـ TLS في بيئة الإنتاج |
| الحالة | عديم الحالة؛ كل طلب قائم بذاته | bind ذو حالة مع أرقام تسلسلية ورسائل إبقاء الاتصال |
| المصادقة | Bearer token في الترويسة | system_id وكلمة مرور داخل الـ bind، مع قائمة سماح لعناوين IP |
| القنوات | SMS، ومع واجهة متعددة القنوات: WhatsApp وRCS وغيرها | SMS فقط |
| نموذج الإنتاجية | طلبات في الثانية، مع نقاط إرسال جماعي | رسائل في الثانية لكل bind، وكثير منها قيد الإرسال عبر النوافذ |
| تقارير التسليم | webhook بصيغة JSON وحالات موحّدة | PDU من نوع deliver_sm على الجلسة، بصيغة تقرير نصية |
| الترميز | حقل مثل messageType (TEXT أو UNICODE) |
data_coding (0 لـ GSM-7 و8 لـ UCS-2)، وUDH للرسائل الطويلة |
| الأدوات | أي عميل HTTP، وSDKs، وOpenAPI | مكتبة عميل SMPP |
| الجهد التشغيلي | منخفض | متوسط: الاتصالات، وإعادة الاتصال، والنوافذ، والتقارير |
| الأنسب لـ | التطبيقات وOTP والإشعارات والقنوات المتعددة | المجمّعين والموزّعين والمرسلين بأحجام كبيرة ممن لديهم خبرة في SMPP |
كيف يعمل REST SMS API؟
ترسل طلب HTTPS من نوع POST يحمل token ومحتوى JSON، فيرد المزوّد بمعرّف. كل طلب مستقل، لذا يمكنك الإرسال من أي خادم أو دالة أو حاوية دون إدارة اتصال.
يبدو الإرسال المعتاد عبر واجهتنا هكذا:
curl -X POST https://api.broadnet.me/sms/sendSms \
-H "Authorization: Bearer $BROADNET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"senderId": "OmniDemo",
"destinationNumber": "971500000000",
"message": "Your OmniDemo code is 482913",
"messageType": "TEXT"
}'
تكون الاستجابة 200 OK مع معرّف الرسالة كنص عادي. ثم تصل الحالة النهائية لاحقًا إلى الـ webhook لديك بإحدى القيم SUBMITTED أو SENT أو DELIVERED أو FAILED أو REJECTED. وتجد أسماء الحقول والخيارات في مرجع SMS API.
مزايا REST:
- أدوات مألوفة: أي لغة برمجة، وأي عميل HTTP، ورموز حالة قياسية كما يعرّفها RFC 9110.
- تأمين سهل: TLS في كل مكان وtoken في ترويسة
Authorization. - إرسال جماعي دون اتصالات: ارفع ملف المستلمين في طلب واحد بدل فتح جلسة.
- واجهة واحدة لقنوات كثيرة: النمط نفسه يرسل قوالب WhatsApp أو بطاقات RCS.
حدود REST: كل رسالة، أو كل دفعة، تكلّف رحلة HTTP ذهابًا وإيابًا، وستصطدم بحد الطلبات في الثانية قبل أن تصل إلى أي حد لدى المشغّل. وفي معظم حركة التطبيقات لا يشكّل ذلك أي مشكلة.
كيف يعمل SMPP؟
SMPP بروتوكول ثنائي تعرّفه مواصفة SMPP v3.4 التي نشرها منتدى مطوري SMPP (الذي أصبح لاحقًا SMS Forum)، ولا يزال الإصدار الأوسع انتشارًا. يتصل نظامك، المسمّى ESME (External Short Message Entity)، بمركز SMSC (Short Message Service Centre) لدى المزوّد ويفتح جلسة تُسمّى bind.
أنواع الـ bind
- Transmitter (TX) باستخدام
bind_transmitter: لإرسال الرسائل فقط. - Receiver (RX) باستخدام
bind_receiver: لاستقبال تقارير التسليم والرسائل الواردة فقط. - Transceiver (TRX) باستخدام
bind_transceiver: الاثنان معًا في جلسة واحدة، وهو الخيار المعتاد.
دورة حياة الجلسة
- افتح اتصال TLS بالمضيف والمنفذ اللذين يزوّدك بهما المزوّد.
- أرسل
bind_transceiverمعsystem_idوكلمة المرور، وانتظر استجابة قيمةcommand_statusفيها 0. - أرسل الرسائل عبر
submit_sm، وكلsubmit_sm_respيعيدmessage_id. - استقبل تقارير التسليم على شكل
deliver_smورد على كل منها بـdeliver_sm_resp. - أرسل
enquire_linkدوريًا في فترات الخمول ليعرف الطرفان أن الجلسة ما زالت حية. - أغلق الجلسة بـ
unbindوانتظرunbind_resp.
تحمل كل PDU رقمًا تسلسليًا، وتحمل الاستجابات الرقم نفسه، وبهذه الطريقة تطابق كل submit_sm_resp مع الرسالة التي أرسلتها. وتغطي وثائق SMPP لدينا كل خطوة مع إعداداتنا.
ما آلية النوافذ في SMPP ولماذا تهم؟
تعني النوافذ (windowing) إرسال عدة PDU من نوع submit_sm قبل عودة استجاباتها. وعدد وحدات PDU غير المؤكَّدة المسموح بها قيد الإرسال هو حجم النافذة. وهذا هو السبب الرئيسي في أن SMPP يحافظ على إنتاجية أعلى من HTTP الذي يرسل طلبًا واحدًا في كل مرة.
بنافذة حجمها 1، يرسل نظامك رسالة واحدة وينتظر رحلة ذهاب وإياب كاملة حتى تصل الاستجابة، ثم يرسل التالية. هنا يحدّ زمن الاستجابة في الشبكة من الإنتاجية، لا المعدل المتفق عليه. أما بنافذة أكبر فيبقى الاتصال مشغولًا بينما تصل الاستجابات.
قواعد عملية:
- استخدم حجم النافذة الذي يتفق عليه المزوّد معك ولا تتجاوزه أبدًا، فقد تُرفض وحدات PDU الزائدة.
- التزم بالمعدل المتفق عليه لكل bind. وإذا تلقيت
ESME_RTHROTTLEDفخفّض الوتيرة وأعد المحاولة مع تأخير متزايد. - تتبّع الأرقام التسلسلية المعلّقة حتى لا يضيع عند انقطاع الاتصال أثر الرسائل التي قُبلت.
- توسّع بزيادة عدد جلسات الـ bind ضمن العدد المتفق عليه لحسابك، لا بتكبير النافذة بلا حدود.
الحدود الافتراضية لواجهة REST لدينا ولجلسات SMPP مدرجة في الأخطاء والحدود، وتُؤكَّد حدود حسابك عند تفعيل الوصول.
كيف تختلف تقارير التسليم؟
في REST، يرسل المزوّد حدث JSON إلى الـ webhook لديك. وفي SMPP، يصل التقرير على شكل PDU من نوع deliver_sm عبر الجلسة، مع تفعيل بت التقرير في esm_class. وكلاهما غير متزامن؛ فلا 200 OK ولا submit_sm_resp يعني أن الهاتف استلم الرسالة.
تقدّم مواصفة SMPP v3.4 صيغة نص التقرير كمثال وتترك الصيغة الدقيقة لمورّد SMSC، لكن معظم المزوّدين يتبعونها:
id:2603121407537573731 sub:001 dlvrd:001 submit date:2610100914 done date:2610100915 stat:DELIVRD err:000 text:Your OmniDemo code
إذا كانت أنظمتك تستهلك الواجهتين، فاربط حالات SMPP بنموذج حالات واحد. ومن أمثلة الربط المعتادة:
stat في SMPP |
المعنى | الحالة الموحّدة |
|---|---|---|
ACCEPTD |
مقبولة، حالة وسيطة | SENT |
DELIVRD |
سُلّمت إلى الهاتف | DELIVERED |
UNDELIV |
تعذّر تسليمها | FAILED |
EXPIRED |
انتهت فترة الصلاحية | FAILED |
REJECTD |
مرفوضة، مثلًا بسبب اسم مرسل محجوب | REJECTED |
DELETED |
حُذفت قبل التسليم | FAILED |
UNKNOWN |
لا معلومات عن الحالة | احتفظ بآخر حالة معروفة |
وهناك فرقان عمليان أهم من الصيغة:
- التأكيد. يجب أن يرد عميل SMPP على كل
deliver_sm. فالتقارير غير المؤكَّدة يُعاد إرسالها وقد تبطئ الـ bind. وللسبب نفسه يجب أن يرد معالج الـ webhook بسرعة برمز2xx. - الاستعادة. إذا انقطع اتصال عميل SMPP، تنتظر التقارير حتى الـ bind التالي أو قد تنتهي صلاحيتها في طابور المزوّد. أما في REST فقد يتيح المزوّد إعادة إرسال التقارير لفترة زمنية محددة. اسأل عن آلية كل منهما.
اقرأ المزيد عن معنى كل حالة في شرح حالات تسليم الرسائل.
كيف يُعالَج الترميز؟
على الواجهتين الاختيار بين GSM-7 وUnicode، وكلتاهما تقسّم الرسائل الطويلة إلى أجزاء. والفرق في الجهة التي تتولى العمل.
- REST: تضبط حقلًا مثل
messageTypeعلىTEXTأوUNICODE، وتتولى المنصة تقسيم الرسائل الطويلة. كما توفّر واجهتناPOST /sms/identifyلحساب الأحرف والأجزاء مسبقًا. - SMPP: تضبط
data_coding(0 لأبجدية GSM-7 الافتراضية و8 لـ UCS-2) وترمّز البايتات بنفسك. وفي الرسائل الطويلة إما أن تضيف User Data Header إلى كل جزء وتضبطesm_classعلى 0x40، أو ترسل النص كاملًا في حقلmessage_payloadإذا فعّله مزوّدك.
بحسب 3GPP TS 23.040، تحمل رسالة SMS الواحدة 140 ثُمانيًا: 160 حرفًا بترميز GSM-7 أو 70 حرفًا بترميز UCS-2، وتنخفض إلى 153 أو 67 لكل جزء عند إضافة الترويسة. ويكفي حرف عربي واحد أو رمز تعبيري واحد لتحويل الرسالة كلها إلى Unicode. وأخطاء الترميز هي أكثر أعطال ربط SMPP شيوعًا، لذا اختبر بنصوص عربية ورموز تعبيرية ونصوص طويلة. راجع دليل حدود الأحرف.
كيف تُقارن نماذج الأمان؟
يعتمد REST على TLS وbearer token مع كل طلب. أما SMPP v3.4 فلا يملك تشفيرًا خاصًا به ويرسل بيانات الاعتماد داخل الـ bind، لذا يعتمد على طبقة النقل وضوابط الشبكة المحيطة به.
في SMPP:
- استخدم TLS (يعرّف RFC 8446 الإصدار TLS 1.3) أو ربطًا خاصًا، ولا تستخدم SMPP غير المشفّر عبر الإنترنت العام أبدًا.
- سجّل عناوين IP المصدر بحيث لا تتمكن من فتح bind إلا خوادمك.
- احفظ
system_idوكلمة المرور كأسرار، منفصلة لكل بيئة، وغيّرها إن تعرّضت للكشف. - راقب إخفاقات الـ bind، فقد تدل على خطأ في الإعداد أو إساءة استخدام لبيانات الاعتماد.
في REST:
- أبقِ الـ token على الخوادم فقط، ولا تضعه أبدًا في تطبيقات الجوال أو شيفرة المتصفح.
- تجنّب واجهات HTTP القديمة التي تمرّر اسم المستخدم وكلمة المرور في الرابط، فينتهي بها الأمر في السجلات.
- احمِ الـ webhook باستخدام HTTPS ومسار يصعب تخمينه وتحقق صارم من محتوى الطلب.
ما التكلفة التشغيلية لكل خيار؟
لا يضيف REST عبئًا تشغيليًا يُذكر: إما أن تنجح الطلبات أو تعيد خطأ يمكنك إعادة المحاولة بعده. أما SMPP فيضيف مكوّنًا يعمل باستمرار يجب مراقبته وصيانته.
يحتاج عميل SMPP إلى:
- إدارة الاتصال، مع إعادة الاتصال بتأخير متزايد وعشوائية (jitter) بدل حلقة متلاحقة؛
- رسائل إبقاء الاتصال، واكتشاف الاتصالات الصامتة نصف المفتوحة؛
- التحكم في النافذة والمعدل لكل bind؛
- تتبّع الأرقام التسلسلية والمطابقة بعد الانقطاعات؛
- تأكيد استلام التقارير وتخزينها؛
- منطق الترميز ودمج الأجزاء؛
- مراقبة حالة الـ bind والإنتاجية وأخطاء التقييد وتأخر التقارير.
تتولى المكتبات مفتوحة المصدر الناضجة تفاصيل البروتوكول، لكن فريقك يبقى مسؤولًا عن السلوك المحيط بها، بما في ذلك أثناء نافذة صيانة لدى المزوّد في الثالثة فجرًا.
متى تستخدم كل خيار؟
استخدم REST ما لم يكن لديك سبب واضح لإضافة SMPP.
اختر REST SMS API عندما
- ترسل رموز OTP أو تنبيهات أو إشعارات أو حملات من تطبيقاتك؛
- تحتاج إلى WhatsApp أو RCS أو قنوات أخرى إلى جانب SMS؛
- تعمل منصتك على دوال serverless أو حاويات قصيرة العمر؛
- لا يملك فريقك خبرة في SMPP ولا حاجة إلى بنائها.
اختر SMPP عندما
- ترسل حجمًا كبيرًا ومستمرًا من رسائل SMS وبلغت حدود REST؛
- تشغّل أصلًا بوابة SMPP أو منصة مراسلة؛
- تعمل كمجمّع أو مشغّل أو موزّع يربط حركة SMS الخاصة بعملائه؛
- تحتاج إلى البروتوكول نفسه مع عدة مزوّدين في المنبع.
كيف يبدو الإعداد الهجين؟
تستخدم شركات كثيرة الاثنين على حساب واحد: REST للحركة متعددة القنوات وحركة التطبيقات، وSMPP لرسائل SMS الجماعية. والفخ هنا أن ينتهي بك الأمر بنموذجين للتسليم.
- وجّه الحركة بحسب حالة الاستخدام لا عشوائيًا: مثلًا رموز OTP وWhatsApp عبر REST، وكشوف الحساب الجماعية عبر SMPP.
- وحّد الحالات الواردة من الـ webhooks ومن
deliver_smفي جدول واحد مفتاحه معرّف الرسالة. - اعتمد سياسة واحدة لأسماء المرسل في الواجهتين، لأن التسجيلات تسري أيًّا كانت الواجهة المستخدمة.
- اجمع التقارير معًا حتى تظهر الحملة الموزعة على الواجهتين بنتيجة واحدة.
كيف تنتقل من SMS API إلى SMPP؟
انتقل تدريجيًا مع تشغيل الواجهتين معًا، وقِس النتائج قبل نقل الحجم.
- تأكد من الحاجة: وثّق الحجم أو الإنتاجية التي لا يلبيها REST.
- اطلب التجهيز: شارك الدول المستهدفة، وأسماء المرسل، وذروة الإنتاجية المتوقعة، وعناوين IP المصدر.
- اختر مكتبة عميل ناضجة في بيئتك التقنية وغلّفها بواجهة إرسال خاصة بك.
- ابنِ معالجة التقارير أولًا، مربوطة بنموذج الحالات نفسه المستخدم في الـ webhooks.
- اختبر الترميز: GSM-7، والعربية، والرموز التعبيرية، والرسائل متعددة الأجزاء على هواتف حقيقية.
- اختبر الأعطال: اقطع الاتصال أثناء الإرسال، وتسبّب في التقييد، وتحقق من المطابقة.
- شغّل بالتوازي: انقل نسبة صغيرة من نوع واحد من الحركة إلى SMPP وقارن التسليم والتقارير.
- انقل الحجم على مراحل، مع إبقاء REST مسارًا احتياطيًا.
فيما يلي مثال توضيحي لإعدادات الـ bind. المضيف والمنفذ والحدود قيم مؤقتة، والقيم الحقيقية تصلك مع بيانات الاعتماد عند التجهيز.
host: <provided with your bind>
port: <TLS port provided with your bind>
bind type: transceiver
system_id: <your system_id>
password: <your password>
system_type: (empty unless told otherwise)
interface_version: 0x34
source_addr_ton/npi: 5 / 0 (اسم مرسل أبجدي رقمي)
dest_addr_ton/npi: 1 / 1 (رقم دولي)
registered_delivery: 1 (طلب تقارير التسليم)
data_coding: 0 (GSM-7) or 8 (UCS-2)
enquire_link: every 30 seconds while idle
window: as agreed for your account
مثال تطبيقي: متجر إقليمي يضيف SMPP لكشوف الحساب
«سوق رفيق» (مثال افتراضي)، متجر إلكتروني يعمل في الإمارات ومصر والأردن، يرسل رموز OTP وتحديثات الطلبات عبر REST API، وقوالب WhatsApp عبر الواجهة نفسها. وقد نمت كشوف الحساب الشهرية التي يرسلها بالـ SMS إلى كامل قاعدة عملائه حتى صارت مهمة REST تستغرق وقتًا أطول مما تريده الإدارة.
- القرار: إبقاء OTP وتحديثات الطلبات وWhatsApp على REST، ونقل رسائل كشوف الحساب الشهرية إلى bind من نوع transceiver عبر SMPP.
- التجهيز: يسجّل الفريق عنواني IP مصدر، ويؤكد أسماء المرسل لكل دولة، ويتفق على الإنتاجية وعدد جلسات الـ bind.
- البناء: خدمة SMPP صغيرة تستخدم مكتبة مفتوحة المصدر، وتكتب التقارير في جدول الحالات نفسه الذي يستخدمه الـ webhook، وتوفّر واجهة الإرسال الداخلية نفسها المستخدمة في مسار REST.
- الاختبار: يُتحقق من أن كشوف الحساب العربية تُرسل بترميز UCS-2 مع دمج صحيح للأجزاء على عدة هواتف.
- الإطلاق: تنتقل دولة واحدة أولًا. وبعد مقارنة التسليم وتوقيت التقارير بخط الأساس في REST، تلحق بها الدولتان الأخريان، مع إبقاء REST مسارًا احتياطيًا.
أخطاء شائعة
- اختيار SMPP للوجاهة. إذا كان REST يلبي حجمك، فإن SMPP لا يضيف سوى العمل.
- التشغيل بنافذة حجمها 1 ثم لوم المزوّد على ضعف الإنتاجية.
- عدم تأكيد
deliver_sm، ما يؤدي إلى إعادة إرسال التقارير والتقييد. - إعادة الاتصال في حلقة متلاحقة بعد الانقطاع، وهو ما قد يبدو كهجوم.
- الخلط بين
short_messageوmessage_payloadفي PDU واحدة، ما يسبب أخطاء في الطول. - SMPP غير مشفّر عبر الإنترنت، ما يكشف بيانات الاعتماد والمحتوى.
- نموذجان للحالات في الإعداد الهجين، فتتعارض التقارير.
- الحدود: يصف هذا الدليل الممارسات الشائعة. أحجام النوافذ والمعدلات ومنافذ TLS وتفاصيل التقارير تختلف بحسب المزوّد والحساب، فتأكد منها أثناء التجهيز.
كيف تساعدك OmniChannels.ai
توفّر OmniChannels.ai الخيارين معًا. تستخدم واجهة REST على https://api.broadnet.me مصادقة Bearer token، وتغطي SMS إلى جانب WhatsApp وRCS وMessenger وInstagram وTelegram وEmail وPush، مع إرسال حالات التسليم إلى الـ webhook لديك بصيغة واحدة. ولرسائل SMS عالية الحجم، تُجهَّز جلسات SMPP 3.4 عبر TLS لكل حساب، مع قائمة سماح لعناوين IP المصدر، وتستخدم مسارات SMS نفسها عبر الربط المباشر بين BroadNet والمشغّلين. ويمكن للموزّعين وشركاء الجملة الحصول على جلسات bind مخصصة. ابدأ بـ وثائق SMPP أو دليل البدء السريع، أو اطّلع على نظرة عامة للمطورين.
الأسئلة الشائعة
هل SMPP أسرع من SMS API؟
يستطيع SMPP الحفاظ على إنتاجية أعلى لأن جلسة دائمة واحدة تحمل رسائل كثيرة قيد الإرسال دون طلب HTTP جديد لكل رسالة. أما في رمز OTP منفرد فنادرًا ما يُلحظ الفرق، لأن زمن التسليم لدى المشغّل هو العامل الغالب. والإنتاجية في الواجهتين تحددها حدود حسابك، فاطلب من مزوّدك الحدود الموثّقة بدل افتراض أن SMPP أسرع دائمًا.
هل يمكنني إرسال رسائل WhatsApp عبر SMPP؟
لا. SMPP بروتوكول مخصص لرسائل SMS وخدمات الرسائل القصيرة المرتبطة بها. أما WhatsApp وRCS وMessenger وInstagram والبريد الإلكتروني والإشعارات الفورية فتعمل عبر واجهات HTTP. إن احتجت إلى عدة قنوات فاستخدم REST API لها، وأضف SMPP لرسائل SMS عالية الحجم فقط عند الحاجة.
ما المقصود بـ SMPP bind؟
الـ bind جلسة SMPP موثّقة بين نظامك، ويُسمّى ESME، ومركز SMSC لدى المزوّد. تفتح اتصال TCP أو TLS ثم ترسل bind_transmitter أو bind_receiver أو bind_transceiver مع system_id وكلمة المرور. ويتيح bind من نوع transceiver إرسال الرسائل واستقبال تقارير التسليم في جلسة واحدة، وهو الخيار المعتاد.
هل SMPP آمن؟
لا يشفّر SMPP v3.4 الحركة بذاته، وتُرسل بيانات الاعتماد داخل طلب الـ bind. شغّل الـ bind في بيئة الإنتاج عبر TLS، واحصر الاتصالات في عناوين IP مصدر مسجّلة، واحفظ system_id وكلمة المرور كأسرار، وغيّرها إن تعرّضت للكشف. وتجنّب تمامًا SMPP غير المشفّر عبر الإنترنت العام.
ما الفرق بين تقارير التسليم في SMPP وREST؟
في SMPP يصل التقرير على شكل PDU من نوع deliver_sm يحمل نصًا مثل stat:DELIVRD، ويجب أن يرد نظامك بـ deliver_sm_resp. أما في REST فيرسل المزوّد حدث JSON إلى الـ webhook لديك بحالة موحّدة مثل DELIVERED أو FAILED. وكلاهما غير متزامن: قبول الطلب ليس دليلًا على التسليم أبدًا.
كم يستغرق الانتقال من SMS API إلى SMPP؟
البرمجة ليست الجزء البطيء إذا استخدمت مكتبة SMPP ناضجة. الأطول هو التجهيز: الاتفاق على الإنتاجية وعدد جلسات الـ bind، وتسجيل عناوين IP المصدر، واختبار تقارير التسليم والترميز. خطّط لفترة تشغيل متوازٍ تمر فيها نسبة صغيرة من الحركة عبر SMPP قبل نقل الحجم الكامل.
المصادر
تابع القراءة
مزيد من الأدلةالتكامل
كيف تربط نظام CRM بصندوق وارد متعدد القنوات باستخدام webhooks؟
اربط نظام CRM بصندوق وارد متعدد القنوات عبر webhooks: الأحداث التي تُزامَن، وعدم التكرار (idempotency)، وإعادة المحاولة، ومطابقة جهات الاتصال، وخصوصية البيانات.
8 دقائق للقراءة
التكامل
كيف تختار واجهة مراسلة برمجية: قائمة تحقق للمديرين التقنيين
كيف تختار واجهة مراسلة برمجية: قائمة تحقق للمدير التقني تشمل القنوات وجودة المسارات والـ webhooks والأمان وحدود المعدل وإعادة المحاولة وSMPP وMCP والامتثال والأسعار.
13 دقيقة للقراءة
تعدد القنوات
تسعير إعادة بيع الرسائل: أسعار الجملة وهوامش الربح
شرح تسعير إعادة بيع الرسائل: كيف تعمل أسعار الجملة لـ SMS وWhatsApp وRCS والصوت، وكيف تحدد هامش التجزئة، وتدير مخاطر الائتمان، وتحمي هوامشك.
13 دقيقة للقراءة
