Skip to main content
#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) را بر می‌گرداند. در صورت بروز خطا، پاسخی با کد ۵۰۰ و پیام مناسب بر می‌گرداند.

  1. فراخوانی تابع Ami::getStats() برای دریافت جزییات ارتباط.
  2. در موفقیت، بازگشت پاسخ JSON با status=true و فیلد data حاوی آمار AMI.
  3. در خطا، بازگشت پاسخ 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 می‌دهد.