#P1474
GET /api/v2/panel/bulk/receptions
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| GET |
/api/v2/panel/bulk/receptions |
V2BaseController@smsPanelGetBulkReceptions |
authWithJwt |
دریافت لیست پیامهای انبوه ارسالشده در پنل پیامک فعال برای شعبه فعلی |
منطق عملکرد تابع
تابع
smsPanelGetBulkReceptions به سرویس پیامکی متصل شده و دادههای آماری پیامهای گروهی ارسالشده را بازیابی میکند:
- با استفاده از تنظیمات موجود در جدول
application_interface سرویس sms فعال شعبه یافت میشود.
- متد
getBulkReceptions() از کلاس SDK MelipayamakApi فراخوانی شده و فهرست پیامهای گروهی بازگردانده میشود.
- هر پیام به آرایهای شامل شناسه، فرستنده، متن، تعداد گیرندگان، زمان ارسال و درصد موفقیت تبدیل میگردد.
- در نهایت، دادهها به صورت JSON با وضعیت موفقیت و زمان یونیکس بازگردانده میشوند.
| نام فیلد |
نوع داده |
الزامی |
توضیح |
| branch |
integer |
بله |
شناسه شعبه جهت بازیابی تنظیمات سرویس پیامکی |
نمونه درخواست:
GET /api/v2/panel/bulk/receptions
Authorization: Bearer {JWT_TOKEN}
Content-Type: application/json
?branch=5
خروجی (Response)
| فیلد |
نوع داده |
توضیح |
| bulk_id |
integer |
شناسه یکتا کمپین ارسال پیامک گروهی |
| sender |
string |
شماره فرستنده پیام |
| text |
string |
متن پیام ارسالشده |
| count |
integer |
تعداد کل گیرندگان پیام |
| delivered |
integer |
تعداد پیامهای موفق تحویلشده |
| failed |
integer |
تعداد پیامهای ناموفق یا ردشده |
| datetime |
string |
زمان ارسال کمپین (فرمت ISO) |
| success_rate |
float |
نسبت موفقیت تحویل پیامها (درصد) |
نمونه پاسخ:
{
"status": true,
"meta": { "timestamp": 1732290419 },
"items": [
{
"bulk_id": 9021,
"sender": "5000400008851",
"text": "تخفیف ویژه پروازهای داخلی فقط امروز!",
"count": 1320,
"delivered": 1287,
"failed": 33,
"datetime": "2025-11-22T08:15:00Z",
"success_rate": 97.5
},
{
"bulk_id": 8904,
"sender": "5000400008851",
"text": "اعلان تغییر قوانین رزرو آنلاین",
"count": 698,
"delivered": 684,
"failed": 14,
"datetime": "2025-11-20T06:43:00Z",
"success_rate": 97.9
}
]
}
نکات امنیتی
- وابسته به اعتبار توکن JWT و سطح دسترسی پیامکی شعبه.
- اطلاعات پیامهای انبوه ممکن است شامل متنهای حساس یا تبلیغاتی باشد — پیشنهاد رمزنگاری ذخیرهٔ محلی.
- فیلتر نقش در نسخه فعلی وجود ندارد؛ هر اپراتور شعبه میتواند کل فهرست را مشاهده کند.
- تابع سریع اما وابسته به latency سرویس خارجی.
- در فراخوانیهای متوالی توصیه میشود cache محدود Redis برای مدت ۵ دقیقه ایجاد گردد.
- مدت پاسخ معمولی بین ۲ تا ۳ ثانیه (بسته به حجم داده).
وابستگیها
- use App\Lib\MelipayamakApi;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Http\Request;
- use Exception;
کدهای خطا
| کد |
شرح خطا |
منبع |
| 1006 |
توکن JWT نامعتبر یا منقضی شده |
authWithJwt |
| 404 |
عدم یافتن تنظیمات سرویس پیامک برای شعبه |
smsPanelGetBulkReceptions() |
| 500 |
خطای پاسخ از سرویس Melipayamak یا SOAP Data Invalid |
MelipayamakApi::getBulkReceptions() |
پیشنهادهای امنیتی
- اعمال Role-based Access فقط برای کاربرانی با نقش
sms_manager.
- ثبت لاگ برای هر مشاهده داده پیامک گروهی (type:
ViewBulkSMS).
- پنهانسازی متن پیام در حالت عمومی؛ فقط در حالت administrative نمایش داده شود.
پیشنهادهای بهبود
- افزودن فیلدهای
cost و provider_response_time برای تحلیل اقتصادی ارسال پیامها.
- افزودن endpoint فیلتر بر اساس بازه زمانی و درصد موفقیت.
- ایجاد Caching مبتنی بر Redis با prefetch خودکار دادهها برای شعب فعال.
ممیزی و لاگها
- در نسخه فعلی هیچ ممیزی خروجی برای مشاهده پیامهای انبوه انجام نمیشود.
- پیشنهاد: ثبت در جدول
system_logs با رویداد BulkSMSViewed.
جمعبندی
مسیر /panel/bulk/receptions به عنوان بخش گزارش پیامهای انبوه پنل پیامکی عمل میکند. دادههای خروجی ساده و بدون نقشبندی است و در نسخه فعلی به عنوان نقطه ضعف امنیتی شناخته میشود. در ساختار Enterprise لازم است احراز نقش و ساختار audit کامل افزوده گردد و caching دورهای برای سنجش عملکرد سرویس پیامک فعال شود.