在站点设置序列化器中公开 LiveKit 状态

@Falco 是否可以在站点设置/序列化器中暴露一个公开的字段,用于检查 LiveKit 是否已配置,与 voice_enabled 并列?

目前 voice_enabled 对客户端是公开的,但没有公开的信号来表明某个站点是否可以提供 LiveKit 服务。唯一与 LiveKit 相关的站点属性 voice_livekit_per_room_available 仅作用于房间表单中的复选框,因此在 all_rooms 策略下会返回 false,无法用来回答“这个站点是否完全支持 LiveKit”这个问题。

RoomSerializer#expected_transport 很好地处理了按房间检查的情况,但这需要先获取房间列表,而且当 voice_public_access 关闭时,即使站点已完全配置好 LiveKit,它也会返回空值。

像下面这样的实现是否可以接受?它是基于现有状态派生的,不暴露任何凭据或策略细节,也不需要新的端点。

它应该放在 plugins/voice/plugin.rb 中,位于 voice_livekit_per_room_available 代码块之后,Voice::DefaultRoomSeeder.ensure! 行之前:

# 公开的、不含凭据的信号,表明该站点可以提供 LiveKit 服务。
add_to_serializer(:site, :voice_livekit_available) do
Voice::Livekit.configured? && SiteSetting.voice_livekit_room_policy != "disabled"
end

1 个赞