آموزش برنامه نویسی USSD – راهنمای شروع به کار — رایگان و به زبان ساده
خدمات مبتنی بر پروتکل USSD یا کدهای دستوری کاربردهای مختلفی در کسب و کارها دارند. استفاده از کدهای USSD در خدمات پرداخت با گوشی موبایل، به ویژه شارژ سیمکارتهای اعتباری و خرید بستههای اینترنتی بسیار رایج است. یادگیری برنامه نویسی USSD برای راهاندازی خدمات مختلف بر بستر فناوری USSD کاربرد دارد. در این مقاله به آموزش برنامه نویسی USSD پرداخته شده است. برای شروع آموزش برنامه نویسی USSD ، ابتدا باید درکی از چیستی USSD وجود داشته باشد. بنابراین، در آغاز مقاله آموزش USSD به این سوال پاسخ داده شده است که USSD چیست؟
USSD چیست ؟
USSD یک پروتکل ارتباطی استفاده شده در تلفنهای شبکه موبایل جیاسام (GSM Cellular Telephones) برای برقراری ارتباط با کامپیوترهای گرداننده شبکه موبایل است. USSD سرنامی برای عبارت «Unstructured Supplementary Service Data» به معنی «دادههای خدماتی همآورده بیساختار» است. از USSD گاهاً با عبارتهای «کد دستوری»، «کدهای فوری» (Quick Code) یا «کدهای دسترسی به امکانات» (Feature Code) نیز نام برده میشود.
فناوری USSD امکان انتقال بستههای داده کوچک در شبکه موبایل را بدون اتصال داده و بدون متحمل شدن هزینه پیامک (SMS) فراهم میکند. معمولاً از USSD برای ارسال درخواستها و دستورات کوتاه استفاده میشود. پیامهای USSD تنها میتوانند تا حداکثر ۱۸۲ کاراکتر معادل ۱۶ بیت داده را شامل شوند. فناوری USSD از پیامهای چندرسانهای و پیامک که حاوی صوت، ویدیو یا تصویر هستند، پشتیبانی نمیکند.
برخلاف SMS که میتواند به صورت شخص-به-شخص یا اپلیکیشن-به-شخص ارسال شود، پیامهای USSD همواره به یا از یک موجودیت شبکه نظیر پایگاه داده HLR، مرکز سوئیچینگ موبایل (MSC)، مرکز خدمات پیام کوتاه (SMSC) یا یک اپلیکیشن اختصاصی USSD ارسال میشوند. سمت دیگر این ارتباط میتواند یک گوشی موبایل، یک اپلیکیشن یا یک دستگاه IoT (اینترنت اشیا) باشد.
مخابره پیامک از طریق یک مرکز خدمات پیام کوتاه عبور میکند. این مرکز پیامها را ذخیره و سپس به دریافت کننده منتقل میکند. این درحالی است که در مخابره USSD از یک دروازه (Gateway) برای ایجاد یک نشست (جلسه | Session) باز (Open Session) میان دو موجودیت شبکه استفاده میشود. استفاده از Gateway در اتصال USSD ، امکان ارتباطات زمان واقعی (زنده | Real Time) و ارائه خدمات پیامرسانی فوری (Instant Messaging | IM) را فراهم میکند.
کد USSD چیست ؟
«کد USSD» یا «USSD Code» کدی است که توسط کاربران شبکه موبایل برای ارتباط با سرویس USSD شمارهگیری میشود. استفاده از اصطلاح «کد دستوری» رایجتر است. در سالهای اخیر، کدهای USSD و به طور کلی خدمات مبتنی بر USSD در ایران بسیار رواج یافتهاند. کد USSD با یک علامت «*» آغاز میشود.
سپس باید شماره سرویس USSD به صورت چند عدد انگلیسی وارد شود. پس از وارد کردن شماره USSD ، باید در انتها یک علامت «#» نیز اضافه کرد. کد USSD در واقع آدرس سرویسی است که کاربر قصد استفاده از آن را دارد. درست مثل زمانی که برای ارتباط با یک شرکت خدماتی از طریق شماره تلفن با آن شرکت تماس گرفته میشود. در ادامه شرح مفاهیم مقدماتی آموزش برنامه نویسی USSD ، به بیان کاربردهای USSD پرداخته شده است.
کاربردهای USSD چیست؟
به دلیل محدودیت کاراکتر و نبود امکانات ارسال شخص-به-شخص، USSD کاربردهای محدودی در میان مشتریان دارد. برخی از موارد استفاده رایج USSD، شامل موارد زیر است:
- بررسی میزان موجودی شارژ سیمکارتهای اعتباری
- خدمات بانکداری موبایلی
- بازنشانی رمزهای عبور
- کاربرد در مرورگر WAP (پروتکل کاربرد بیسیم)
- خدمات پیش پرداختی بازگشت تماس (Call Back)
- خدمات پرداخت از طریق موبایل
- خدمات محتوایی مبتنی بر موقعیت مکانی
- خدمات اطلاعاتی مبتنی بر منو
- کاربرد در بخشی از تنظیمات گوشی در شبکه موبایل
- نظرسنجی
- قرعهکشی
- مسیریابی
میتوان از USSD برای فراهم کردن خدمات مستقل تماس نظیر یک سرویس بازگشت تماس (برای کاهش هزینه مکالمه در زمان رومینگ)، گسترش بازاریابی موبایلی یا خدمات تعاملی مبتنی بر داده استفاده کرد. به طور رایج از USSD در سیمکارتهای اعتباری برای مدیریت اعتبار (شارژ و اطلاع از موجودی حساب) استفاده میشود. در برخی شبکههای موبایل وقتی کاربر کاری انجام دهد که هزینه در بر داشته باشد، یک پیام USSD حاوی میزان اعتبار باقیمانده روی صفحه ظاهر میشود.
USSD برای ارسال رمز عبور موقت نیز به کار گرفته میشود. برخی از اپراتورها از USSD برای فراهم کردن دسترسی لحظهای به اعلانهای شبکههای اجتماعی مثل فیسبوک و توییتر هم استفاده میکنند. USSD در ترکیب با SMS هم به کار گرفته میشود. مثلاً در پایان ارتباط USSD برای شارژ سیمکارت اعتباری، معمولاً به کاربر اطلاع داده میشود که عملیات شارژ انجام شده و نتیجه آن از طریق پیامک اطلاعرسانی خواهد شد.
همچنین، «اینترنت اشیا موبایلی» یا همان «Cellular Internet of Things» منجر به پدید آمدن کاربردهای جدیدی برای USSD شده است. USSD مخصوصاً برای دریافت اطلاعات از حسگرهای دستگاههای IoT و ارسال آنها به کاربر بسیار کاربرد دارد.
کسب و کارها میتوانند اطلاعات ارزشمندی همچون وضعیت دما، موقعیت مکانی، میزان مصرف منابع و سایر بهروزرسانیهای وضعیتی را از طریق USSD به دست آورند. هر نوع داده متنی که دستگاه تلفن همراه بتواند آن را دریافت کند، با USSD قابل مخابره است. علاوه بر این، برخی از کسب و کارها از USSD برای ارسال پیامهای تبلیغاتی به دستگاههای موبایل استفاده میکنند.
قالب دستورات USSD و قالب پیام های USSD چگونه است؟
دستورات USSD همیشه با یک علامت ستاره ( * | Asterisk) آغاز، به دنبال آن اعداد لاتین و در انتها نیز یک علامت هشتگ (#) درج میشود. اعداد، تعیین کننده کدی هستند که شبکه از آن برای برقراری ارتباط با یک سامانه خاص استفاده میکند. اپراتورهای مختلف شبکه همراه (Mobile Network Operator | MNO) از کدهای متفاوتی استفاده میکنند.
به عنوان مثال، یک پیام USSD برای درخواست موقعیت مکانی یک دستگاه میتواند به صورت زیر باشد:
1*999#
پس از وارد کردن این کد در قسمت شمارهگیری تماس گوشی، اطلاعات و دادههای لازم از پایگاه داده HLR در شبکه موبایل دریافت و به کاربر ارسال میشوند. بسته به نحوه پیکربندی و چگونگی تنظیمات USSD، اولین پاسخ معمولاً به صورت یک منو است که کدهای دستوری قابل استفاده را برای درخواست دریافت اطلاعات یا انجام یک دستور به کاربر نشان میدهند.
نحوه عملکرد USSD چگونه است؟
وقتی که کاربر یک پیام USSD را به شبکه سرویس دهنده موبایل ارسال میکند، این پیام توسط یک کامپیوتر اختصاص داده شده به USSD (سرور USSD) دریافت میشود. سپس، پاسخ کامپیوتر اختصاصی سرویس USSD معمولاً در یک قالب ساده که به راحتی قابل نمایش روی صفحه باشد به گوشی موبایل کاربر ارسال میشود.
پیامهایی ارسالی از طریق سامانه USSD، به وسیله هیچ بدنه استانداردسازی شدهای قالببندی نمیشوند. استفاده از عبارت «بیساختار» یا «Unstructured» در نام USSD نیز بیانگر همین مسئله است. بنابراین، هر اپراتور شبکه میتواند هر آنچه که برای مشتریانش مناسب باشد را ارسال و پیادهسازی کند. در ادامه، فرایند عملکرد USSD فهرست شده است:
- کاربر کد USSD مورد نظر را شمارهگیری میکند.
- درخواست به سرویس دهنده موبایل (اپراتور ارائه دهنده آن سرویس USSD) ارسال میشود.
- سرویس دهنده درخواست را مسیریابی و آن را از طریق USSD Gateway به ماشینی ارسال میکند که از سرویس USSD میزبانی میکند (سرور USSD).
- ماشین میزبان سرویس یا اپلیکیشن USSD، درخواستها را پردازش و بازخورد لازم را ارسال میکند.
- بازخورد به وسیله ارائه دهنده سرویس پردازش و به دستگاه موبایل مشتری ارسال میشود.
USSD Gateway چیست؟
برای پاسخ به این سوال که USSD Gateway چیست ، ابتدا باید درکی از چیستی Gateway وجود داشته باشد. یک «Gateway» که میتوان آن را «دروازه» یا «درگاه» نامید، مجموعهای از سختافزارها و نرمافزارهای مورد نیاز برای اتصال متقابل دو یا بیش از دو شبکه مختلف است که تبدیل پروتکلها را شامل میشود.
یک «USSD Gateway» مسیریابی دوطرفه پیامهای USSD از شبکه سیگنال دهنده به یک اپلیکیشن خدمات را انجام میدهد.
به سرویس USSD Gateway همچنین «USSD Center» یا «مرکز USSD» نیز گفته میشود. USSD gateway مبتنی بر توانایی عامل تحویل دهنده یا منبع برای ارسال و دریافت پیامهای USSD است. تفاوت میان دروازههای USSD و سایر دروازههای پیامرسان این است که دروازههای USSD پس از برقراری اتصال، یک جلسه تعاملی واحد را حفظ میکنند. اما، مثلاً SMS و MMS مشابه نحوه ارسال ایمیل از طریق اینترنت، پیامها را مستقل از نشست کاربر ذخیره و ارسال میکنند. در ادامه این مقاله به مبحث مهم نحوه راهاندازی و ارائه یک سرویس USSD پرداخته خواهد شد. پیش از آن با توجه به اینکه برنامه نویسی USSD معمولاً با زبان PHP انجام میشود، مجموعه فیلمهای آموزش PHP معرفی شدهاند.
راه اندازی سرویس USSD چگونه انجام میشود؟
راهاندازی سرویس USSD به این صورت است که ابتدا باید یک سرکد USSD خریداری و سپس باید ارتباط با اپراتور و شبکه موبایل بر اساس پروتکلهای تعریف شده برقرار شود. پس از آن، میتوان زیرکدهای مورد نیاز را ایجاد کرد و در نهایت برنامهنویسی USSD را جهت راهاندازی کارکردها و خدمات ارائه شده برای هر زیر کد انجام داد.
در ادامه این بخش از آموزش برنامه نویسی USSD به شرح هر یک از مراحل راهاندازی سرویس USSD پرداخته شده است.
۱. خرید کد USSD چگونه انجام میشود؟
برای راهاندازی یک سرویس USSD ابتدا باید یک کد USSD یا همان سرکد USSD را خریداری کرد. خرید کد USSD را میتوان به دو روش انجام داد. یک روش خرید USSD از اپراتورهای موبایل و روش دیگر استفاده از سرویس دهندههای USSD شخص ثالث است. در ادامه هر یک از این روشهای خرید سرکد USSD شرح داده شدهاند.
خرید کد USSD از اپراتورهای موبایل
میتوان کدهای USSD را از اپراتورهای موبایل خریداری کرد. در واقع با خرید یک کد دستوری USSD ، یک راه ارتباطی میان سرویس دهنده USSD و اپراتور تلفن همراه و به طور کلی با شبکه موبایل (GSM) برقرار میشود. در ایران میتوان یک سرکد USSD را از اپراتورهای مختلفی از جمله همراه اول، ایرانسل، رایتل و سایر اپراتورها خریداری کرد. قیمت کدهای USSD بسته به تعداد رقمهای آن متفاوت است. همچنین برخی اپراتورها بر اساس تعداد جلسه یا میزان تراکنش در هر ثانیه هزینههایی را دریافت میکنند.
خرید کد USSD از شرکتهای واسط
یک راه دیگر برای خرید کد USSD ، مراجعه به شرکتهای شخص ثالث است. این شرکتها علاوه بر فروش کدهای USSD که خود از اپراتورها خریداری کردهاند، خدمات USSD را به صورت آماده و در قالب بسترهایی مثل وب سرویس یا API نیز ارائه میدهند. خرید کد USSD از شرکتهای واسط میتواند فرایند راهاندازی سرویس USSD را برای افراد یا شرکتهایی که قصد انجام این کار را دارند، سادهسازی کند و حجم کدنویسی USSD را کاهش دهد.
این شرکتهای واسطه معمولاً یک پلتفرم مدیریت سرویس USSD را در اختیار مشتریان قرار میدهند تا کسب و کارها بتوانند با استفاده از این پنل مدیریتی سرویس USSD خود را راهاندازی و تنظیمات لازم را انجام دهند. این شرکتهای واسط معمولاً زیرکدی از یک سرکد اصلی چندرقمی را به فروش میرسانند. این کار منجر به کاهش قیمت خرید کد USSD خواهد شد. پس از خرید کد USSD نوبت به برقراری اتصال میرسد که در ادامه شرح داده شده است.
۲. برقراری اتصال به اپراتور و شبکه موبایل
پس از خرید سرکد USSD باید ارتباط و اتصال سرویس USSD را با اپراتور و شبکه موبایل برقرار کرد. این ارتباط معمولاً بر اساس دو پروتکل URL و UAP انجام میشود. همچنین اپراتورها قوانینی را برای استفاده از کدهای USSD در شبکه خود تعیین میکنند. این قوانین اغلب پیرامون رعایت موارد امنیتی وضع میشوند.
مثلاً برخی از اپراتورها ممکن است تنها به وبسرورهایی اجازه اتصال به شبکه خود را بدهند که از فناوری MPLS استفاده میکنند. برای اتصال به شبکه موبایل باید پروتکل مورد نظر را انتخاب کرد. معمولاً استفاده از URL انتخاب بهتری محسوب میشود.
۳. پیادهسازی کارکردها و برنامه نویسی USSD
پس از فراهم کردن ملزومات مورد نیاز برای اتصال به شبکه موبایل و رعایت موارد لازم جهت برقراری ارتباط با اپراتورها، باید با استفاده از یک پلتفرم و فناوریهای توسعه، سرویسها و خدماتی که قرار است از طریق بستر USSD ارائه شوند را پیادهسازی و برنامه نویسی کرد. در این مرحله باید مشخص شود که دقیقاً چه سرویسی قرار است از طریق USSD به مشتری ارائه شود. برای مثال ممکن است یک شرکت برای برگزاری قرعهکشی از USSD استفاده کند. برای پیادهسازی چنین کارکردی، ممکن است نیاز به دریافت اطلاعاتی از کاربر وجود داشته باشد.
برای مثال، ممکن است نیاز باشد کاربر شماره فاکتور یا کد خرید محصول خود را وارد کند. یا ممکن است تنها دریافت شماره موبایل مشتری کافی باشد و فقط با وارد کردن کد دستوری تعیین شده، شماره همراه کاربر در پایگاه داده ذخیره شود. بنابراین، باید برنامه نویسی لازم برای پیادهسازی این کارکردها انجام شود. در این مرحله نیز میتوان از شرکتهای شخص ثالث کمک گرفت و از پلتفرم این شرکتها برای تعریف زیرکدهای USSD و فراخوانی وبسرویسهای موردنیاز در درختواره زیرکدهای ایجاد شده استفاده کرد.
آموزش برنامه نویسی USSD در ادامه این مقاله ارائه خواهد شد و نکات بیشتری در خصوص نیازمندیها و نحوه پیادهسازی یک کارکرد با برنامه نویسی USSD شرح داده خواهد شد. پیش از آن، در بخش بعدی به بیان مزایای USSD پرداخته شده است.
مزایای USSD چیست؟
از جمله مزایای کلیدی USSD میتوان به قابلیت استفاده از آن در اینترنت اشیا اشاره کرد. اگرچه USSD یک فناوری Cellular قدیمی به حساب میآید، اما دلایل کلیدی بسیاری برای جذب تولید کنندگان محصولات IoT به سمت استفاده از USSD وجود دارد.
در ادامه این بخش مقدماتی از آموزش برنامه نویسی USSD به شرح دو مزیت اصلی USSD پرداخته شده است.
مزایای USSD: مصرف پایین انرژی
به دلیل اینکه در USSD از اتصال داده شبکه استفاده نمیشود، USSD برای مخابره پیام به میزان قابل توجهی از انرژی کمتری استفاده میکند. در واقع، USSD پیامهای متنی را از طریق کانال صوتی شبکه ارسال میکند. در اینترنت اشیا طول عمر باتری بسیار اهمیت دارد و به همین دلیل USSD میتواند روش موثری برای افزایش عمر باتری دستگاههای تحت شبکه IoT محسوب شود. این مسئله مخصوصاً در مواقعی اهمیت بیشتری پیدا میکند که یک دستگاه IoT نیاز به مخابره تعداد پیام زیادی در چرخه حیات خود داشته باشد.
مزایای USSD: پوشش سراسری
شبکههای سلولی نسل دوم دیگر به عنوان یک فناوری همهگیر و پراستفاده شناخته نمیشوند. اما، به مدت بیش از سه دهه است که زیرساختهای این شبکهها در سراسر دنیا برپا شدهاند. چون این شبکهها از استانداردهای GSM استفاده میکنند، میتوان تقریباً در تمامی شبکههای موبایل از USSD استفاده کرد. بنابراین با استفاده از فناوری USSD میتوان به بازار هدف وسیعی دسترسی داشت.
مزایای USSD: امکان برقراری ارتباط زنده
در پروتکل USSD اتصال برقرار میماند و امکان تبادل دوطرفه توالی دادهها وجود دارد. این قابلیت باعث میشود USSD انعطافپذیری بیشتری نسبت به خدماتی که از SMS استفاده میکنند به همراه داشته باشد.
مزایای USSD: عدم نیاز به گوشی هوشمند، اینترنت و شارژ سیمکارت
برای استفاده از خدمات USSD ، مشتری هیچ نیازی به تلفن هوشمند، اینترنت و شارژ سیمکارت ندارد. تنها با یک گوشی ساده و یک سیمکارت متصل به شبکه تلفن همراه میتوان از خدمات ارائه شده بر بستر USSD استفاده کرد. این مسئله باعث میشود کسب و کاری که سرویس USSD ارائه میدهد بتواند گستره وسیعتری از مشتریان بالقوه را تحت پوشش خود قرار دهد.
مزایای USSD: اجرای سرویس روی شبکه
اپلیکیشنهای USSD روی دستگاه کاربر اجرا نمیشوند، بلکه روی شبکه مستقر هستند. به همین دلیل، نیازی به نصب اپلیکیشن USSD روی گوشی کاربر وجود ندارد و این یکی از مزایای USSD به شمار میرود. این نقطه برتری خصوصاً در مورد گوشیهای موبایلی که فضای ذخیرهسازی محدودی دارند به چشم میآید. اپلیکیشنها و خدمات USSD در صورت اتصال به شبکه، بلافاصله برای همه کاربران شبکه موبایل در هر لحظهای قابل استفاده خواهند بود.
معایب USSD چیست؟
با وجود اینکه USSD مزایای بسیاری را برای تولیدکنندگان IoT و سایر کسب و کارها فراهم میکند، این فناوری برخی کاستیها را نیز به همراه دارد. پیش از روی آوردن به استفاده از USSD باید نقاط ضعف و معایب USSD را هم در نظر گرفت.
بنابراین در ادامه این بخش از مقدمات آموزش برنامه نویسی USSD به برخی از معایب USSD اشاره شده است.
معایب USSD: هزینه بسیار زیاد خرید کد USSD
هزینه خرید کد یا سرکد USSD بسیار بالاست. هر چقدر تعداد ارقام سرکد USSD کمتر باشد، این هزینه بیشتر هم میشود. به طوری که در حال حاضر هزینه خرید کد USSD تک رقمی با واسطه و دو رقمی بدون واسطه سالیانه به چند ده میلیارد تومان میرسد.
همچنین، هزینه سالیانه کد سه رقمی با واسطه حدود ۳ میلیارد و بدون واسطه حدود ۳۰ میلیارد تومان است. کد USSD شش رقمی نیز در حالت بدون واسطه بیش از سه میلیون و به صورت با واسطه کمتر از ۴۰۰ هزار تومان قیمت دارد. البته میتوان با هزینه کمتری از شرکتهای شخص ثالث زیرکدهای USSD را خریداری کرد.
معایب USSD: محدودیت پهنای باند داده
با وجود محدودیت داده ۱۶ بیتی، چندان هم تعجبآور نیست که استفاده از USSD برای کاربران تلفن همراه هزینهای نداشته باشد. چرا که، در تبادل USSD مصرف داده بسیار اندک است. حتی در صورتی که تبادل داده ۱۶ بیتی (۱۲۸ کاراکتری) در یک کاربرد خاص کافی باشد، باید در نظر داشت که USSD برای کارهایی مثل ارسال بهروزرسانیهای OTA به یک دستگاه IoT مناسب نیست.
همچنین، واضح است که امکان انتقال دادههای حجیم از طریق USSD در دستگاههایی که ضبط صدا، ویدیو یا هر نوع تصویر دیگری را انجام میدهند به دلیل محدودیت پهنای باند وجود نخواهد داشت.
معایب USSD: فاقد آینده تضمین شده
مدت زیادی است که شبکههای GSM پا به عرصه ارتباطات گذاشتهاند و از آنها استفاده میشود. اما، با وجود اینکه فناوری USSD در اینترنت اشیا به کار گرفته میشود، شبکههای موبایل در سراسر جهان در حال قطع استفاده از فناوریهای نسل دوم (2G) و حتی نسل سوم (3G) برای به کارگیری باندهای فرکانسی خود در فناوریهای پیشرفتهتر هستند.
در طول سالهای آینده گستره پوشش 2G به کوچکتر شدن خود ادامه خواهد داد و کشورهای کمتری از فناوریهای مبتنی بر GSM نظیر USSD استفاده خواهند کرد. حتی در حال حاضر نیز از USSD بیشتر در ایران و برخی کشورهای آفریقایی استفاده میشود.
معایب USSD: محدودیت قالب پیام USSD
همانطور که پیشتر نیز اشاره شد، نوع محتوایی که از طریق سامانه USSD قابل ارسال است برخلاف فناوری SMS و MMS تنها میتواند به صورت متنی باشد و امکان ارسال تصویر و ویدیو از طریق USSD وجود ندارد.
معایب USSD: محدودیت حجمی
علاوه بر محدودیت نوع محتوای ارسالی از طریق USSD که حتماً باید به صورت قالب متنی باشد، حجم محتوای ارسالی نیز در بستر USSD دارای محدودیت است و همانطور که بیان شد، در یک پیام USSD تنها میتوان ۱۸۲ کاراکتر را جای داد که این تعداد کاراکتر معادل حجم ۱۶ بیت داده است. اگرچه این محدودیت حجمی باعث شده که تبادل داده از طریق USSD رایگان باشد، اما این محدودیت یک نقطه ضعف نیز به حساب میآید. زیرا نمیتوان از USSD برای بسیاری از کاربردها استفاده کرد.
معایب USSD: عدم امکان ارسال لینک
یکی دیگر از معایب USSD ، عدم امکان ارسال لینک یا همان هایپرلینک در پیامهای USSD است، امکانی که از طریق SMS به راحتی در اختیار کسبوکارها قرار دارد. امروزه هایپرلینک در بازاریابی دیجیتال نقش مهمی برای کسب درآمد دارد و عدم امکان ارسال لینک با USSD میتواند یکی از نقاط ضعف مهم در این فناوری به شمار رود.
برنامه نویسی USSD چیست؟
برنامه نویسی USSD به فرایند راهاندازی یک سرویس USSD گفته میشود. سرویسی که مشتریان بتوانند با استفاده از آن از خدمات ارائه دهنده سرویس USSD استفاده کنند.
یعنی سامانهای پیادهسازی شود که از طریق سیستم USSD خدماتی سازگار و منطبق با قابلیتهای USSD ارائه شود و کاربر با وارد کردن کد USSD تعیین شده، به آن خدمات دسترسی داشته باشد.
مثلاً یک بانک میتواند امکان بررسی موجودی حساب بانکی را از طریق سامانه USSD در اختیار مشتریان قرار دهد. برنامه نویسی USSD معمولاً با استفاده از زبان PHP انجام میشود. همچنین، نیاز به راهاندازی پایگاه داده وجود دارد که میتوان از MySQL استفاده کرد. مراحل برنامه نویسی USSD معمولاً به صورت زیر انجام میشود:
- پیکربندی اپلیکیشن USSD در میزبان (Host)
- ایجاد یک منوی تعاملی USSD
- دریافت ورودی از کاربر و درج آن در پایگاه داده
- دریافت ورودی از کاربر و نمایش جزئیات درخواست شده
ملزومات برنامه نویسی USSD چیست؟
پیش از هر چیز، نیاز به یک درگاه USSD وجود دارد که برای شروع میتوان از یک سرور کوچک مبتنی بر لینوکس استفاده کرد یا یک درگاه آماده را از شرکتهای ارائه دهنده دروازه USSD خریداری کرد. میتوان منوها و اپلیکیشن USSD را با استفاده از PHP ایجاد کرد. مهمتر از همه، باید اتصال به اپراتور شبکه موبایل برقرار و یک کد USSD اختصاصی دریافت شود. معمولاً باید یک پرونده کاری به اپراتور ارائه و توافقنامههای VAS یا WASP امضا شوند.
همچنین، ممکن است نیاز به دریافت گواهینامه WASP از رگولاتوری شرکت مخابرات وجود داشته باشد. کد USSD دریافت شده به اپلیکیشنی تخصیص داده میشود که قرار است خدمات USSD در آن ارائه شوند و به این ترتیب امکان استقرار خدمات فراهم میشود. یک روش سادهتر، استفاده از یک شرکت خدمات دهنده شخص ثالث است که بسیاری از ملزومات را از پیش آماده کرده است و خدمات USSD را در قالب API یا وب سرویس ارائه میدهد.
آموزش برنامه نویسی USSD و ساخت یک اپلیکیشن USSD
پس از ارائه مقدمات و مباحث نظری، حال در این بخش به آموزش برنامه نویسی USSD پرداخته و یک اپلیکیشن USSD ایجاد شده است. برای ساخت اپلیکیشن USSD در این پروژه تنها به موارد زیر نیاز است:
- کلاینت Postman برای کروم
- اجرای وب سرور (Xampp ،LAMP و یا موارد دیگر)
- ویرایشگر Sublime Text یا Visual Studio Code
در این آموزش از درگاه زنده (Live Gateway) استفاده نشده است و تنها آنچه در محیط واقعی رخ میدهد، شبیهسازی شده است. برای برنامه نویسی USSD باید آشنایی لازم با برخی موارد از جمله مهارتهای پایه برنامه نویسی شامل عبارتهای شرطی، دستور Switch و سایر موارد وجود داشته باشد.
دلیل نیاز به این مهارتها این است که در این پروژه برنامه نویسی USSD به میزان زیادی کار با رشتهها برای بیرون کشیدن (واکشی کردن) دادهها و تفسیر درخواست ارسالی از طریق درگاه USSD انجام شده است. یک موردی که باید مدنظر قرار داده شود این است که در درگاههای USSD از زبانهای برنامه نویسی مختلفی استفاده میشود، یعنی رشتههایی با نامهای مختلف ارسال میشوند.
پارامترهای نمونه درخواست
در این آموزش برنامه نویسی USSD ، موارد زیر به عنوان پارامترهای نمونه درخواست تنظیم میشوند:
- ‘MSISDN’ => ‘254714611388’ (شماره موبایلی که درخواست را ارسال میکند)
- ‘SESSION_ID’ => ‘355562002’ (جلسه برای زمانی که نیاز به آزمایش حسابرسی وجود دارد)
- ‘USSD_STRING’ => ‘58*1234*456*252' (این رشتهای است که حاوی درخواستهای ارسالی از درگاه USSD است و به بیان ساده پاسخهایی است که کاربر در زمان پرسش ارائه میدهد)
تمام پاسخها (دادههایی که توسط کاربر در تلفن همراه وارد شدهاند) به وسیله یک علامت ستاره (*) جدا میشوند و هر پاسخی که کاربر وارد میکند، به رشته فعلی متصل خواهد شد. بنابراین، باید آشنایی لازم با تابع explode() در PHP وجود داشته باشد.
پیادهسازی برنامه نویسی USSD
حال در این بخش پیادهسازیهای لازم انجام شده است. آموزش برنامه نویسی USSD در این بخش، شامل یک کد نمونه برای شبیهسازی یک فرایند است. برای این آموزش برنامه نویسی USSD، یک سیستم ثبتنام پیادهسازی شده است. یک نکته مهمی که در آموزش برنامه نویسی USSD باید به آن توجه شود، استفاده از کلمات کلیدی CON و END است. کلمه کلیدی CON زمانی استفاده میشود که اشاره به یک درخواست پیوسته ، برای مثال، زمانی که از کاربر توقع وارد کردن یک پاسخ وجود داشته باشد.
کلمه کلیدی END برای پایان دادن به جلسه USSD استفاده میشود. وقتی که کلمه کلیدی END به ابتدای اسکریپت اضافه شود، به سرویس دهنده اعلام خواهد کرد که جلسه به پایان رسیده است و به این ترتیب از آن پس باکس وارد کردن اطلاعات به کاربر نمایش داده نخواهد شد، بلکه یک دکمه OK یا خروج ظاهر میشود. در ادامه کدهای نمونه PHP آمده است.
ابتدا دادههای آدرس URL پست در وب سرور دریافت میشوند:
1<?php
2
3 $text=$_GET[‘USSD_STRING’];
4 $phonenumber=$_GET[‘MSISDN’];
5 $serviceCode=$_GET[‘serviceCode’];
سپس، متن با استفاده از تابع Explode و جداکننده «*» به یک آرایه تبدیل میشود:
1$level = explode(“*”, $text);
حال برای جلوگیری از بروز خطا، بررسی میشود که آیا متغیر متنی حاوی داده هست یا خیر:
1 if (isset($text)) {
اولین درخواست یک فیلد متنی خالی خواهد داشت و بنابراین باید صفحه خوشآمدگویی را به کاربر نمایش دهد. در اینجا از کلمه کلیدی CON استفاده میشود:
1if ( $text == “” ) {
2 $response=”CON Welcome to the registration portal.\nPlease enter you full name”;
3 }
اکنون هر سطح بررسی میشود تا از وجود داده در آن و ارجاع داده شدنش یا در نوبت ارجاع بودنش اطمینان حاصل شود:
1if(isset($level[0]) && $level[0]!=”” && !isset($level[1])){
2$response=”CON Hi “.$level[0].”, enter your ward name”;
3
4 }
5 else if(isset($level[1]) && $level[1]!=”” && !isset($level[2])){
6 $response=”CON Please enter you national ID number\n”;
7}
8 else if(isset($level[2]) && $level[2]!=”” && !isset($level[3])){
9 //Save data to database
10 $data=array(
11 ‘phonenumber’=>$phonenumber,
12 ‘fullname’ =>$level[1],
13 ‘electoral_ward’ => $level[2],
14 ‘national_id’=>$level[3]
15 );
16//در این قسمت باید مقادیر در پایگاه داده درج شوند
حال با استفاده از کلمه کلیدی END ، میتوان جلسه را پایان داد:
1$response=”END Thank you “.$level[1].” for registering.\nWe will keep you updated”;
2 }
همچنین باید در نظر داشت که برای هر درخواست موفق باید پاسخ را با استفاده از دستور echo نمایش داد:
1header(‘Content-type: text/plain’);
2 echo $response;
3}
4?>
بنابراین، کل کدهای نوشته شده به صورت زیر است:
1<?php
2 #We obtain the data which is contained in the post url on our server.
3
4 $text=$_GET['USSD_STRING'];
5 $phonenumber=$_GET['MSISDN'];
6 $serviceCode=$_GET['serviceCode'];
7
8
9 $level = explode("*", $text);
10 if (isset($text)) {
11
12
13 if ( $text == "" ) {
14 $response="CON Welcome to the registration portal.\nPlease enter you full name";
15 }
16
17 if(isset($level[0]) && $level[0]!="" && !isset($level[1])){
18
19 $response="CON Hi ".$level[0].", enter your ward name";
20
21 }
22 else if(isset($level[1]) && $level[1]!="" && !isset($level[2])){
23 $response="CON Please enter you national ID number\n";
24
25 }
26 else if(isset($level[2]) && $level[2]!="" && !isset($level[3])){
27 //Save data to database
28 $data=array(
29 'phonenumber'=>$phonenumber,
30 'fullname' =>$level[0],
31 'electoral_ward' => $level[1],
32 'national_id'=>$level[2]
33 );
34
35
36
37 $response="END Thank you ".$level[0]." for registering.\nWe will keep you updated";
38 }
39
40 header('Content-type: text/plain');
41 echo $response;
42
43 }
44
45?>
آزمایش کدهای نوشته شده
در این مرحله از آموزش برنامه نویسی USSD باید بررسی شود که آیا کدهای نوشته شده در مرحله قبل به درستی کار میکنند یا خیر. برای این کار باید مراحل زیر را طی کرد:
- قرار دادن فایل حاوی کدها در پوشه مربوط به وب سرور یعنی همان پوشه «htdocs» یا «/var/www/html»
- باز کردن کلاینت Postman
- قرار دادن آدرس URL در جایی که کدها میزبانی میشوند (مثل localhost)
- افزودن پارامترهای نمونه درخواست به URL (این پارامترها در ابتدای آموزش برنامه نویسی USSD مشخص شدهاند: « http://localhost:9000/?MSISDN=0713038301&USSD_STRING=&serviceCode=*144# »
- باید در نظر داشت که رشته USSD برای دیدن صفحه خوشآمدگویی باید خالی باشد.
- حال باید درخواست را ارسال و پنجره پاسخ Postman را برای پاسخ از جانب سرور بررسی کرد. این بخش بازخوردی را نشان میدهد که کاربر هنگام ایجاد درخواست در گوشی موبایل خود دریافت میکند.
- ویرایش رشته USSD مثلاً با افزودن نام کاربر: « http://localhost:9000/?MSISDN=0713038301&USSD_STRING=&serviceCode=*144# »
- پیام دیگری نمایش داده خواهد شد. برای رفتن به مرحله بعد باید یک علامت «*» پس از نام کاربر به عنوان یک جدا کننده درج شود. این کار را باید برای سایر پیامها نیز انجام داد تا زمانی که پیامها به اتمام برسند: « http://localhost:9000/?MSISDN=0713038301&USSD_STRING=&serviceCode=*144# »
فرایند فوق در برنامه نویسی USSD و توسعه اپلیکیشنها و کاربردهای USSD به کار میآید. تست روی یک محیط واقعی (Live) نیازمند صرف هزینه است. به همین دلیل از Postman برای شبیهسازی در این آموزش برنامه نویسی USSD استفاده شد. در ادامه آموزش نحوه استفاده از خدمات USSD در یک اپلیکیشن اندرویدی شرح داده شده است.
آموزش برنامه نویسی USSD در اپلیکیشن اندروید
میتوان از فناوری USSD در اپلیکیشنهای اندروید نیز استفاده کرد. یعنی به جای اینکه کاربر به صورت دستی در قسمت تماسها کد USSD را شمارهگیری کرده و از خدمات مربوطه استفاده کند، میتوان همین کار را در بخشی از یک اپلیکیشن اندرویدی پیادهسازی کرد.
به طوری که، با فشردن یک دکمه توسط کاربر در داخل اپلیکیشن، یک کد USSD تولید و شمارهگیری شود و سپس نتیجه بازگشتی نیز در خود اپلیکیشن نمایش داده شود. برای مثال، با اجرای کدهای زیر در یک اپلیکیشن اندروید، یک پنجره Popup باز و میزان اعتبار باقیمانده سیمکارت نمایش داده خواهد شد.
1// دریافت اعتبار حساب سیمکارت
2private void dailNumber(String code) {
3 String ussdCode = "*" + code + Uri.encode("#");
4 startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" + ussdCode)));
5}
برای اجرای کدهای فوق باید اجازه دسترسی به امکان برقراری تماس به اپلیکیشن داده شود. برای این کار باید خط کد زیر در فایل Manifest پروژه اضافه شود:
1<uses-permission android:name="android.permission.CALL_PHONE" />
آموزش نحوه مدیریت، خواندن و تجزیه کردن پیامهای USSD از Popup
یک سرویس دسترسی در پس زمینه اجرا میشود و فراخوانی مجدد را در زمان وقوع رویدادهای AccessibilityEvents توسط سیستم دریافت میکند. چنین رویدادهایی برخی از انتقال حالتها در رابط کاربری را تعیین میکنند. برای مثال، وقتی که یک دکمه کلیک شده، یک صفحه Popup باز شده و سایر موارد از این دست رخ داده است. بنابراین، کار به این صورت انجام میشود که سرویس دسترسی یک رویداد تحویل میدهد و از آن رویداد میتوان یک پیام USSD را دریافت کرد. در ادامه، مراحل پیادهسازی مربوطه آموزش داده شده است.
۱. ایجاد یک کلاس به نام XXXX:
1public class XXXX extends AccessibilityService {
2
3 public static String TAG = "XXXX";
4
5 @Override
6 public void onAccessibilityEvent(AccessibilityEvent event) {
7 Log.d(TAG, "onAccessibilityEvent");
8 String text = event.getText().toString();
9
10 if (event.getClassName().equals("android.app.AlertDialog")) {
11 performGlobalAction(GLOBAL_ACTION_BACK);
12 Log.d(TAG, text);
13 Intent intent = new Intent("com.times.ussd.action.REFRESH");
14 intent.putExtra("message", text);
15 // نوشتن یک دریافت کننده برادکست و فراخوانی تابع ارسال برادکست از اینجا، اگر قصد پارس کردن پیام برای بالانس وجود داشته باشد.
16
17 }
18
19 }
20
21 @Override
22 public void onInterrupt() {
23 }
24
25 @Override
26 protected void onServiceConnected() {
27 super.onServiceConnected();
28 Log.d(TAG, "onServiceConnected");
29 AccessibilityServiceInfo info = new AccessibilityServiceInfo();
30 info.flags = AccessibilityServiceInfo.DEFAULT;
31 info.packageNames = new String[]{"com.android.phone"};
32 info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
33 info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
34 setServiceInfo(info);
35 }
36
37}
۲. افزودن یک ورودی برای سرویس فوق در Manifest:
1<service android:name=".XXXX"
2 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
3 <intent-filter>
4 <action android:name="android.accessibilityservice.AccessibilityService" />
5 </intent-filter>
6 <meta-data android:name="android.accessibilityservice"
7 android:resource="@xml/config_service" /> // created below
8</service>
۳. ایجاد یک پوشه به نام «xml» در دایرکتوری «res» و سپس ایجاد فایلی به نام «config_service.xml» در پوشه xml و افزودن کدهای زیر به آن فایل:
1<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
2 android:accessibilityEventTypes="typeAllMask"
3 android:accessibilityFeedbackType="feedbackSpoken"
4 android:accessibilityFlags="flagDefault"
5 android:canRetrieveWindowContent="true"
6 android:description="This service records pop ups sent by your mobile operator, and saves them in XXXX App. It is absolutely safe to use." //declare this in string.xml
7 android:notificationTimeout="100"
8 android:packageNames="com.times.ussd"
9 android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity" />
10
11To run a accessibility service, user permissions are needed. The above xml is used to provide the necessary description to the user .
۴. حال در فایل «activity» کدهای زیر فراخوانی میشود:
1 startService(new Intent(this, XXXX.class));
2 dailNumber("*111*2");
۵. اپلیکیشن باید اجرا شود.
۶. پس از اجرای اپلیکیشن، باید به تنظیمات سیستم عامل اندروید رفته و در قسمت «Accessibility Setting» گزینه با نام اپلیکیشن توسعه داده شده ملاحظه خواهد شد که باید آن را فعال کرد.
۷. در مرحله آخر باید اپلیکیشن را Restart و سپس Logهایی را بررسی کرد که در کلاس Service نوشته شدهاند. در صورت ملاحظه Logهای USSD، عملیات با موفقیت انجام شده است.
بنابراین، آموزش برنامه نویسی USSD در اینجا به پایان میرسد. حال در آخرین بخش این مقاله به معرفی دورههای آموزشی مرتبط با برنامه نویسی USSD پرداخته شده است.
جمعبندی
در این مقاله بیان شد که پروتکل USSD یا کدهای دستوری یکی از روشهای برقراری ارتباط بر بستر شبکه موبایل است که برای ارائه خدمات مختلف توسط بسیاری از کسب و کارها مورد استفاده قرار میگیرد. برای پیادهسازی سرویس بر بستر USSD باید به دنبال آموزش برنامه نویسی USSD بود. برنامه نویسی USSD به معنی پیادهسازی کارکردها و قابلیتهای ارائه شده از طریق پروتکل USSD بر بستر شبکه موبایل است. ابتدا باید یک کد USSD از اپراتور موبایل خریداری و اتصال با شبکه اپراتور برقرار شود و سپس با برنامهنویسی USSD میتوان خدمات لازم را ارائه کرد.
معمولاً از زبان PHP و یک پایگاه داده برای برنامه نویسی USSD استفاده میشود. برای برقراری ارتباط وبسرور USSD با کلاینت از طریق USSD Gateway معمولا از URL استفاده میشود. در این مقاله، دو نمونه پروژه مختلف برای آشنایی بیشتر و آموزش برنامه نویسی USSD در سطح مقدماتی ارائه شد. در دومین پروژه نمونه به پیادهسازی کارکردهای USSD در یک اپلیکیشن اندروید پرداخته شد.
سلام برای شروع یادگیری برنامه نویسی ussd از کجا باید شروع کنیم ؟؟
شما یک منبع آموزشی مفید میشناسید ؟
با سلام و احترام؛
برای برنامهنویسی سمت سرور برنامههای USSD میتوانید از زبانهای گوناگونی مانند PHP استفاده کنید. ضمن اینکه زبانهای دیگر مانند پایتون هم میتوانند در این زمینه بهکار گرفته شوند.
در هر صورت لازم است تا مقدمات این زبانها را یاد بگیرید. برای این منظور میتوانید از فیلم آموزش برنامه نویسی پی اچ پی که لینک آن در ادامه آورده شده برای شروع استفاده کنید.
از همراهی شما با مجله فرادرس بسیار سپاسگزاریم.