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

**URL:** https://meta.discourse.org/t/exposing-livekit-status-in-site-settings-serializer/411428
**Category:** Support
**Tags:** voice
**Created:** [2026年九月1日 23:23 UTC](https://meta.discourse.org/t/exposing-livekit-status-in-site-settings-serializer/411428 "2026-09-01T23:23:01Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![nicolsdennis](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nicolsdennis/32/545883_2.png) [@nicolsdennis](https://meta.discourse.org/u/nicolsdennis)
#### Post date: [2026年九月1日 23:23 UTC](https://meta.discourse.org/t/exposing-livekit-status-in-site-settings-serializer/411428/1 "2026-09-01T23:23:01Z")

</div>

@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`

---

_[View the full topic](https://meta.discourse.org/t/exposing-livekit-status-in-site-settings-serializer/411428)._
