agora-edu-core
Version:
Core APIs for building an online classroom
1,508 lines (1,441 loc) • 32.1 kB
JavaScript
;
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);