voice_enabled은 JSON API에서 아예 접근할 수 없습니다: /site.json에는 site_settings 키가 없습니다. 따라서 사이트에서 음성 기능이 실행 중임을 나타내는 유일한 공개 신호는 voice_assets_path의 존재 여부입니다.
제가 요청하는 것은 클라이언트가 방을 가져오기 전에 음성 기능을 표시할지 여부를 결정할 수 있도록 하는 공개적이고 자격 증명 없이 사용할 수 있는 두 개의 불리언 값입니다. 둘 다 기존 상태에서 파생되며 새로운 엔드포인트가 필요하지 않으며, plugins/voice/plugin.rb 파일에 추가됩니다:
141번째 줄, voice_public_access 위:
#Public, credential-free signals for API clients that voice is enabled.
add_to_serializer(:site, :voice_available) { SiteSetting.voice_enabled }
152번째 줄, voice_livekit_per_room_available 위:
# Whether joins can use LiveKit at all. A bare yes/no: no URL, key or
# policy value. The per-room attribute below only gates the room form's
# SFU checkbox, and reads false under the all_rooms policy.
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"는 이미 방별로 익명 읽기가 가능합니다. 이것은 비어 있을 수 있는 방 가져오기 없이 이를 답변하는 것입니다.