Skip to main content
#P1534

POST /asterisk/ussd/send

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/asterisk/ussd/send AsteriskAmiController@sendUssd authWithJwt ارسال دستور USSD در ماژول Asterisk و دریافت پاسخ از شبکه مخابراتی

منطق عملکرد تابع

تابع sendUssd دستورات کوتاه USSD را به کمک پروتکل AMI به دستگاه GSM ارسال می‌کند. ابتدا مقدار پارامتر code بررسی شده و فرمت آن با الگوی USSD تطبیق می‌یابد (مثلاً *1*123#). در صورت صحت، دستور با Action DongleSendUssd به AMI فرستاده می‌شود و در پایگاه داده به عنوان درخواست ثبت می‌شود. پاسخ خام AMI بر اساس رویداد DongleUSSD دریافت شده، در جدول ami_ussd_logs ذخیره و از طریق وب‌سوکت در کانال ussd_notification به کاربر منتشر می‌شود.

  1. اعتبارسنجی پارامترهای code و device.
  2. بررسی اتصال به AMI و دسترس بودن دستگاه مورد نظر.
  3. ارسال دستور USSD از طریق Action DongleSendUssd.
  4. ثبت در ami_ussd_logs، تماس با وب‌سوکت برای اعلان.
  5. بازگرداندن نتیجه به صورت JSON با پاسخ وضعیت شبکه.

پارامترهای ورودی

نام محل نوع الزامی توضیح
code Body string بله کد USSD مثلاً *140*1#
device Body string خیر شناسه دستگاه (مثل dongle1)

ساختار خروجی

{
  "status": true,
  "message": "USSD command sent successfully",
  "data": {
    "id": "USSD-1732362009",
    "code": "*140*1#",
    "device": "dongle1",
    "response": "Your remaining balance is 74,250 IRR",
    "timestamp": "2025-11-23T15:10:09+03:30"
  }
}

نکات امنیتی

  • این مسیر فقط برای کاربران با نقش telecom_operator یا system_admin قابل دسترسی است.
  • در صورت ارسال کدهای USSD خطرناک (مانند ریست تنظیمات سیم‌کارت)، درخواست رد و در system_logs ثبت می‌شود.
  • کلیه درخواست‌ها و پاسخ‌های شبکه در ami_ussd_logs مانیتور می‌شوند.

عملکرد

  • میانگین زمان تبادل با شبکه: ۱۰۰–۳۰۰ میلی‌ثانیه.
  • پاسخ USSD در اکثر شبکه‌ها در کمتر از ۲ ثانیه دریافت می‌شود.

Dependencies

  • use App\Services\Ami;
  • use App\Services\NotificationService;
  • use Illuminate\Support\Facades\Redis;
  • use Carbon\Carbon;

کدهای خطا

کد شرح منبع
400 ورودی نامعتبر یا کد USSD غیراستاندارد Validation
401 توکن JWT نامعتبر Authentication
403 عدم مجوز ارسال USSD Authorization
500 عدم پاسخ از AMI AMI Gateway
504 Timeout در پاسخ شبکه USSD Network

پیشنهادهای امنیتی

  • ثبت سطح دسترسی بر اساس شماره سیم کارت (IMEI).
  • اعمال Rate Limit ۱ درخواست در هر ۳ ثانیه به ازای هر دستگاه.

پیشنهادهای توسعه‌ای

  • افزودن پارامتر auto_reply برای تعامل چندمرحله‌ای با USSD.
  • ثبت تاریخی از پرس‌وجوهای سیم‌کارت برای مصارف آمارگیری.

ممیزی و لاگ‌ها

  • ثبت در ami_ussd_logs با فیلدهای code، device، response، operator_id.
  • ثبت رویداد در system_logs با کلید asterisk_send_ussd.

جمع‌بندی

sendUssd امکان مدیریت دستورات USSD را از طریق Asterisk فراهم می‌آورد و برای عملیات‌هایی مانند بررسی اعتبار، خرید بسته یا مدیریت سیم‌کارت استفاده می‌شود. این ماژول در سطح enterprise طراحی شده و دارای لاگ، وب‌سوکت و امنیت چندسطحی است.