لا يمكن الوصول إلى voice_enabled من واجهة برمجة التطبيقات (JSON API) إطلاقًا: لا يحتوي المسار /site.json على مفتاح site_settings. لذا فإن الإشارة العامة الوحيدة على أن ميزة الصوت تعمل على الموقع هي وجود voice_assets_path.
ما أطالب به هو متغيران منطقيان (booleans) عامان لا يتطلبان بيانات اعتماد، ليتمكن العميل من تحديد ما إذا كان يجب عرض ميزة الصوت قبل جلب أي غرف. كلاهما مشتق من الحالة الحالية ولا يتطلب أي نقطة نهاية (endpoint) جديدة، في الملف plugins/voice/plugin.rb:
في السطر 141، فوق voice_public_access:
#إشارات عامة لا تتطلب بيانات اعتماد لعملاء API تؤكد تمكين الصوت.
add_to_serializer(:site, :voice_available) { SiteSetting.voice_enabled }
في السطر 152، فوق voice_livekit_per_room_available:
# ما إذا كان بإمكان الانضمام استخدام LiveKit على الإطلاق. مجرد نعم/لا: لا يوجد عنوان URL، مفتاح أو
# قيمة سياسة. خاصية كل غرفة أدناه تتحكم فقط في مربع اختيار SFU في نموذج الغرفة،
# وتعود بقيمة false تحت سياسة all_rooms.
add_to_serializer(:site, :voice_livekit_available) do
Voice::Livekit.configured? && SiteSetting.voice_livekit_room_policy != "disabled"
end
هذا لا يكشف عن أي شيء جديد: expected_transport هو خاصية غير مقيدة في RoomSerializer (السطر 30، معرّفة في السطر 150) ويتجاوز rooms#index تسجيل الدخول (rooms_controller.rb:18)، لذا فإن قيم “livekit” / “mesh” قابلة للقراءة بشكل مجهول لكل غرفة بالفعل. هذا يجيب على السؤال دون الحاجة لجلب غرفة قد تعود فارغة.