#P1528
GET /asterisk/test-connection
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| GET | /api/v2/asterisk/test-connection | AsteriskAmiController@testConnection | authWithJwt | تست اتصال به سرویس Asterisk AMI و بررسی سلامت لینک |
منطق عملکرد تابع
تابع testConnection اتصال میان سیستم API و سرور Asterisk AMI را بررسی میکند. در صورت موفقیت، اطلاعات وضعیت فعلی (مانند version، uptime، channel count) را بر میگرداند. در صورت بروز خطا، پاسخی با کد ۵۰۰ و پیام مناسب بر میگرداند.
- فراخوانی تابع
Ami::getStats()برای دریافت جزییات ارتباط. - در موفقیت، بازگشت پاسخ JSON با
status=trueو فیلدdataحاوی آمار AMI. - در خطا، بازگشت پاسخ JSON با کد ۵۰۰ و علت در فیلد
error.
پارامترهای ورودی
هیچ پارامتر بدنه ای ندارد؛ فقط توکن احراز هویت در هدر Authorization: Bearer <token>.
ساختار خروجی
{
"status": true,
"message": "Successfully connected to Asterisk AMI",
"data": {
"version": "Asterisk 18.10.0",
"uptime": "02:15:48",
"active_channels": 3,
"timestamp": 1732363700
}
}
نکات امنیتی
- دسترسی فقط برای مدیران احراز شده با JWT.
- تلاش ناموفق بیشتر از سه مرتبه میتواند منجر به مسدود شدن IP شود (در لایه WAF).
- اطلاعات بازگشتی فاقد کلیدها یا رمزهای احراز AMI است.
نکات عملکردی
- زمان پاسخ میانگین ≈ ۵۰ میلیثانیه در شبکه داخلی.
- در صورت قطع اتصال، Exception از کلاس
AMIClientگرفته میشود.
Dependencies
- use App\Services\Ami;
- use Exception;
- use Illuminate\Http\JsonResponse;
کدهای خطا
| کد | شرح | منبع |
| 401 | توکن JWT نامعتبر یا ناحاضر | Middleware |
| 500 | عدم دسترسی به سرور Asterisk یا timeout | AMIClient Exception |
پیشنهادهای امنیتی
- ارسال درخواست تست فقط از IP داخلی.
- عدم ذخیره خروجی در log های عمومی بهخاطر مشخصات زیرساخت.
پیشنهادهای توسعهای
- افزودن پارامتر اختیاری
detailsبرای دریافت جزئیات بیشتر (مثل context ها و queue ها). - افزودن cache ۵ ثانیهای برای کاهش فشار بر AMI در سیستمهای پرترافیک.
ممیزی و لاگها
- فیلدهای:
operator_id, ip, timestamp, status - ثبت در
system_logsبا نوعasterisk_connection_test
جمعبندی
تابع testConnection پایهایترین نقطهٔ بررسی سلامت ارتباط Asterisk AMI است و در صورت موفقیت، اطمینان از فعال بودن سرورهای تماس را به API میدهد.