خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آموزش برنامه نویسی ussd

آموزش برنامه نویسی ussd
در این آموزش قصد داریم آموزش برنامه نویسی ussd را با هم داشته باشیم. حدس من بر اینست که شما به عنوان مخاطب این مقاله قطعاً می دانید ussd چیست و چه کاربردهایی دارد. با این حال برای این که زبان مشترکی بین ما و شما وجود داشته باشد و دچار سوء تفاهم نشویم، تعریف رایج ussd و هدف از آن را مورد اشاره قرار می دهم. ussd سر نام کلمات موجود در عبارت Unstructured Supplementary Service Data می باشد. امروزه به طور عمده توسط مخابرات و اپراتورهای موبایل از کدهای دستوری ussd استفاده می شود و تقریباً همۀ افراد حتی اگر نام ussd را ندانند، ده ها بار از آن استفاده کرده اند. به عنوان مثال وقتی با کدهایی مثل \(\text{*140*11#}\) از اعتبار موجود در موبایل اعتباری تان مطلع می شوید، در واقع در حال استفاده از پروتکل ussd می باشید.

خوب، حالا که روشن ساختیم موضوع آموزش برنامه نویسی ussd دقیقاً در چه زمینه ای است و جلوی سوء برداشت ها یا احیاناً تشابه های اسمی دیگر را گرفتیم به ادامۀ آن می پردازیم. ذکر این نکته ضرورت دارد که در این آموزش ما از زبان برنامه نویسی php استفاده خواهیم کرد. اگر در زمینۀ این زبان برنامه نویسی، نیاز به آموزش های تکمیلی بیشتری داشته باشید، می توانید از آموزش برنامه نویسی PHP که در فرادرس منتشر شده است، استفاده کنید:


برای برنامه نویسی ussd دو روش کلی وجود دارد. اول اینکه مستقیماً با شرکت مخابرات یا اپراتورهای موبایل کار کنید و از آنها سرویس ussd خریداری کنید و سپس با API برنامه نویسی که آنها در اختیارتان قرار می دهند، برنامه نویسی سرویس مورد نظرتان را انجام دهید. روش دوم اینست که با شرکت های واسطی که بین شما و مخابرات قرار می گیرند، کار کنید. هر چند هدف ما در اینجا مشاورۀ سازمانی نیست و بیشتر روی موضوع برنامه نویسی متمرکز خواهیم شد. اما اگر بخواهم تجربه ام را با شما به اشتراک بگذارم همینجا دو توصیه مهم به شما می کنم. اگر کارمند یک شرکت نسبتاً بزرگ با گردش مالی بالا هستید. توصیه می کنم با مخابرات مستقیم وارد کار شوید تا در بلند مدت، دچار مشکلات ریز و درشت مختلف کار با واسطه ها نشوید. اما اگر در یک شرکت متوسط یا کوچک مشغول هستید، گزینۀ مناسب اینست که با شرکت های واسط همکاری کنید. البته به لحاظ سادگی کار، در هر دو حالت شرکت های واسط مناسب ترند. این شرکت ها علاوه بر اینکه api های اختصاصی ساده تری دارند، غالباً پنلی نیز در اختیار شما قرار می دهند که کلی امکانات از پیش آماده در آن وجود دارد که حتی بدون یک خط برنامه نویسی می توانید سرویس ها و خدماتی را در بستر ussd ارائه دهید.

مقدمات آموزش برنامه نویسی ussd


همانطور که در مقدمۀ این مقاله اشاره کردیم، دو روش کلی برای برنامه نویسی ussd وجود دارد. در این جا می خواهم دید دیگری به این قضیه داشته باشم و از جنبۀ مهم دیگری به آن بپردازم. برنامه نویسی ussd مشابه برنامه نویسی عمومی نیست که کدهای یکسانی وجود داشته باشد که در هر شرایطی به یک شکل رفتار کنند و خروجی آن ها یکسان باشد. از آنجا که در برنامه نویسی ussd از واسط های برنامه نویسی استفاده می کنیم، طبیعتاً بسته به شرکتی که این api ها را آماده کرده است، مدل برنامه نویسی ما، کلاس هایی که از آن استفاده می کنیم و حتی ساختارهای برنامه نویسی ussd متفاوت خواهند بود. هیچ قانون و استاندارد کلی هم وجود ندارد که این شرکت ها را ملزم به استاندارد واحدی کند. البته به طور کل هنگامی که از api ها برای برنامه نویسی استفاده می کنید، این صورت مسئله وجود دارد و فقط مخصوص برنامه نویسی ussd نمی باشد. شما باید مطابق استانداردها و الگوها و البته مثال هایی که شرکت تولید کنندۀ api ارائه کرده است پیش بروید. با این حال در طول این مقاله یکی از الگوهای موجود را پیش می گیریم تا شما دیدی نسبی به قضیه داشته باشید و بتوانید ضمن آشنایی با این الگو، تسلط کافی برای کار با الگوهای مشابه را پیدا کنید.


در ادامۀ آموزش برنامه نویسی ussd یک برنامۀ ساده با زبان برنامه نویسی php می سازیم. همین جا یک سوال پیش می آید و آن اینکه آیا برای برنامه نویسی ussd حتماً باید سرویس ussd را خریداری کرده باشید؟ پاسخش اینست که الزاماً همینطور است و از قبل باید این سرویس را بخرید. اما خوشبختانه یک سرویس شبیه ساز برنامه نویسی ussd نیز وجود دارد که از طریق سایت africastalking.com می توانید به رایگان از آن استفاده کنید. بعد از اینکه در این وبسایت ثبت نام کردید، یک محیط شبیه سازی شدۀ کامل برای برنامه نویسی ussd در اختیار شما قرار می دهد. قبل از اینکه به سراغ کد نویسی برویم، بیایید ابتدا نگاهی به خروجی برنامۀ مان بیندازیم. وقتی وارد محیط شبیه ساز این وبسایت می شوید، چیزی شبیه تصویر زیر را خواهید دید.

آموزش برنامه نویسی ussd
اگر به دنبال اطلاعات کاملی دربارۀ برنامه نویسی ussd می باشید، توصیه می کنم بعد از خواندن این آموزش، حتماً به مقالۀ آموزش برنامه نویسی ussd که در فرادرس منتشر شده است نیز، سری بزنید و دانش خود در این حوزه را تکمیل تر کنید.


بعد از اینکه طبق این آموزش به کمک این شبیه ساز برنامه نویسی ussd را انجام دادید مشابه تصویر زیر هنگامی که کد دستوری خاصی همانند \(\text{*384*70067#}\) را وارد می کنید و دکمۀ Call را می فشارید، چیزی مشابه تصویر زیر را خواهید دید. بعد از شماره گیری این کد دستوری، پاسخی که دریافت می کنید این است که، چه چیزی را می خواهید بررسی کنید: 1. شماره حساب من، 2. شماره تلفن من. در واقع این برنامه با توجه به انتخاب شما، دادۀ متفاوتی را از سرور بازیابی کرده و آن را در قالب کد ussd به شما باز می گرداند. در همینجا باید به یک نکتۀ بسیار مهم دیگر نیز اشاره کنم. اگر دقت کرده باشید، در سرویس های موبایل داخل ایران، گاهی اوقات پاسخ های ussd در قالب خود همین پروتکل ارائه می شوند اما گاهی اوقات در غالب پیامک باز گردانده می شوند. شاید برایتان سوال پیش آید که چرا اینطور است و چرا برای کل فرآیند یک جلسۀ کاری، از یک پروتکل واحد استفاده نمی شود و گاهی پیامک را دخیل می کنند. در پاسخ به این سوال مهم باید خدمتتان عرض کنم که دلیلش محدودیت های مرتبط با پروتکل ussd می باشد. حجم داده ای که این پروتکل می تواند داشته باشد، اندک است و برای همین اگر داده ها از میزان خاصی بالاتر بزنند، از سرویس ها و پروتکل های دیگر همچون پیامک به عنوان بخشی از فرآیند ارتباطی استفاده می شود.

آموزش برنامه نویسی ussd

فرض کنید در این صفحه ما عدد 1 را به عنوان پاسخ وارد کنیم و دکمۀ SEND را بفشاریم تا دوباره دستور جدیدی طبق پروتکل ussd در ادامۀ جلسۀ قبلی ارسال گردد. این بار دو گزینۀ متفاوت دیگر را خواهیم داشت که در تصویر زیر می بینید. در اینجا برنامه به شما می گوید نوع اطلاعاتی را که می خواهید ببینید، تعیین کنید و دو گزینه بدین شرح می دهد: 1. شماره حساب، 2. ماندۀ حساب.

آموزش برنامه نویسی ussd
در ادامه اگر دوباره کد دستوری 1 را وارد کرده و send را کلیک کنیم. این بار مشابه تصویر زیر، شماره حساب ما به ما نشان داده خواهد شد. این جلسۀ کار با پروتکل ussd در اینجا به خاتمه می رسد و شما می توانید مجدداً از مرحلۀ اول مراحل را تکرار کنید و البته هر بار مسیر را متفاوت کنید و با گزینه های دیگر کار را ادامه دهید. اگر بخواهیم یک شباهتی بین آموزش برنامه نویسی ussd و سایر آموزش های برنامه نویسی داشته باشیم، می توانیم به محیط های کنسول و خط و فرمان اشاره کنیم. در این گونه محیط ها هر بار یک دستور از کاربر دریافت می شود و بعد از پردازش آن دستور و نمایش خروجی های آن به کاربر، دوباره سیستم منتظر دستور جدید از کاربر می ماند و متعاقب آن باز هم فقط یک دستور دیگر را از کاربر دریافت می کند. این چرخه تا جایی ادامه پیدا می کند که به آخرین شرط موجود در برنامه برسیم و در واقع به انتهای رویه جاری برسیم.

آموزش برنامه نویسی ussd
اگر به طور کل به دنیای برنامه نویسی علاقه مند هستید، می توانید با مجموعه آموزش برنامه نویسی در فرادرس دانش خود را در این زمینه ارتقاء بخشید.


آموزش برنامه نویسی ussd با زبان برنامه نویسی php


در دو قسمت پیشین این مقاله، ابتدا مقدمه ای دربارۀ برنامه نویسی ussd مطرح کردیم و سپس مراحل کار برنامه نویسی را معکوس کردیم و به جای اینکه اول کد را بنویسیم و بعد به خروجی بپردازیم، ابتدا خروجی را با هم مرور کردیم و در اینجا قصد داریم تا کدهایی که منجر به خروجی فوق شده اند را با هم مرور کنیم. البته اینکه سُرنا را از سر گشادش زدیم و مانند اِکوان دیوان کارها را وارونه انجام دادیم، به این خاطر بود که در اینجا با یک api رو به رو هستیم که مدل برنامه نویسی خاصی ندارد و در واقع می خواهیم راه حلی را به شما بیاموزیم که بتوانید در موارد مشابه از آن الگو بگیرید و طبیعتاً این گونه نیست که نگارش خط به خط این کدها در محیط شما و api شما منجر به نتایج مشابهی با آنچه که ما به شما نشان داده ایم گردد. کدهایی که در ادامه می بینید، منجر می شوند تا برنامۀ بالا نتایجی را که ملاحظه نمودید ارائه دهند.

// Read the variables sent via POST from our API
$sessionId = $_POST["sessionId"];
$serviceCode = $_POST["serviceCode"];
$phoneNumber = $_POST["phoneNumber"];
$text = $_POST["text"];

if ($text == "") {
// This is the first request. Note how we start the response with CON
$response = "CON What would you want to check \n";
$response .= "1. My Account \n";
$response .= "2. My phone number";

} else if ($text == "1") {
// Business logic for first level response
$response = "CON Choose account information you want to view \n";
$response .= "1. Account number \n";

} else if ($text == "2") {
// Business logic for first level response
// This is a terminal request. Note how we start the response with END
$response = "END Your phone number is ".$phoneNumber;

} else if($text == "1*1") {
// This is a second level response where the user selected 1 in the first instance
$accountNumber = "ACC1001";

// This is a terminal request. Note how we start the response with END
$response = "END Your account number is ".$accountNumber;

}

// Echo the response back to the API
header('Content-type: text/plain');
echo $response;


بیایید نگاهی به کدهای نوشته شده بیندازیم. در بخش آغازین این کدها سه پارامتر را از طریق متد POST دریافت می کنیم. اگر با برنامه نویسی وب آشنایی داشته باشید، حتماً می دانید که در دنیای برنامه نویسی وب ما با متدهای POST و GET می توانیم اطلاعات را از کاربر دریافت کنیم. از آنجا که در متد GET داده ها در لینک نمایان هستند و رمز گذاری نمی شوند ما از متد POST استفاده کرده ایم تا داده های ارسالی با پروتکل HTTP از دید کاربر مخفی شده و رمز نگاری شوند. اگر در ارتباط با برنامه نویسی وب و پروتکل HTTP نیاز به اطلاعات بیشتری دارید، و یا مشتاق یادگیری بیشتر هستید، می توانید از مجموعه آموزش طراحی سایت که در فرادرس انتشار یافته است، بهره بگیرید:


پارامترهایی که در سمت سرور دریافت می شوند عبارت از sessionId و چند مورد دیگر می باشند. sessionId اشاره به جلسۀ کاری خاصی که بین کاربر و سرور شما برقرار می شود، دارد. از آنجا که مجموع اطلاعات موجود در یک سشن به هم مرتبطند و در واقع ارتباطی از نوع خطی با یکدیگر دارند، وجود آیدی یونیک (غیر تکراری) برای هر سِشن (جلسه) ضرورت دارد. serviceCode اشاره به کد دستوری ussd دارد که در برنامه روی آن شرط هایی تعیین می شود. phoneNumber هم که واضح است و نیاز به توضیح ندارد، شماره موبایل شخص می باشد. طبیعتاً برای اینکه پاسخ برگردانده شود، نیاز است که در سمت سرور مشخص باشد چه موبایل خاصی این پاسخ را باید دریافت کند. text هم متن کاربر است.

همانطور که در طول این آموزش برنامه نویسی ussd گفتیم، میزان داده هایی که پروتکل ussd می تواند جابجا کند محدود است، برای همین پاسخ هایی که از کاربر دریافت می شوند نیز معمولاً محدود به چند کاراکتر خاص مثل عدد 1 یا 2 یا نهایتاً yes و no غیره می باشند. علاوه بر آن که پروتکل ussd محدود است، بخش زیادی از این محدودیت نیز به صورت اجباری توسط مقادیر ضروری دیگر همچون شماره تلفن همراه شخص ارسال کنندۀ کد دستوری ussd، و خود کد دستوری اشغال می گردد و بنابراین جا برای میزان داده ای که کاربر در قالب متن پیام می تواند ارسال کند، محدودتر نیز می شود. همانطور که مشاهده می کنید، بقیۀ برنامه چیز خاصی ندارد و اگر با برنامه نویسی php آشنایی حتی نسبی و اولیه داشته باشید آن ها را به سادگی درک خواهید کرد.


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز