流程状态:整合票 20 依据已核验正本合并的流程结构,未联调;房间详情读取端点缺清单归属、Janus 媒体面与设备 PTT 执行缺证,各步骤以其链接的正本页为准。
对讲群组与房间
串起从建群到进入 AudioBridge 房间讲话的主路径:群组管理(HTTP)→ 房间准备(异步联动)→ ICE 与 Janus 会话 → join/configure 直到媒体可用 → 离开清理。
前置条件
- 已完成登录与切换空间并建立 MQTT 会话。
- 已有可用的 talkGroupId、房间 PIN(建群时设置)与目标 Janus 节点(
janusNo,缺省由服务端填 janus-1)。
主路径
- 建群(含成员绑定):新建对讲群组(同事务写群组与记录仪绑定);编辑/删除见同目录 update、remove-by-ids 正本。保存成功只表示落库;房间创建与设备 PTT 配置刷新由后端内部消息链异步联动。
- 房间数据读取:群组详情读取端点
getByTalkGroupId 有当前 Web 调用但不在已确认清单、未发布正本(见未发布正本与保留项的缺口统计与票 12 交接);App 在补票前不得假设其契约。绑定关系的分页/单设备查询用已发布正本:按群组分页查询绑定、按设备查询/更新绑定。
- 房间与配置准备:ensureRoom 与 pushPttConfig 为异步受理语义(HTTP true = 发布受理);房间未建时由中心 5 分钟周期补偿收敛(正本「完成判据」)。
- ICE 服务器:list-ice-server(对讲正本)(监看域同 topic 调用链接本正本)。
- Janus 会话:会话创建/keepalive/销毁合页(transaction 格式、中心转发、回包路由的家族公共口径锚点)→ attach AudioBridge。
- 加入房间:join(房间号即 talkGroupId,携 PIN,
display=MQTT clientId)获得成员快照;随后 configure 开关媒体,trickle 候选见 trickle 正本。
- 房间事件与成员:参与者变化等主动事件合页、listparticipants。
- 设备侧进出房:记录仪经 device ptt deliver 接收 join/kick;该正本标「存在关键缺口」(设备固件执行缺证)。
失败与恢复
- 三层完成状态:HTTP/发布成功、Janus action 成功、媒体可用分别判定(join 与 pushPttConfig 正本的完成判据); 房间已存在的幂等口径见 join 正本。
- 已加入者异常掉线由房间状态机/补偿收敛;App 端断线后必须重建 Janus 会话/handle 并重新 join(clean=true 无服务端恢复)。
- pushPttConfig 受理后设备是否实际刷新配置取决于设备固件(缺口);重复推送的幂等性见正本。
- 绑定变更后设备配置刷新时机经内部消息通道,消费端未核验(票 12 namedGap)。
收尾
- 离开房间发送 leave;停止本地媒体轨道、取消事件监听;是否 detach/destroy 由会话正本的家族口径决定(Web 行为,App 复用与否需自行评估)。
- 超时不能默认房间/会话资源已释放;Janus 服务器侧超时与媒体面指标缺证(见未发布正本与保留项缺口统计)。