Skip to content

成员管理 API

成员列表、统一操作(上台/下台/禁言/踢出)、举手、循环上台等功能。

API 参考

approveHandUp()

老师同意学生举手请求,邀请上台(等同 memberAction Stage_Up)。

参数类型说明
userIdstring要邀请上台的学生 userId

返回值: Promise<any>

示例:

ts
// 遍历举手列表逐个同意 / Iterate over the hand-up list and approve
for (const m of classroom.state.handUpList$.get()) {
  await classroom.approveHandUp(m.userId);
}

clearHandUpList()

清空全部举手列表(老师/助教权限)。

返回值: Promise<TResult<void>>

示例:

ts
// 一键拒绝所有未处理的举手 / One-click reject all pending hand-raises
await classroom.clearHandUpList();

deleteHandUpMembers()

从举手列表中移除指定成员。

仅清除其在举手列表中的状态,不会影响这些成员的其他权限。

参数类型说明
userIdsstring[]要移除的用户 ID 数组

返回值: Promise<TResult<void>>

示例:

ts
await classroom.deleteHandUpMembers(['student_001', 'student_002']);

getAllCommand()

批量查询所有用户的上台邀请状态,返回当前所有待处理和已完成的邀请记录。

返回值: Promise<TResult<any>>


getHandUpList()

分页获取当前举手列表,返回正在等待审批的学生。

与响应式 state.handUpList$ 等价,常用于一次性主动刷新。

参数类型说明
page?number页码(默认 1)
pageSize?number每页条数(默认 20)

返回值: Promise<TResult<HandUpListResponse>>


getMemberInfo()

查询单个成员信息。

参数类型说明
userIdstring目标用户 ID
forceRemote?booleantrue=强制从服务端拉取最新数据;false=优先使用本地缓存(默认)

返回值: Promise<TResult<MemberInfo>>

示例:

ts
// 优先使用本地缓存 / Prefer local cache
const info = await classroom.getMemberInfo('student_001');

// 强制刷新(如确认权限变更后立即查询) / Force refresh
const fresh = await classroom.getMemberInfo('student_001', true);

getMemberList()

分页获取课堂成员列表(花名册),包括角色、在线状态、权限等信息。

增量分页:SDK 内部维护游标,自动合并到 state.memberMap$;订阅 state.memberList$ 可响应式获取最新列表。 subscribe to state.memberList$ for reactive access to the latest list.

参数类型说明
page?number页码,从 1 开始(默认 1)
pageSize?number每页条数(默认 20)

返回值: Promise<TResult<MemberListResponse>>

示例:

ts
// 首次拉取第一页 / Fetch the first page
await classroom.getMemberList(1, 50);
// 通过响应式信号订阅完整成员列表 / Subscribe via reactive signal
classroom.state.memberList$.subscribe((list) => renderRoster(list));

getPermissionList()

主动拉取最新权限列表(进房后 SDK 会自动拉取一次,此方法用于强制刷新)。

拉取结果会自动合并到 state.memberMap$,并触发 TEvent.PERMISSION_UPDATE

返回值: Promise<TResult<void>>


getUserCommand()

查询指定用户当前的上台邀请状态(是否已发送邀请、是否已接受/拒绝)。

参数类型说明
userIdstring目标用户 ID

返回值: Promise<TResult<any>>


handUp()

学生举手,申请连麦上台发言。

调用后老师端通过 state.handUpList$ 实时收到申请;学生端 state.myHandUpStatus$ 变为 true。

仅在课堂启用了举手连麦(state.enableStage$ === true)时有效,否则返回失败。

返回值: Promise<any>

示例:

ts
if (!classroom.state.enableStage$.get()) { toast.warn('当前课堂未开启连麦'); return; }
const result = await classroom.handUp();
if (!result.ok) toast.error(result.message);

handUpCancel()

学生取消举手,撤回上台申请。

返回值: Promise<any>

示例:

ts
await classroom.handUpCancel();

lockStageLoop()

