Exposición del estado de LiveKit en el serializador de la configuración del sitio

voice_enabled no es accesible en absoluto desde la API JSON: /site.json no incluye la clave site_settings. Por lo tanto, la única señal pública de que el audio está activo en un sitio es la presencia de voice_assets_path.

Lo que solicito son dos booleanos públicos, sin credenciales, para que un cliente pueda decidir si mostrar el audio antes de obtener las salas. Ambos se derivan de un estado existente y no requieren un nuevo punto de acceso, en plugins/voice/plugin.rb:

En la línea 141, por encima de voice_public_access:

#Señales públicas, sin credenciales, para los clientes de la API de que el audio está habilitado.

add_to_serializer(:site, :voice_available) { SiteSetting.voice_enabled }

En la línea 152, por encima de voice_livekit_per_room_available:

# Si las uniones pueden usar LiveKit en absoluto. Una simple respuesta sí/no: sin URL, clave o
# valor de política. El atributo por sala siguiente solo controla la casilla de verificación SFU del
# formulario de la sala, y se lee como falso bajo la política all_rooms.

  add_to_serializer(:site, :voice_livekit_available) do

    Voice::Livekit.configured? && SiteSetting.voice_livekit_room_policy != "disabled"

  end

Esto no expone nada nuevo: expected_transport es un atributo sin control en RoomSerializer (línea 30, definido en la 150) y rooms#index omite el inicio de sesión (rooms_controller.rb:18), por lo que “livekit” / “mesh” ya es legible de forma anónima por sala. Esto simplemente responde a la pregunta sin una solicitud de sala que podría regresar vacía.