Skip to main content
#P1533

POST /asterisk/sms/send

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/asterisk/sms/send AsteriskAmiController@sendSms authWithJwt ارسال پیامک از طریق ماژول Asterisk AMI و ثبت در سیستم پیام های خروجی

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

تابع sendSms برای ارسال پیامک از ماژول GSM متصل به Asterisk کاربرد دارد. پارامترهای number و message اعتبارسنجی می‌شوند و در صورت دارا بودن device مجاز، دستور AMI با Action DongleSendSms به سرور ارسال می‌شود. پس از ارسال موفق، رویداد وب‌سوکت در کانال sms_notification منتشر و لاگ در جدول ami_sms_logs ثبت می‌شود.

  1. اعتبارسنجی پارامترهای ورودی (number و message).
  2. تشخیص دستگاه ارسال (device) و بررسی اتصال به AMI.
  3. ساخت دستور AMI از نوع DongleSendSms.
  4. ارسال و دریافت نتیجه (بررسی Response: Success).
  5. ثبت رویداد در وب‌سوکت و ذخیره در پایگاه داده.

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

نام محل نوع الزامی توضیح
number Body string بله شماره گیرنده به فرمت IR مثلاً 09132223344
message Body string بله متن پیامک (UTF-8)
device Body string خیر نام دونگل یا ماژول ارسال مثلاً dongle0

ساختار خروجی

{
  "status": true,
  "message": "SMS sent successfully",
  "data": {
    "id": "1732361012_912223344",
    "recipient": "09132223344",
    "device": "dongle0",
    "status": "sent",
    "timestamp": "2025-11-23T15:03:12+03:30"
  }
}

نکات امنیتی

  • نیازمند توکن JWT معتبر و نقش telecom_operator یا system_admin است.
  • ارسال به شماره‌های غیرمجاز (لیست سیاه) بلافاصله رد می‌شود.
  • هر درخواست در جدول ami_sms_logs ذخیره می‌شود (شامل operator_id و status).

عملکرد

  • میانگین زمان ارسال: ۲۰–۸۰ میلی‌ثانیه (بسته به پاسخ ماژول).
  • پشتیبانی از queue داخلی در صورت در صف بودن ماژول.

Dependencies

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

کدهای خطا

کد شرح منبع
400 پارامترهای ورودی نامعتبر Validation
403 عدم مجوز ارسال پیامک Authorization
500 خطای پاسخ AMI AMI Service
504 Timeout در دریافت پاسخ از Asterisk Gateway

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

  • اعمال Rate Limit ۵ درخواست در ۵ ثانیه برای هر کاربر.
  • رمزنگاری متن پیامک در Database (اختیاری برای پیام‌های حساس).

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

  • پشتیبانی از ارسال انبوه (Bulk SMS).
  • افزودن پارامتر schedule_at برای ارسال زمان‌بندی‌شده.
  • دریافت Delivery Reports (DLR) از ماژول.

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

  • ثبت در system_logs با کلید asterisk_send_sms.
  • ذخیره‌ی فیلدها: operator_id، device، recipient، status.

جمع‌بندی

sendSms درگاه اصلی ارسال پیامک سیستم Asterisk است که امکان کنترل و مانیتورینگ بی‌درنگ پیام‌های خروجی را فراهم می‌کند. قابل گسترش برای ارسال انبوه، زمان‌بندی و گزارش تحویل می‌باشد.