#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 ثبت میشود.
- اعتبارسنجی پارامترهای ورودی (
number و message).
- تشخیص دستگاه ارسال (
device) و بررسی اتصال به AMI.
- ساخت دستور AMI از نوع
DongleSendSms.
- ارسال و دریافت نتیجه (بررسی
Response: Success).
- ثبت رویداد در وبسوکت و ذخیره در پایگاه داده.
پارامترهای ورودی
| نام |
محل |
نوع |
الزامی |
توضیح |
| 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 است که امکان کنترل و مانیتورینگ بیدرنگ پیامهای خروجی را فراهم میکند. قابل گسترش برای ارسال انبوه، زمانبندی و گزارش تحویل میباشد.