确保对讲房间存在(ensureRoom)

验证状态:已源码核验、未联调;适用基线:源码归纳 @ 2026-09-14

用途与场景

触发中心为指定群组确保 AudioBridge 房间存在。这是一个异步受理接口:HTTP 返回只代表"建房命令已进入内部消息通道",不代表房间已在 Janus 创建。App 可以在进入群组房间前调用它做补偿收敛,但不能把它当作媒体就绪信号。

使用位置

页面/功能 角色或空间分支
进入对讲房间时的 fire-and-forget 补偿 需要 talk-group-data-acquisition-device:read 或 administrator(页面读门槛 canReadTalkgroupsAndDevices

端点

POST /main-service/main-api/basedata/talk-group/ensureRoom — 触发中心为指定群组确保 AudioBridge 房间存在。

端点全量事实(参数、请求/响应字段、错误码、权限点)见清单层 basedata · talk-group 对讲组;业务语义(wire 惯例、限频、租户声明等)见基础数据业务 · talk-group 对讲组

动线与完成判据

层级 判据
传输/受理 HTTP status=200 && data=true
命令执行 不可由本接口观测:建房是异步链,SFU 离线时本轮被跳过,等待周期补偿
媒体可用 只能由客户端实际 join 成功(见 join 正本)判定;ensureRoom 成功与房间已创建之间没有一一对应

错误与边界

  • 参数校验适用请求校验;认证/权限适用认证失败/权限失败
  • 消费端对缺失群组、SFU 离线、重复动作均按"跳过并记日志"处理(at-most-once 消费,异常不重投),因此受理成功不保证建房发生
  • 重复调用幂等:消费端去重 + Janus 侧 幂等;Web 在每次进入房间时重复调用属预期行为。

调用关系与资源清理

  • 与内部消息链的关系正本:群组保存(新建群组)也会经 talk group save 通道自动触发同一建房动作;ensureAllRooms(administrator 专用)不在已确认 Web 调用清单内,本票不发布其正本。
  • App 判断可讲性应依赖 join 正本joined 回执,而非本接口。

已知缺口

  1. Janus Admin API 的实际行为(permanent 房间持久化、pin/secret 校验、错误码全集)依赖 Janus 服务器实现,源码不在本工作区;本页仅核验到中心转发与结果归档分支。
  2. 房间结果归档只写日志,无对外查询接口;App 无法通过中心查询"房间是否已创建"。
  3. 未执行真实 JMS/Janus 联调。