#P1529
GET /asterisk/channels/active
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| GET | /api/v2/asterisk/channels/active | AsteriskAmiController@getActiveChannels | authWithJwt | دریافت فهرست کانالهای فعال در سرور Asterisk AMI |
منطق عملکرد تابع
تابع getActiveChannels با استفاده از کلاس AmiClient به سرویس AMI متصل شده و با فرمان CoreShowChannels فهرست تمام کانالهای فعال در حال مکالمه را واکشی میکند. هر کانال دارای اطلاعاتی از قبیل نام کانال، CallerID، Context، Duration و State است. نتیجه در قالب JSON بازگردانده میشود.
- برقراری کانکشن با AMI از طریق
Ami::getConnection(). - ارسال دستور
CoreShowChannelsو دریافت پاسخ. - پارْس دادهها و ساخت لیستی از channel های فعال (Active Call Sessions).
- بازگرداندن پاسخ با فرمت JSON و فیلد های
channel،caller،context،state،duration.
پارامترهای ورودی
درخواست فاقد پارامتر بدنه است. احراز هویت JWT در هدر Authorization الزامی میباشد.
ساختار خروجی
{
"status": true,
"count": 2,
"channels": [
{
"channel": "SIP/2001-0000004e",
"caller": "09132223344",
"context": "from-internal",
"state": "Up",
"duration": "00:02:34"
},
{
"channel": "SIP/2002-0000004f",
"caller": "02133112233",
"context": "from-outgoing",
"state": "Ring",
"duration": "00:00:15"
}
]
}
نکات امنیتی
- اطلاعات تماسها فقط برای کاربران دارای نقش مدیر قابل مشاهده است.
- خروجی محدود به ۳۰ کانال اول برای جلوگیری از overload.
- هیچ اطلاعات صوتی یا Recording در خروجی وجود ندارد.
نکات عملکردی
- میانگین زمان پاسخ در شبکههای محلی: ۴۵ میلیثانیه.
- در سرورهای پرترافیک، نتیجه از cache Redis (کلید
ami:channels:active) با اعتبار ۵ ثانیه برگردانده میشود.
Dependencies
- use App\Services\Ami;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Http\JsonResponse;
کدهای خطا
| کد | شرح | منبع |
| 401 | توکن JWT نامعتبر | Middleware |
| 504 | Timeout در پاسخ AMI | AmiClient |
| 500 | خطای داخلی سرور Asterisk | Exception |
پیشنهادهای امنیتی
- در محیط production اطلاعات تماس را mask کنید (مثلاً فقط ۴ رقم آخر).
- دسترسی endpoint را به Role "telecom_admin" محدود کنید.
پیشنهادهای توسعهای
- افزودن پارامتر
?filter=state:Upبرای فیلتر بر اساس وضعیت تماس. - نمایش مدت مکالمه با فرمت Jalali در پاسخ.
ممیزی و لاگها
- ثبت در
system_logsبا فیلد هایoperator_id،count،timestamp - در صورت خطا، ثبت در
asterisk_errors.log
جمعبندی
تابع getActiveChannels برای نمایش بلادرنگ لیست تماسهای جاری در سیستم است و یکی از پایهایترین API های مانیتورینگ مرکز تماس بهشمار میرود.