加入对讲房间(AudioBridge join)

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

用途与场景

display=MQTT clientId 身份携 PIN 加入 AudioBridge 房间(房间号即 talkGroupId),成功后获得房间当前成员快照。本页是 mqtt-janus-audiobridge-join 的唯一操作正本。通道、transaction、中心转发公共口径见 会话生命周期正本

使用位置

页面/功能 角色或空间分支
对讲房间连接状态机在 joining 阶段发布 join(display=participantIdentitycodec 传入群组配置,非 opus/pcma 时强制 pcma 登录用户(机构/个人);会话与句柄已就绪

端点

MQTT 发布 server/center-server/ptt/v1/forward/janus/to(回包按 transaction 首段 reply topic 回流)— 携 PIN 加入 AudioBridge 房间并取得成员快照(janus 动词 join)。

通道契约全量事实(直通白名单、消费方、转发与回包路由)见 MQTT 主题清单 · 静态 topic动态下行(物理桥与 transaction 回包路由);字段级契约见 yaml 详解 · ptt forward-janus-to;janus 转发链的业务语义见设备业务 · mqtt-bridge 设备消息链

请求报文 {janus:"message", session_id, handle_id, body:{request:"join", room:<talkGroupId>, pin:<roomPin>, display:<MQTT clientId>, codec, muted}}——pin 明文随信令传输。

动线与完成判据

  • 8 秒阶段 deadline(Join room timed out)。
  • 业务完成 = joined 插件事件;媒体就绪另见 configure。
  • ack 先到不算完成;sessionTerminal(458/timeout/destroyed)会终止在途 join 请求。

错误与边界

失败 分类 处置
插件 489 unauthorized(PIN 错)、485 no such room 不可自动重试类 NON_RETRYABLE_AUDIOBRIDGE_CODES;进入失败态等待人工重试。注意 在房间未创建/已销毁时出现,App 应先确认房间链
插件 491 already joined 可重试(不在不可重试集合) 自动重试:退避 max(3,n)×1000ms,最多 99 次
核心 、timeoutdestroyed 会话终止 终止在途请求,重建会话(createSession 取消旧请求)
中心丢弃(无回执) 8 秒超时 同上自动重试

调用关系与资源清理

已知缺口

  1. participants 元素的权威字段(id/display/muted/...)由 Janus 插件实现决定,源码不在本工作区;Web 仅按 unknown[] 透传,未做字段级消费核验。
  2. plugindata.data.id(参与者 ID)Web 未消费,本页不承诺其语义。
  3. 未执行真实 Broker/Janus 联调。