ہر وہ چیز جو جاننا ضروری ہے، کچھ بھی غیر ضروری نہیں ہے۔
SMPP کیسے کام کرتا ہے، مرحلہ وار
ESME ایک TCP (مثالی طور پر TLS) کنکشن کھولتا ہے اور system_id اور پاس ورڈ کے ساتھ bind_transceiver بھیجتا ہے۔ ایک بار منسلک ہونے کے بعد، یہ ہر میسج کو submit_sm PDU کے طور پر جمع کرتا ہے؛ SMSC ایک submit_sm_resp کے ساتھ تصدیق کرتا ہے جس میں message_id ہوتا ہے۔ ڈیلیوری رپورٹس اسی ساکٹ پر deliver_sm PDUs کے طور پر غیر ہم وقت (asynchronously) آتی ہیں، جنہیں message_id کے ذریعے میچ کیا جاتا ہے۔ ہر 30 سیکنڈ بعد ایک enquire_link ہارٹ بیٹ سیشن کو فعال رکھتا ہے، اور ان بائنڈ اسے صاف طریقے سے بند کر دیتا ہے۔ /answers/what-is-smpp اور /answers/what-is-esme دیکھیں۔
بائنڈ کی اقسام اور ورژن
ایک ESME ٹرانسمیٹر (صرف بھیجنے والا)، ریسیور (صرف وصول کرنے والا)، یا ٹرانسیور (ایک ہی کنکشن پر دونوں) کے طور پر منسلک ہوتا ہے۔ SMPP 3.4 پر ٹرانسیور جدید ڈیفالٹ ہے۔ SMPP 5.0 میں یونیکوڈ-کلین ہیڈرز اور سیل براڈکاسٹ سپورٹ شامل کی گئی تھی لیکن اسے تقریباً کسی نے استعمال نہیں کیا — زیادہ تر انسٹال بیس 3.4 ہی ہے۔ BroadNet SMPP 3.4 بائنڈز کو قبول کرتا ہے؛ ہوسٹ، پورٹ اور کریڈنشلز آپ کی ٹیسٹ رسائی کے ساتھ فراہم کیے جاتے ہیں۔ /answers/smpp-3-4-vs-5-0 دیکھیں۔
ایک REST API کے مقابلے میں فوائد
ایک مستقل بائنڈ (persistent bind) قائم ہونے کے بعد فی پیغام کوئی قیمت نہیں لیتا، اس لیے مسلسل حجم پر SMPP، فی درخواست والے HTTPS کے مقابلے میں تقریباً دسویں حصے CPU اور چوتھائی بینڈوڈتھ استعمال کرتا ہے۔ یہ SMSC تک 100ms سے کم p99 لیٹنسی تک پہنچنے کا واحد طریقہ ہے — کریٹیکل پاتھ پر کوئی HTTP ہینڈ شیک نہیں ہوتا — اور یہ ریئل ٹائم میں DLRs واپس اسٹریم کرتا ہے۔ /compare/sms-api-vs-smpp دیکھیں۔
حدود اور پیچیدگیاں
SMPP ایک بائنری پروٹوکول ہے جسے آپ کو چلانا ہوگا: بائنڈ مینجمنٹ، ایکسپونینشل بیک آف کے ساتھ دوبارہ کنیکٹ کرنا، سیکوئنس نمبر ٹریکنگ، اور message_id کے ذریعے DLR میچنگ (کچھ SMSCs پر ہیکس کے طور پر، اور کچھ پر ڈیسیمل کے طور پر واپس ملتی ہے) سب آپ کی ذمہ داری ہے۔ ایرر ہینڈلنگ مختصر ہے — ایک ناکام سبمٹ ایک عددی command_status واپس کرتا ہے جسے آپ کو ڈی کوڈ کرنا ہوگا۔ ان کوڈز کو ایکشن میں بدلنے کے لیے /tools/smpp-error-codes لک اپ کا استعمال کریں۔ ایک پروڈکشن گریڈ SMPP کلائنٹ ہزاروں لائنوں پر مشتمل کوڈ بیس ہوتا ہے؛ اسے بنانے کے بجائے خرید لیں۔
آپ کو REST کے مقابلے میں SMPP کا انتخاب کب کرنا چاہیے؟
SMPP کا انتخاب کریں جب آپ فی سیکنڈ کئی سو میسجز برقرار رکھتے ہوں یا مستقل بائنڈز کی ضرورت ہو (فی بائنڈ گنجائش آپ کی اکاؤنٹ ٹیم کے ساتھ طے کی جاتی ہے)، یا لیٹنسی کے حساس OTP چلائیں جہاں ہر ملی سیکنڈ اہم ہو، یا کسی ایسے آپریٹر/ایگریگیٹر ایکو سسٹم میں انٹیگریٹ کریں جو ہر جگہ SMPP استعمال کرتا ہو۔ ورنہ ایک REST SMS API (BroadNet پر فی اکاؤنٹ کوئی مقررہ ریٹ لیمٹ نہیں) چلانا آسان ہے اور یہ بالکل انہی روٹس پر ڈیلیوری فراہم کرتا ہے۔ /developers/smpp اور /products/sms-api دیکھیں۔
SMPP کون سا پورٹ استعمال کرتا ہے، اور کیا 2026 میں بھی یہ استعمال ہوتا رہے گا؟
SMPP کا کوئی ایک مخصوص ریزروڈ پورٹ نہیں ہے؛ 2775 تاریخی طور پر ڈیفالٹ پلین ٹیکسٹ ہے اور آپریٹرز عام طور پر ایک مخصوص پورٹ پر TLS فراہم کرتے ہیں (BroadNet آپ کے اکاؤنٹ کے ساتھ اس کا TLS پورٹ فراہم کرتا ہے)۔ اور جی ہاں — SMPP مکمل طور پر موجودہ ہے: یہ وہ پروٹوکول ہے جو تقریباً ہر A2P انٹر کنیکٹ معاہدے میں سب سے اوپر ہوتا ہے، اور BroadNet 1,000 سے زیادہ فعال بائنڈز کے ذریعے 1,000+ آپریٹر کنکشنز پر چلتا ہے، جو 2003 سے 99.99% اپ ٹائم کے ساتھ روزانہ 300M+ پیغامات منتقل کرتا ہے۔