AKStream.Next · 文档中心

RTC SDK 会议控制动作参考

RTC SDK 会议控制动作参考

Web 的 performRoomAction(action, payload)、Android 的 performRoomAction(action, JSONObject, RoomCallback)、iOS 的 performRoomAction(_:payload:) 和 UniApp 原生桥的 roomAction 共用这组白名单动作。这里的动作是 SDK 给宿主的稳定入口;宿主不要自行拼接 /api/v2/rtc/session/...、WHIP/WHEP 或 WebSocket 地址。roomId、当前成员、设备令牌由已入会 SDK 提供,不放在 payload 中。

const room = await client.performRoomAction('snapshot')
await client.performRoomAction('transferHost', { targetParticipantId: room.members[1].participantId, keepPreviousHostAsCohost: true })

HTTP 成功只表示动作已被服务端接受;发布、录制和外部源等操作还要查询实际状态。动作执行时重新校验当前角色、设备和权限。主持移交、踢出、关会后,旧页面不能凭之前的按钮可见性继续操作。Android 回调的 success 与 httpFailure、iOS async throws、Web Promise、UniApp roomActionResult 都要按各端实际结果处理;UniApp 的桥接 ACK 不是最终成功。

房间与成员

动作 payload 字段 返回/核对 权限与特殊情况
snapshot 无 房间、成员、录制策略与当前设备能力 普通成员可读;等候室状态应另查 admission/status。
updateAccessPolicy accessMode=Open/InviteOnly、waitingRoomEnabled、isLocked 更新后的策略;再读 snapshot 主持或获准治理者;锁定不等于关闭既有连接。
createInvitation subjectIssuer、subjectId、displayName、role、capabilities、expiresInMinutes、bypassWaitingRoom 只返回一次的邀请票据摘要 仅有邀请权者;不要将票据写进日志或公共 URL。
reviewAdmission participantId、admit、可选 reason 等候成员状态变化 成员可能已超时/离会;拒绝后旧票据不能直接重试。
moderateMember participantId、action;按动作可带 role、micEnabled、cameraEnabled、screenSharing、kick、reason 成员/媒体状态事件 服务端约束动作及操作者,不能通过 payload 的 operatorId 冒充他人。
setCohost participantId、enabled、可选 reason 领导权状态 当前主持人授予/收回;目标必须是本会议有效成员。
claimHost 可选 reason 当前主持身份 仅符合组织者/管理接管条件时成功;不能抢占仍有效的主持人。
transferHost targetParticipantId、可选 keepPreviousHostAsCohost、reason 新主持与旧主持角色 必须由当前主持人执行;旧主持人随后失去主持专属录制控制。
extendMeeting minutes、可选 reason 预约结束时间 不能越过会议硬截止;房间须允许主持延长。
closeRoom 无 会议关闭事件 当前主持人结束所有设备会话;此后不得用旧设备令牌重连。

reviewAdmission、moderateMember、setCohost 和 reviewWhiteboard 的目标成员字段均为 participantId。不要把用户显示名、设备会话 ID 或 Publication ID 当作成员 ID。

媒体、外部源和协作

动作 payload 字段 返回/核对 权限与特殊情况
publicationStats 无 当前可见 Publication 与统计 统计采样不保证每一秒都有值;摄像头与屏幕独立。
getEndpointInfo / reportEndpointInfo 读取无参;上报使用 SDK 收集的终端参数 近 90 秒终端参数 / 上报结果 终端报告不接受硬件唯一标识;普通宿主不手填他人参数。
setVideoQuality targetParticipantId(单成员或显式全体)、quality(宽、高、帧率) 目标质量策略与后续实际值 主持目标不保证设备立即达到;用质量事件或统计看实际。
externalSourceCandidates 无 已授权、可加入的通道及 grantId 只列业务方授权范围,不返回 RTSP 密码或源 URL。
externalSources 无 本会议当前外部源绑定 外部源不算真人参会者;离线时保留状态供页面解释。
addExternalSource grantId 绑定 ID、后续媒体状态 主持人仅能加入业务方已授权的源,allowRecording 仍由授权决定。
removeExternalSource bindingId 绑定移除事件 只移出本会议,不停止集群原通道或其他会议。
requestWhiteboard requestAccess、可选 reason Pending/已取消申请 普通成员申请书写权;提出申请不代表可立即绘制。
reviewWhiteboard participantId、allow、可选 reason 成员书写权限事件 主持审批或收回;上传素材最终提交时仍复核权限。
lockWhiteboard locked 白板锁定状态 锁定后普通成员只读;历史白板事件不被删除。

externalSourceCandidates 返回的是业务授权候选,而不是整个集群可随意入会的摄像头。要创建/撤销候选授权,由可信业务后端调用RTC 管理 API;参会 SDK 只能在授权范围内选择。

录制与状态

动作 payload 字段 返回/核对 权限与特殊情况
currentContinuousRecording 无 当前任务或 null 已准入成员可查询;null 不代表没有历史录像。
startContinuousRecording 无 recordingId、Starting/Recording 等状态 房间须已允许录制,启停仅当前主持人;重复开始返回当前任务。
stopContinuousRecording recordingId Stopping,之后查询最终 Stopped 只停止指定任务;Stopping 时文件可能尚未封口。
recordingTargets 无 逐 Publication 可录目标 供旧逐流录制兼容入口使用,不能当成整场任务清单。
startRecording / stopRecording 按目标可带 publicationId、mediaKind、participantId、screen 等 逐流状态 旧逐流接口;整场回放请用上面的持续录制动作。

会后目录、播放和下载不使用会中 performRoomAction:业务后端签发独立 view/play/download 档案票据,再用档案 SDK。完整 HTTP 路径、请求/响应与权限见RTC API 对接参考。