锁定/解锁循环上台轮换。

锁定后暂停自动切换,当前学生持续在台上;解锁后恢复自动轮换。

参数类型说明
lock?booleantrue=锁定暂停轮换(默认 true,不传即锁定);false=解锁恢复轮换

返回值: Promise<TResult<void>>

示例:

ts
await classroom.lockStageLoop();        // 锁定 / lock
await classroom.lockStageLoop(false);   // 解锁 / unlock

memberAction()

统一成员操作入口,支持上台/下台/禁言/踢出/授权等多种操作。

参数类型说明
paramMemberActionParam操作参数,包含 action 类型和目标 userId

返回值: Promise<any>

示例:

ts
// 邀请学生上台 / Invite a student to the stage
await classroom.memberAction({ userId: 'stu_001', action: MemberActionType.Stage_Up });

// 禁言学生 / Silence a student
await classroom.memberAction({ userId: 'stu_002', action: MemberActionType.Silence });

// 踢出学生 / Kick a student
await classroom.memberAction({ userId: 'stu_003', action: MemberActionType.Kick_Out });

memberLike()

发送点赞,课堂总点赞计数通过 state.likeCount$ 响应式更新。

服务端会做合并/限流处理,业务侧无需自行节流。

返回值: Promise<TResult<void>>

示例:

ts
// 用户点击点赞按钮 / User taps the like button
onClickLike(() => classroom.memberLike());
// 订阅总点赞数 / Subscribe to total like count
classroom.state.likeCount$.subscribe((count) => updateLikeBadge(count));

rejectHandUp()

老师拒绝学生举手(清除其举手状态)。

参数类型说明
userIdstring要拒绝的学生 userId

返回值: Promise<any>

示例:

ts
await classroom.rejectHandUp('student_001');

sendCommand()

向指定用户发送上台邀请命令,用于老师主动点名上台流程。

学生端通过订阅 state.askStageStatus$ 接收邀请并决定是否同意。

参数类型说明
userIdstring目标用户 ID
param?Record<string, unknown>可选的附加参数(如指定开麦/开摄像头)

返回值: Promise<TResult<any>>

示例:

ts
// 老师邀请学生上台 / Teacher invites student to stage
await classroom.sendCommand('stu_001');

// 带附加参数 / With additional params
await classroom.sendCommand('stu_001', { autoMic: true, autoCamera: false });

startStageLoop()

开启循环上台功能,让学生按配置自动轮流上台展示(老师/助教权限)。

开启后 SDK 会按照设定的时长自动轮换台上学生,直到调用 stopStageLoop() 或所有学生轮完。 until stopStageLoop() is called or all students have had their turn.

状态由 state.stageLoopEnabled$ 反映;轮换过程中可调用 lockStageLoop(true) 暂停切换。

参数类型说明
paramsStageLoopParams⚠️ interval 单位为毫秒(不是秒)/ interval is in milliseconds (not seconds)

返回值: Promise<TResult<void>>

示例:

ts
await classroom.startStageLoop({
  duration: 120,        // 每人上台 120 秒 / 120s per student
  interval: 5000,       // 切换间隔 5 秒(毫秒)/ 5000ms switch interval
  autoMic: true,        // 自动开麦 / auto unmute mic
  autoCamera: true,     // 自动开摄像头 / auto open camera
  memberNumber: 1,      // 每轮上台人数(可选)/ students on stage per round (optional)
});

stopStageLoop()

停止循环上台,所有当前在台上的轮换学生将被自动下台。

返回值: Promise<TResult<void>>

示例:

ts
await classroom.stopStageLoop();

updateStageLoop()

热更新循环上台参数(无需先停止再重启,参数变更立即生效)。

参数类型说明
paramsStageLoopParams新的循环上台参数

返回值: Promise<TResult<void>>

示例:

ts
// 把每人上台时长改为 60 秒 / Change per-student duration to 60s
await classroom.updateStageLoop({ duration: 60, interval: 5000, autoMic: true, autoCamera: true });