UNPKG

agora-edu-core

Version:

Core APIs for building an online classroom

1,508 lines (1,441 loc) 32.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EduApiService = void 0; var _agoraRteSdk = require("agora-rte-sdk"); var _ = require(".."); var _type = require("../stores/domain/common/group/type"); var _utils = require("../utils"); var _dec, _class; let EduApiService = exports.EduApiService = (_dec = _agoraRteSdk.Log.attach(), _dec(_class = class EduApiService extends _agoraRteSdk.ApiBase { /** * 预检 * @param session * @param handsUpLimit * @param stream * @returns */ async checkIn(session, handsUpLimit, stream) { const { roomUuid, userUuid, role, roomName, roomType, userName, flexProperties, duration, startTime, roomTemplate } = session; const { data, ts } = await this.fetch({ path: `/v3/rooms/${roomUuid}/users/${userUuid}`, method: 'PUT', data: { duration: duration, role: role, roomName: roomName, roomType: roomType, userName: userName, userProperties: flexProperties, startTime, platform: (0, _utils.getPlatform)(), handsUp: handsUpLimit, stream, roomTemplate }, retryFallbackDomainsWhenFail: true }); return { data, ts }; } /** * 进入房间 * @param session * @param handsUpLimit * @param stream * @returns */ async entry(session, stream) { const { roomUuid, userUuid, role, userName, flexProperties } = session; const { data, ts } = await this.fetch({ path: `/v3/rooms/${roomUuid}/users/${userUuid}/entry`, method: 'PUT', data: { role: role, userName: userName, userProperties: flexProperties, platform: (0, _utils.getPlatform)(), stream }, retryFallbackDomainsWhenFail: true }); return { data, ts }; } /** * 获取个人资源列表 * @param userUuid * @param options * @returns */ async fetchPersonalResources(userUuid, options) { const queryparams = []; if (!options) { options = {}; } options.orderBy = 'updateTime'; options.parentResourceUuid = 'root'; const { data } = await this.fetch({ path: `/v3/users/${userUuid}/resources/page${queryparams.join('&')}`, method: 'GET', query: options }); return data; } /** * 删除个人资源 * @param resourceUuids * @param userUuid * @returns */ async removeMaterials(resourceUuids, userUuid) { const finalData = resourceUuids.map(resourceUuid => ({ resourceUuid, userUuid })); const { data } = await this.fetch({ path: `/v3/users/${userUuid}/resources`, method: 'DELETE', data: finalData }); return data; } /** * 获取上传信息 * @param param0 * @returns */ async fetchFileUploadSts({ userUuid, resourceName, contentType, ext, size, conversion }) { const { data } = await this.fetch({ path: `/v3/users/${userUuid}/presignedUrls`, method: 'POST', data: [{ resourceName, // resourceUuid,//如果不传的话后端会自动生成一个resourceUuid,用来解决同一个资源不能多次上传的问题 contentType, ext, size, conversion }] }); return data; } /** * 新增云盘资源 * @param resourceUuid * @param userUuid * @param resourceInfo * @returns */ async addCloudDriveFile(resourceUuid, userUuid, resourceInfo) { const { data } = await this.fetch({ path: `/v4/users/${userUuid}/resources/${resourceUuid}`, method: 'POST', data: { resourceName: resourceInfo.resourceName, //文件名 size: resourceInfo.size, //文件大小 ext: resourceInfo.ext, //扩展名 ppt、pptx、pptm、docx、doc、xlsx、xls、csv、pdf等 url: resourceInfo.url, //网络地址 conversion: resourceInfo.conversion, parentResourceUuid: 'root', // 父级目录 type: '1' // 1 文件 0 目录 } }); return data; } /** * 修改云盘资源 * @param resourceUuid * @param userUuid * @param resourceInfo * @returns */ async updateCloudDriveFile(resourceUuid, userUuid, resourceInfo) { const { data } = await this.fetch({ path: `/v4/users/${userUuid}/resources/${resourceUuid}`, method: 'PUT', data: { resourceName: resourceInfo.resourceName //文件名 } }); return data; } /** * @deprecated This API will be removed in near future. * 新增云盘资源 * @param resourceUuid * @param userUuid * @param resourceInfo * @returns */ async addCloudDriveFileV3(resourceUuid, userUuid, resourceInfo) { const { data } = await this.fetch({ path: `/v3/users/${userUuid}/resources/${resourceUuid}`, method: 'POST', data: { resourceName: resourceInfo.resourceName, //文件名 size: resourceInfo.size, //文件大小 ext: resourceInfo.ext, //扩展名 ppt、pptx、pptm、docx、doc、xlsx、xls、csv、pdf等 url: resourceInfo.url, //网络地址 conversion: resourceInfo.conversion, userUuids: [userUuid], parentResourceUuid: 'root' } }); return data; } /** * 获取聊天历史记录 * @param params * @returns */ async getHistoryChatMessage(params) { const { data: { nextId, sort } } = params; const isNextId = nextId ? `nextId=${nextId}&` : ''; const { data } = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/chat/messages?${isNextId}sort=${sort}`, method: 'GET' }); return data; } /** * 获取聊天历史会话信息 * @param params * @returns */ async getConversationHistoryChatMessage(params) { const { data: { nextId, sort, studentUuid } } = params; const isNextId = nextId ? `nextId=${nextId}&` : ''; const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/conversation/students/${studentUuid}/messages?${isNextId}sort=${sort}`, method: 'GET' }); return res.data; } /** * 获取聊天会话列表 * @param params * @returns */ async getConversationList(params) { const { data: { nextId } } = params; const isNextId = nextId ? `nextId=${nextId}&` : ''; const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/conversation/students?nextId=${isNextId}`, method: 'GET' }); return res.data; } /** * 发送聊天信息 * @param params * @returns */ async sendChat(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/from/${params.userUuid}/chat`, method: 'POST', data: params.data }); return res.data; } /** * 开启轮播 * @param payload * @returns */ async startCarousel(payload) { var _payload$range, _payload$type, _payload$interval, _payload$count; const res = await this.fetch({ path: `/v2/rooms/${payload.roomUuid}/carousels/states/1`, method: 'put', data: { range: (_payload$range = payload.range) !== null && _payload$range !== void 0 ? _payload$range : 1, type: (_payload$type = payload.type) !== null && _payload$type !== void 0 ? _payload$type : 1, interval: (_payload$interval = payload.interval) !== null && _payload$interval !== void 0 ? _payload$interval : 10, count: (_payload$count = payload.count) !== null && _payload$count !== void 0 ? _payload$count : 6 } }); return res.data; } /** * 发送聊天会话信息 * @param params * @returns */ async sendConversationChat(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/conversation/students/${params.userUuid}/messages`, method: 'POST', data: params.data }); return res.data; } /** * 关闭轮播 * @param payload * @returns */ async stopCarousel(payload) { const res = await this.fetch({ path: `/v2/rooms/${payload.roomUuid}/carousels/states/0`, method: 'put' }); return res.data; } /** * 踢出房间 * @param userUuid * @param isBan * @param roomUuid * @returns */ async kickOutOnceOrBan(userUuid, isBan, roomUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/users/${userUuid}/exit`, method: 'POST', data: { dirty: { state: isBan ? 1 : 0, duration: isBan ? -1 : 0 // -1 为永久禁止 } } }); return res.data; } /** * 聊天禁言 * @param params * @returns */ async muteChat(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/mute`, method: 'PUT', data: { muteChat: params.muteChat } }); return res.data; } /** * 发送奖励 * @param params * @param isBatch * @returns */ async sendRewards(params, isBatch) { const apiVersion = _.EduClassroomConfig.shared.isLowAPIVersionCompatibleRequired ? 'v2' : isBatch ? 'v4' : 'v3'; const res = await this.fetch({ path: `/${apiVersion}/rooms/${params.roomUuid}/rewards`, method: 'POST', data: { rewardDetails: params.rewards } }); return res.data; } /** * 允许举手上台申请 * @param params * @returns */ async allowHandsUp(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/handsUp/${params.state}`, method: 'PUT', data: { defaultAcceptRole: params.defaultAcceptRole } }); return res.data; } /** * 举手 * @param params * @returns */ async handsUp(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/handsUp/progress`, method: 'POST', data: { toUserUuid: params.toUserUuid, timeout: params.timout, retry: params.retry, payload: params.payload } }); return res.data; } /** * 挥手 * @param params * @returns */ async handsWave(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/waveArm/progress`, method: 'POST', data: { toUserUuid: params.toUserUuid, timeout: params.timout, retry: params.retry, payload: params.payload } }); return res.data; } /** * 接受举手上台请求 * @param params * @returns */ async acceptHandsUp(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/handsUp/acceptance`, method: 'POST', data: params.toUserUuid ? { toUserUuid: params.toUserUuid } : null }); return res.data; } /** * 取消举手 * @param params * @returns */ async cancelHandsUp(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/handsUp/progress`, method: 'DELETE', data: params.toUserUuid ? { toUserUuid: params.toUserUuid } : null }); return res.data; } /** * 取消挥手 * @param params * @returns */ async cancelHandsWave(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/waveArm/progress`, method: 'DELETE', data: params.toUserUuid ? { toUserUuid: params.toUserUuid } : null }); return res.data; } /** * 下台,停止连麦 * @param params * @returns */ async revokeCoVideo(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/handsUp/acceptance`, method: 'DELETE', data: params.toUserUuid ? { toUserUuid: params.toUserUuid } : null }); return res.data; } /** * 所有成员下台,停止连麦 * @param params * @returns */ async revokeAllCoVideo(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/processes/handsUp/acceptance/all`, method: 'DELETE' }); return res.data; } /** * 更新录制状态 * @param params * @returns */ async updateRecordingState(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/records/states/${params.state}`, method: 'PUT', data: params.args }); return res.data; } /** * 更新录制状态(录制中) * @param params * @returns */ async updateRecordingStateOngoing(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/records/states/1`, method: 'PATCH', data: { webRecordConfig: { onhold: params.opts.onHold } } }); return res.data; } /** * 更新教室状态 * @param params * @returns */ async updateClassState(params) { const res = await this.fetch({ path: `/v2/rooms/${params.roomUuid}/states/${params.state}`, method: 'PUT' }); return res.data; } /** * 开启屏幕共享 * @param roomId * @param userUuid * @returns */ async startShareScreen(roomId, userUuid, audioOptions) { const state = 1; const res = await this.fetch({ path: `/v2/rooms/${roomId}/users/${userUuid}/screen/${state}`, method: 'PUT', data: audioOptions }); return res.data; } /** * 停止屏幕共享 * @param roomId * @param userUuid * @returns */ async stopShareScreen(roomId, userUuid) { const state = 0; const res = await this.fetch({ path: `/v2/rooms/${roomId}/users/${userUuid}/screen/${state}`, method: 'PUT' }); return res.data; } /** * 开启屏幕共享 * @param roomId * @param userUuid * @returns */ async startShareScreenStateless(roomId, userUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomId}/users/${userUuid}/screen`, method: 'PUT' }); return res.data; } /** * 停止屏幕共享 * @param roomId * @param userUuid * @returns */ async stopShareScreenStateless(roomId, userUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomId}/users/${userUuid}/screen`, method: 'DELETE' }); return res.data; } /** * 更新房间 widget 属性 * @param roomUuid * @param widgetUuid * @param properties * @returns */ async updateWidgetProperties(roomUuid, widgetUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/${widgetUuid}`, method: 'PUT', data: properties }); return { data }; } /** * 删除房间 widget * @param roomUuid * @param widgetUuid * @returns */ async deleteWidget(roomUuid, widgetUuid) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/${widgetUuid}`, method: 'DELETE', data: {} }); return { data }; } /** * 移除 extra 中的属性 * @param roomUuid * @param widgetUuid * @param properties * @returns */ async removeWidgetExtraProperties(roomUuid, widgetUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/${widgetUuid}/extra`, method: 'DELETE', data: properties }); return { data }; } /** * 设置用户 widget 属性 * @param roomUuid * @param widgetUuid * @param userUuid * @param properties * @returns */ async updateWidgetUserProperties(roomUuid, widgetUuid, userUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/${widgetUuid}/users/${userUuid}`, method: 'PUT', data: properties }); return { data }; } /** * 移除用户 widget 属性 * @param roomUuid * @param widgetUuid * @param userUuid * @param properties * @returns */ async removeWidgetUserProperties(roomUuid, widgetUuid, userUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/${widgetUuid}/users/${userUuid}`, method: 'DELETE', data: properties }); return { data }; } /** * 开启选择题 * @param roomUuid * @param properties * @returns */ async startAnswer(roomUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/popupQuizs/start`, method: 'POST', data: properties }); return { data }; } /** * 停止选择 * @param roomUuid * @param popupQuizId * @returns */ async stopAnswer(roomUuid, popupQuizId) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/popupQuizs/${popupQuizId}/stop`, method: 'POST' }); return { data }; } /** * 修改答题正确选项 * @param roomUuid * @param popupQuizId * @param correctItems * @returns */ async updateAnswerCorrectItems(roomUuid, popupQuizId, correctItems) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/popupQuizs/${popupQuizId}/correctItems`, method: 'PUT', data: { correctItems } }); return { data }; } /** * 获取答题列表 * @param roomUuid * @param popupQuizId * @param query * @returns */ async getAnswerList(roomUuid, popupQuizId, query) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/popupQuizs/${popupQuizId}/users`, method: 'GET', query }); return { data }; } /** * 提交答案 * @param roomUuid * @param properties * @returns */ async submitAnswer(roomUuid, popupQuizId, userUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/popupQuizs/${popupQuizId}/users/${userUuid}`, method: 'PUT', data: properties }); return { data }; } /** * 开启投票 * @param roomUuid * @param properties * @returns */ async startPolling(roomUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/polls/start`, method: 'POST', data: properties }); return { data }; } /** * 投票 * @param roomUuid * @param pollId 投票id * @param userUuid 用户ID * @param properties * @returns */ async submitResult(roomUuid, pollId, userUuid, properties) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/polls/${pollId}/users/${userUuid}`, method: 'POST', data: properties }); return { data }; } /** * 结束投票 * @param roomUuid * @param pollId * @returns */ async stopPolling(roomUuid, pollId) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/polls/${pollId}/stop`, method: 'POST' }); return { data }; } /** * 开启倒计时 * @param roomUuid * @param duration * @returns */ async startCountdownTimer(roomUuid, duration) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/countdownTimer/start`, method: 'POST', data: { duration } }); return { data }; } /** * 暂停倒计时 * @param roomUuid * @param countdownTimerId * @returns */ async pauseCountdownTimer(roomUuid, countdownTimerId) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/countdownTimer/${countdownTimerId}/pause`, method: 'PUT' }); return { data }; } /** * 恢复倒计时 * @param roomUuid * @param countdownTimerId * @returns */ async resumeCountdownTimer(roomUuid, countdownTimerId) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/countdownTimer/${countdownTimerId}/continue`, method: 'PUT' }); return { data }; } /** * 结束倒计时 * @param roomUuid * @param countdownTimerId * @returns */ async stopCountdownTimer(roomUuid, countdownTimerId) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/countdownTimer/${countdownTimerId}/stop`, method: 'PUT' }); return { data }; } /** * 更新用户属性 * @param roomUuid * @param properties * @param cause * @returns */ async updateFlexProperties(roomUuid, params) { const { properties, increments, cause, throttleTime } = params; const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/properties`, method: 'PUT', data: { properties, increments, cause, throttleTime } }); return res.data; } /** * 上报麦克风设备状态(兼容历史版本) * @param payload * @returns */ async reportMicCameraStateLeagcy(payload) { const res = await this.fetch({ path: `/v2/rooms/${payload.roomUuid}/users/${payload.userUuid}/device`, method: 'PUT', data: payload.data }); return res.data; } /** * 获取房间内用户列表 * @param roomId * @param params * @returns */ async fetchUserList(roomId, params) { const qs = []; const { role, type, nextId, count, userName } = params; if (role) { qs.push(`role=${role}`); } if (type) { qs.push(`type=${type}`); } if (userName) { qs.push(`userName=${userName}`); } if (nextId) { qs.push(`nextId=${nextId}`); } if (count) { qs.push(`count=${count}`); } const path = `/v2/rooms/${roomId}/users` + (qs ? `?${qs.join('&')}` : ''); const res = await this.fetch({ path, method: 'GET' }); return res.data; } /** * 新增组 * @param roomUuid * @param data * @returns */ async addGroup(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/groups/states/1`, method: 'POST', data }); return res.data; } /** * 开启/关闭分组 * @param roomUuid * @param state * @param data * @returns */ async updateGroupState(roomUuid, data, state = _type.GroupState.OPEN) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/groups/states/${state}`, method: 'PUT', data }); return res.data; } /** * 删除分组 * @param roomUuid * @param data * @returns */ async removeGroup(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/groups/states/1`, method: 'DELETE', data }); return res.data; } /** * 接受分组邀请 * @param roomUuid * @param groupUuid */ async acceptGroupInvite(roomUuid, groupUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/groups/${groupUuid}/acceptance`, method: 'POST', data }); return res.data; } /** * 拒绝进入分组邀请 * @param roomUuid * @param groupUuid * @returns */ async rejectGroupInvite(roomUuid, groupUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/groups/${groupUuid}/progress`, method: 'DELETE' }); return res.data; } /** * 更新分组成员 * @param roomUuid * @param data 🔢 inProgress 是否邀请,true 发送邀请 false 直接加入 * @returns */ async updateGroupUsers(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/groups/users`, method: 'PATCH', data }); return res.data; } /** * 发送全体消息 * @param roomUuid * @param data * rang: 1.大房间 2.指定组 3.全体(大房间+所有组) * toGroupUuids: 当type=2时,传入指定小组id * type: 消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息 * msg: 消息 * @returns */ async sendNotificationMessage(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/easemobIM/messages`, method: 'PATCH', data }); return res.data; } /** * 修改分组信息 * @param roomUuid * @param data * @returns */ async updateGroupInfo(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/groups/info`, method: 'PATCH', data }); return res.data; } /** * 发送全体消息(根据区域判断) * @param roomUuid * @param data * @returns */ async broadcastMessage(roomUuid, data) { if (_.EduClassroomConfig.shared.rteEngineConfig.region === _.EduRegion.CN) { return this.broadcastHxChatMessage(roomUuid, data); } else { return this.broadcastRtmChatMessage(roomUuid, data); } } /** * 发送全体消息(AgoraChat) * @param roomUuid * @param data * @returns */ async broadcastHxChatMessage(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/easemobIM/messages`, method: 'POST', data }); return res.data; } /** * 发送全体消息(RTM) * @param roomUuid * @param data * @returns */ async broadcastRtmChatMessage(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/chat/messages`, method: 'POST', data }); return res.data; } /** * 保存白板windowManager属性(课件) * @param roomUuid * @param data * @returns */ async setWindowManagerAttributes(roomUuid, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/netlessBoard/windowManager`, method: 'PUT', data }); return res.data; } /** * 远程控制授权 * @param roomUuid * @param userUuid * @returns */ async remoteControlTeacherAuthorization(roomUuid, userUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/users/${userUuid}/remoteControl/authorization`, method: 'PUT' }); return res.data; } /** * 获取白板windowManager属性(课件) * @param roomUuid * @returns */ async getWindowManagerAttributes(roomUuid) { const { data } = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/netlessBoard/windowManager`, method: 'GET' }); return data; } /** * 复制房间笔迹 * @param roomUuid * @param fromRoomUuid * @returns */ async copyScenes(roomUuid, fromRoomUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/netlessBoard/scenes`, method: 'POST', data: { fromRoomUuid } }); return res.data; } /** * 远程控制取消授权 * @param roomUuid * @param userUuid * @returns */ async remoteControlTeacherUnauthorization(roomUuid, userUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/users/${userUuid}/remoteControl/authorization`, method: 'DELETE' }); return res.data; } /** * 远程控制-老师发起邀请 * @param roomUuid * @param data * @returns */ async remoteControlTeacherInvite(roomUuid, data) { const { toUserUuid } = data; const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/processes/remoteControl/progress`, method: 'PUT', data: { toUserUuid } }); return res.data; } /** * 远程控制-老师结束邀请 * @param roomUuid * @param toUserUuid * @returns */ async remoteControlTeacherStopInvite(roomUuid, toUserUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/processes/remoteControl`, method: 'DELETE', data: { toUserUuid } }); return res.data; } /** * 远程控制-学生同意邀请 * @param roomUuid * @param userUuid * @returns */ async remoteControlStudentAcceptInvite(roomUuid, userUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/users/${userUuid}/remoteControl/acceptance`, method: 'PUT' }); return res.data; } /** * 远程控制-获取远程控制需要的token * @param roomUuid * @param userUuid * @returns */ async remoteControlGetTokens(roomUuid, userUuid) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/users/${userUuid}/remoteControl/token`, method: 'PUT' }); return res.data; } /** * 更新视频墙开关状态和发流用户列表 * @param roomUuid 课堂 ID * @param state :视频墙开关状态 * - 1:开启视频墙功能 * - 0:关闭视频墙功能 * @param data 想要控制发流权限的用户 ID 列表 * @returns */ async updateExpandedScopeAndStreams(roomUuid, state, data) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/expandedScope/states/${state}`, method: 'PUT', data }); return res.data; } /** * 批量更新用户属性 * @param param0 * @returns */ async updateBatchUserProperties({ roomUuid, data }) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/users/properties/batch`, method: 'PUT', data: { users: data } }); return res.data; } /** * 批量删除用户属性 * @param param0 * @returns */ async deleteBatchUserProperties({ roomUuid, data }) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/users/properties/batch`, method: 'DELETE', data: { users: data } }); return res.data; } /** * 更新用户tag属性 * @param param0 * @returns */ async updateUserTags({ key, data, roomUuid, userUuid }) { const res = await this.fetch({ path: `/v1/rooms/${roomUuid}/user/${userUuid}/tags/${key}`, method: 'PUT', data: { properties: data } }); return res.data; } /** * 查询房间sequences事件 * @param param0 * @returns */ async getRoomEvents({ roomUuid, userUuid, nextId, cmd, causeDataFilterKeys, causeDataFilterValues }) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/sequences`, method: 'GET', query: { userUuid, nextId, cmd, causeDataFilterKeys, causeDataFilterValues } }); return res.data; } /** * 查询房间录制列表 * @param param0 * @returns */ async getRecordList({ roomUuid, nextId }) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/records`, method: 'GET', query: { nextId } }); return res.data; } /** * 获取 AgoraChat 用户登录 Token * @param param0 * @returns */ async getAgoraChatToken({ roomUuid, userUuid }) { const res = await this.fetch({ path: `/v2/rooms/${roomUuid}/widgets/easemobIM/users/${userUuid}/token`, method: 'GET' }); return res.data; } }) || _class);