LiveKit-Status im Serializer der Seiteneinstellungen ausgeben

voice_enabled ist über die JSON-API überhaupt nicht erreichbar: /site.json enthält keinen site_settings-Schlüssel. Das einzige öffentliche Signal dafür, dass Voice auf einer Site aktiv ist, ist daher das Vorhandensein von voice_assets_path.

Ich bitte um zwei öffentliche, ohne Anmeldeinformationen benötigte Boolesche Werte, damit ein Client entscheiden kann, ob Voice vor dem Abruf von Räumen angezeigt werden soll. Beide werden aus dem bestehenden Zustand abgeleitet und erfordern keinen neuen Endpunkt, in plugins/voice/plugin.rb:

Zeile 141, über voice_public_access:

# Öffentliche, ohne Anmeldeinformationen benötigte Signale für API-Clients, dass Voice aktiviert ist.

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

Zeile 152, über voice_livekit_per_room_available:

# Ob Joins überhaupt LiveKit verwenden können. Ein reines Ja/Nein: keine URL, kein Schlüssel und
# kein Policy-Wert. Das nachfolgende Attribut pro Raum steuert nur das SFU-Checkbox-Feld im
# Raumformular und liefert unter der all_rooms-Policy false.

  add_to_serializer(:site, :voice_livekit_available) do

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

  end

Hier wird nichts Neues offengelegt: expected_transport ist ein ungatedes Attribut in RoomSerializer (Zeile 30, definiert in Zeile 150) und rooms#index überspringt die Anmeldung (rooms_controller.rb:18), sodass „livekit“ / „mesh“ bereits pro Raum anonym lesbar ist. Dies beantwortet die Frage einfach, ohne einen Raumabruf, der leer zurückkommen könnte.