USSD چیست؟
برای آموزش برنامه نویسی USSD باید بدانیم که USSD چیست؟ USSD مخفف انگلیسی Unstructured Supplementary Service Data و به معنای دادههای خدمات تکمیلی بدون ساختار میباشد. USSD یک پروتکل پیامرسانی در شبکه های تلفن همراه (GSM) است. شاید فکر کنید USSD بسیار شبیه SMS میباشد اما اینطور نیست. عملکرد USSD به این صورت میباشد که اگر یک خط ارتباطی باز باشد، شما میتوانید با شمارهگیری کد دستوری مورد نظر به سرویس مربوطه متصل شوید.
این اتصال توسط اپراتور تلفن همراه شما انجام میشود. البته سرویس هایی هستند که حتی بدون داشتن سیم کارت میتوانید از آنها استفاده کنید. زمانی که اتصال به سرویس انجام شد شما میتوانید از امکانات و خدمات سرویس استفاده کنید و یا به اطلاعات مربوط به سیم کارت تلفن همراه خود به صورت امن دسترسی داشته باشید. برای اطلاعات بیشتر می توانید آموزشهای مقدماتی تا پیشرفته فرادرس را در این مورد مشاهده کنید.
نکته: این سرویس با اپراتورهای تلفن همراه کار میکند و نیازی به گوشی تلفن همراه هوشمند ندارد.
کد های دستوری یا USSD
کدهای USSD که معمولاً به آنها کدهای دستوری نیز میگویند، کدهایی هستند که با استفاده از گوشی تلفن همراه، جهت اتصال به سرویس USSD شمارهگیری میشوند و پس از آن که به سرویس مدنظر خود متصل شدیم، در مقابل میتوانیم کارهایی را انجام دهیم و یا درخواست خدمات کنیم.
بگذارید به زبان عامیانه در آموزش برنامه نویسی USSD برایتان صحبت کنیم. درواقع کدهای USSD همان دستورات همراه با ستاره * و مربع # هستند؛ مانند #۱۱۵* یا #۱۱۰*. یک کد USSD با کاراکتر ستاره * شروع میشود و با ترکیبی از ستاره و اعداد انگلیسی ادامه مییابد؛ در نهایت با کاراکتر مربع # دستور به پایان میرسد.
زمانی که شما یک کد USSD را وارد میکنید یک پنجره با محتوای … USSD code runnig ظاهر میشود. به شکل زیر توجه کنید:
ممکن است این تصویر در گوشیهای مختلف متفاوت باشد اما شکل کلی آن به همین صورت است. زمانی که این پیغام ظاهر میشود تقریباً ۲ الی ۳ ثانیه طول میکشد تا کد اجرا شود و در نهایت نتیجه بر روی صفحه گوشی ظاهر میشود.
چگونه می توان از USSD استفاده کرد؟
در ادامه آموزش برنامه نویسی USSD می خواهیم بدانیم چگونه میتوان از USSD استفاده کرد؟ برای استفاده از این کدها ابتدا باید کد دستوری مورد نظر خود را بدانید، سپس به بخش تماس تلفن همراه خود رفته و کددستوری موردنظر را تایپ کنید و درنهایت دکمه تماس یا Call را فشار دهید تا دستور اجرا شود. پس از اجرای دستور، یک صفحه تعاملی حاوی متن باز میشود.
در این صفحه ممکن است تنها یک صفحه حاوی متن به همراه یک دکمه OK ظاهر شود که معمولا هنگام درخواست خدماتی نظیر باقیمانده حساب و یا اعتبار ظاهر میشود. ممکن است پس از شمارهگیری کد مورد نظر پیغامی حاوی محتوای : “مشترک گرامی درخواست شما بررسی و نتیجه از طریق پیامک ارسال خواهد شد” به همراه یک گزینه OK برای شما نمایش داده شود. در این صورت خدمات درخواستی به صورت SMS به تلفن همراه شما ارسال خواهد شد.
در حالت دیگر امکان انتخاب یکی از گزینه های موجود در صفحه وجود دارد. در این نوع دو دکمه Cancel و Send وجود دارد، به همراه یک کادر متنی که باید شماره گزینه مورد نظر خود را در آن وارد کنید؛ معمولا گزینه های موجود به صورت یک لیست همراه با شماره در کنار هر گزینه نمایش داده میشوند که باید یکی از گزینه ها را انتخاب و شماره آن را تایپ کنید و سپس گزینه Send را بزنید.
زمانی که شما یک کد USSD را شمارهگیری میکنید بسته به نوع تلفن همراه شما ممکن است یکسری عملیات مختلف مانند صدا و لرزش اتفاق بیوفتد.
در حالت دوم که ذکر کردیم شما میتوانید به جای وارد کردن کد اصلی و انتخاب یکی از گزینه های مورد نظر (تنها در صورتی که از شماره گزینه اطلاع دارید)، به صورت یک کد ترکیبی و مستقیم از خدمات مورد نظر استفاده کنید.
مثال : برای خرید یک بسته اینترنت ساعتی از اپراتور همراه اول ابتدا باید کد دستوری #۱۲۱* را وارد کرده و سپس گزینه ۲ یعنی اینترنت را انتخاب کنید. به جای این کار میتوانید از کد دستوری #۲*۱۲۱* استفاده کنید.
کاربرد های USSD
قبل از آموزش برنامه نویسی USSD حتماً با کدهای دستوری کار کرده اید و با کاربردهای آن آشنا هستید. از آنجایی که امروزه عملیات های خرید شارژ، بستههای اینترنت و کارت به کارت پول رو به افزایش است و دیگر مثل قدیم کاربران نمیتوانند به بانک یا خودپردازها مراجعه کنند، استفاده از کدهای USSD نجات بخش خواهد بود.
ممکن است افراد در نقطهای باشند که به اینترنت دسترسی ندارند و نتوانند از خدمات خرید شارژ و یا دیگر خدمات استفاده کنند. در این مواقع استفاده از کدهای USSD که نیازی به اینترنت و اپلیکیشن خاصی ندارد توصیه میشود.
در ادامه به برخی کاربردهای USSD اشاره میکنیم:
- خدمات خرید و پرداخت
- خدمات کارت به کارت
- چک کردن موجودی حساب یا اعتبار سیم کارت
- خدمات اطلاعاتی مبتنی بر منو
- خدمات محتوای مبتنی بر مکان
- دسترسی به برخی تنظیمات تلفن همراه
مزایای USSD
- برای استفاده از USSD نیازی به اینترنت وجود ندارد.
- نیازی به شارژ سیم کارت ندارد.
- کاملا رایگان است.
- همیشه در دسترس است.
- دارای رابط کاربری آسان است.
- دادههای محرمانه در حافظه ذخیره نمیشوند و دارای امنیت بالایی است.
- درصورتی که در کمتر از ۲۰ ثانیه پاسخی ارسال نشود کد غیرفعال میشود و باید مجدد شماره گیری شود که موجب افزایش امنیت میشود.
- قابلیت اجرا بر روی همه نوع تلفن همراه که امکان وارد کردن سیمکارت را داشته باشد.
- به نصب برنامه جانبی نیاز ندارد.
- سرعت رد و بدل اطلاعات بسیار سریع است.
- استفاده از این سرویس به صورت سراسری است.
معایب USSD
- در برخی موارد میتوان با اضافه کردن یک برنامه مخرب اطلاعات وارد شده توسط کاربران را ذخیره و سوء استفاده کرد.
- امکان ذخیره پیام های ارسالی به کاربر در تلفن همراه وجود ندارد. در اکثر موارد کاربر مجبور به گرفتن اسکرین شات خواهد بود.
- برای اینکه سرویس بتواند اطلاعاتی را به کاربر ارسال کند که قابلیت ذخیره داشته باشد از SMS استفاده میکند.
- دارای صفحه ساده ای است و از طراحی های گرافیکی بهره نمیبرد.
- هنگام وارد کردن اطلاعات محرمانه، آنها را نمایش میدهد.
- ممکن است با کدهای کثیف از کاربران سوء استفاده شود.
- محدودیت در ارسال تصویر و ویدیو
- هزینه بالای خریداری یک کد دستوری
مقایسه USSD و SMS
در سرویس SMS زمانی که شما یک پیامک ارسال میکنید در حافظه ذخیره میشود اما در USSD این اتفاق نمیافتد. همچنین زمانی که شما پیامک ارسال میکنید ابتدا باید در شبکه ذخیره شود سپس به مقصد فرستاده شود اما در USSD بلافاصله پس از درخواست پیغام را دریافت میکنید.
در SMS ارتباط بین دو تلفن همراه خواهد بود اما در USSD ارتباط تنها بین تلفن همراه و اپراتور میباشد. درواقع USSD نوعی ارتباط لحظهای است که امکان ذخیره دادهها را ندارد.
چگونه یک کد USSD بسازیم؟
در مبحث آموزش برنامه نویسی USSD برای راهاندازی یک سرویس USSD نیاز دارید چند کار انجام دهید. در ادامه به این موارد اشاره میکنیم:
- یادگیری برنامه نویسی USSD
- خرید یک درگاه آماده
- رزرو یا خرید کد USSD
یادگیری برنامه نویسی USSD
برای یادگیری برنامه نویسی USSD مانند دیگر برنامه نویسی ها نیازمند شناسایی پیشنیازها و آشنایی با برنامه نویسی ابتدایی هستید. زبانی که برای برنامه نویسی USSD مورد استفاده قرار میگیرد PHP میباشد. درنتیجه برای نوشتن برنامه نیازمند یادگیری زبان برنامه نویسی PHP میباشید.
توجه کنید که آموزش زیر صرفا یک شبیه سازی از برنامه نویسی USSD میباشد و برای ساختن کد دستوری USSD واقعی نیازمند صرف هزینه میباشید.
شروع به کار
- قبل از هرکاری ابتدا نرم افزار Postman را نصب کنید.
نکته : افزونه Postman برای مرورگر کروم درحال حاضر منسوخ شده است و بهتر است نرم افزار آن را نصب کنید.
- وب سرور را اجرا کنید.
- یک برنامه ویرایشگر متن مانند Visual Studio Code باز کنید.
ما در پست آموزش برنامه نویسی USSD تنها شبیه سازی انجام دادهایم. به این معنی که از live gateway استفاده نشده است.
نمونه درخواست
از آنجایی که این آموزش تنها یک شبیهسازی میباشد باید مقادیری را به عنوان نمونه درخواست ارسال کنیم. مقادیر به صورت زیر خواهد بود.
- ‘MSISDN’ => ‘254714611388’ : شماره تلفن ارسال کننده درخواست
- ‘SESSION_ID’ => ‘355562002’ : جلسه برای زمانی که نیاز به ممیزی (ارزیابی) وجود داشته باشد.
- ‘USSD_STRING’ => ’58*1234*456*252′ : یک رشته میباشد که حاوی پاسخ هایی است که کاربر وارد میکند.
دقت داشته باشید که در برنامه نویسی USSD، پاسخ هایی که توسط کاربر دریافت میشود باید با کاراکتر * از هم جدا شوند. مورد بعدی که وجود دارد این است که باید با تابع ()explode در PHP آشنایی داشته باشید.
کدنویسی USSD
در برنامه نویسی USSD باید به CON و END توجه ویژهای داشته باشید. چرا که CON به زمانی که یک کاربرد باید مقداری را به عنوان پاسخ وارد کند اشاره دارد. دقت کنید همانطور که در بالا ذکر کردیم زمانی که کاربر در زمان بیش از ۲۰ ثانیه پاسخ وارد نکند کد غیرفعال میشود.
همچنین از END زمانی استفاده میشود که بخواهید پایان جلسه را مشخص کنید. پایان جلسه همان پیغامی است که به کاربر داده میشود که معمولا دارای تنها یک گزینه OK میباشد.
در ادامه پست آموزش برنامه نویسی USSD کدهای مربوطه آورده شده است:
<?php $text=$_GET['USSD_STRING']; $phonenumber=$_GET['MSISDN']; $serviceCode=$_GET['serviceCode']; $level = explode(“*”, $text); if (isset($text)) { if ( $text == “” ) { $response=”CON Welcome to the registration portal.\nPlease enter you full name”; } if(isset($level[0]) && $level[0]!=”” && !isset($level[1])){ $response=”CON Hi “.$level[0].”, enter your ward name”; } else if(isset($level[1]) && $level[1]!=”” && !isset($level[2])){ $response=”CON Please enter you national ID number\n”; } else if(isset($level[2]) && $level[2]!=”” && !isset($level[3])){ //Save data to database $data=array( ‘phonenumber’=>$phonenumber, ‘fullname’ =>$level[1], ‘electoral_ward’ => $level[2], ‘national_id’=>$level[3] ); $response=”END Thank you “.$level[1].” for registering.\nWe will keep you updated”; } header(‘Content-type: text/plain’); echo $response; } ?>
توضیحات کد بالا :
ابتدا دادههای موجود بر روی سرور دریافت خواهند شد.
<?php $text=$_GET['USSD_STRING']; $phonenumber=$_GET['MSISDN']; $serviceCode=$_GET['serviceCode'];
پاسخ ها توسط کاراکتر* از هم جدا شده و به کمک تابع Explode تبدیل به یک آرایه میشود.
$level = explode("*"، $text);
متغیر متنی بررسی میشود تا از خالی نبودن متغیر اطمینان حاصل شود. زیرا اگر کاربر متنی وارد نکند خطا رخ خواهد داد.
if (isset($text)) {
نمایش یک صفحه خوش آمدگویی
if ( $text == “” ) { $response=”CON Welcome to the registration portal.\nPlease enter you full name”; }
بررسی تمامی داده ها
if(isset($level[0]) && $level[0]!=”” && !isset($level[1])){ $response=”CON Hi “.$level[0].”, enter your ward name”; } else if(isset($level[1]) && $level[1]!=”” && !isset($level[2])){ $response=”CON Please enter you national ID number\n”; } else if(isset($level[2]) && $level[2]!=”” && !isset($level[3])){ //Save data to database $data=array( ‘phonenumber’=>$phonenumber, ‘fullname’ =>$level[1], ‘electoral_ward’ => $level[2], ‘national_id’=>$level[3] ); //Insert the values into the db SOMEWHERE HERE!!
پایان جلسه
$response=”END Thank you “.$level[1].” for registering.\nWe will keep you updated”; }
درصورتی که درخواست موفق باشد پاسخ دوباره به کاربر نمایش داده شود.
header(‘Content-type: text/plain’); echo $response; } ?>
تست کد ها در آموزش برنامه نویسی USSD
تبریک میگوییم! تا این مرحله از آموزش برنامه نویسی USSD موفق شدید کدهای خودتان را بنویسید اما باید از اجرای درست کدها اطمینان حاصل کنیم. برای این کار به ترتیب موارد گفته شده را انجام دهید:
- فایلی که در آن کدهای PHP را نوشته اید در پوشه وب سرور قرار دهید. این پوشه معمولا به نام htdocs یا /var/www/html میباشد.
- کلاینت Postman را باز کنید.
- آدرس اینترنتی را در localhost قرار دهید.
- پارامترهایی که در بخش نمونه درخواست این پست ذکر کردیم به آدرس اضافه کنید.
- درخواست را ارسال کنید منتظر بمانید تا کلاینت Postman یک پنجره پاسخ نمایش دهد.
- رشته USSD را ویرایش کنید. مثلا با اضافه کردن نام کاربر.
- حال یک پیغام دیگر نمایش داده خواهد داشت. یک کاراکتر * بعد از نام کاربر قرار دهید، همانطور که میدانید کاراکتر * به عنوان جداکننده عمل میکند. آنقدر این کار را انجام دهید تا اینکه پیامها اتمام شوند.
فرآیند فوق یک نمونه تست برنامه نویسی USSD میباشد. برای پیاده سازی واقعی این عملیات نیازمند صرف هزینه و زمان است. اگر در حال خواندن این مقاله هستید پس احتمالاً به برنامه نویسی اندروید نیز علاقه مندید. پیشنهاد می کنیم مجموعه آموزش برنامه نویسی اندروید فردارس را نیز مطالعه کنید.
سخن آخر در مورد آموزش برنامه نویسی USSD
در این مطلب در مورد آموزش برنامه نویسی USSD صحبت کردیم و نمونهای از نحوه کار USSD را ذکر کردیم. همانطور که میدانید کدهای دستوری که هم اکنون ما از آنها استفاده میکنیم بدون نیاز به اینترنت و کاملا دور از محدودیت مورد استفاده قرار میگیرد و هر کاربری با هر تلفن همراه و سیستم عاملی میتواند از این فناوری استفاده کند.
آنچه که حائز اهمیت است جا افتادن این فناوری در بین مردم به خصوص ایران میباشد و تقریبا هیچ کس وجود ندارد که بگوید از این فناوری استفاده نمیکند. به تازگی اپلیکیشن هایی که برای استفاده از آن نیاز به اینترنت دارید جایگزین کدهای دستوری شده است که هرکدام مزایا و معایب خود را دارند. اما آیا ما همیشه به اینترنت دسترسی داریم؟
طبیعتاً پاسخ خیر است! در این پست شما میتوانید با نحوه شروع به کار با این فناوری را یاد بگیرید و درصورتی که مایل باشید تا کد دستوری خود را بسازید بتوانید خود، با فراگیری زبان PHP، کد USSD بسازید. پیشنهاد می کنیم در فرصتی مناسب مقاله آموزشی ما را برای کسب درآمد از راه برنامه نویسی و فروش فایل نیز مطالعه کنید.
2 پاسخ
دمت گرم
سلام با گوشی چطور می تونم این کد ussd رو برای سرور خودم راه اندازی کنم؟