netender-web-kit
v1.1.1
Published
NETender Web Kit 是网易会议招采场景专用的带 UI 的整体解放方案,提供了招采会议场景下的核心接口服务。
Readme
NETender Web Kit
NETender Web Kit 是网易会议招采场景专用的带 UI 的整体解放方案,提供了招采会议场景下的核心接口服务。
特性
- 🚀 轻量级:仅包含招采会议场景,不包含其他功能
- 🔧 灵活:提供完整的招采会议功能接口,可被不同 UI 层调用
- 📦 TypeScript:完整的 TypeScript 支持
快速开始
初始化
import NETenderKit from 'netender-web-kit';
// 初始化
await NETenderKit.init({
appKey: 'your-app-key',
serverUrl: 'https://meeting.yunxinroom.com',
});账号登录
// 通过Token登录
const result = await NETenderKit.loginByToken({
accountId: 'account-id',
accountToken: 'account-token',
});
const userUuid = result.userUuid;预约会议
const scheduledMembers = [
{
userUuid: userUuid, //可以从登录接口成功返回获取
role: 'host', //在会议中的角色
name: '执行人', //在会议中的昵称
},
];
const scheduleMeetingInfo = {
subject: '', //会议主题
startTime: 1589000000000, //毫秒时间戳
endTime: 1589000000000, //毫秒时间戳
enableWaitingRoom: false, //是否开启等待室
scheduledMembers, //预约成员
cloudRecordConfig: {
enable: true, //默认开启服务器录制
},
};
const scheduleMeetingInfo = await NETenderKit.scheduleMeeting(options);
console.log('预约会议成功: ', scheduleMeetingInfo);获取预约会议信息
//init之后,可以监听会议信息变更事件
NETenderKit.addEventListener({
onMeetingItemInfoChanged: () => {
console.warn('个人会议信息变更通知, 请刷获取最新的会议列表信息');
fetchAllMeetings();
},
});
const meetingInfo = meetingManager?.getMeetingInfo();
async function fetchAllMeetings() {
let allMeetings = [];
let offset = 0;
const size = 20;
let down = false;
while (!down) {
const list = await NETenderKit.getMeetingListBySize({
states: [1, 2, 3],
offset: offset,
size: size,
});
console.log('获取到会议列表: ', list);
allMeetings = allMeetings.concat(list);
if (list.length < size) {
down = true;
} else {
offset += list.length;
}
}
console.log('获取到所有会议信息: ', allMeetings);
// 转 MeetingInfo 格式
const meetingInfos = allMeetings.map((item, idx) => ({
index: idx,
topic: item.subject, //会议主题
meetingId: item.meetingId, //会议ID
meetingNum: item.meetingNum, //会议号
ownerNickname: item.ownerNickname, //会议预约者的昵称
ownerUserUuid: item.ownerUserUuid, //会议预约者的用户ID
scheduledMembers: item.scheduledMembers.map(mem => ({
//预约会议的成员
userUuid: mem.userUuid, //mem.userUuid, 预约会议的成员用户ID
nickname: '', //mem.nickname, 预约者预约的会议成员昵称(仅仅在这场会议中生效)
role: mem.role, //mem.role, 预约会议的成员角色(仅仅在这场会议中生效)
})),
startTimestamp: item.startTime, //预约会议开始时间,毫秒时间戳
endTimestamp: item.endTime, //预约会议结束时间,毫秒时间戳
waitingRoom: item.settings.roomInfo.openWaitingRoom, //是否开启等待室
}));
console.log('转换后的会议列表 meetingInfos: ', meetingInfos);
}预约后编辑会议
// 只有预约者有权限变更预约信息
const meetingInfo = await NETenderKit.editMeeting(scheduleMeetingInfo.meetingId, options);
console.log('编辑会议成功: ', meetingInfo);加入会议
// 可以从 fetchAllMeetings 获取meetingNum、自己在这场会议中的nickName
await meetingManager?.joinTenderMeeting({
meetingNum: '', //会议号
nickName: '', //在会议中的昵称
userUuid: '', //可以从登录接口成功返回获取,个人的用户ID
});渲染 kit 组件
// 加入会议之后,可以渲染 kit 组件
// 'tender-container' 为 kit 组件的父容器 ID,建议该容器在页面中全屏显示(kit组件会撑满该容器)
await NETenderKit.render({
containerId: 'tender-container',
onError: (error: unknown) => {
console.error('error:', error);
},
});许可证
MIT
贡献
欢迎提交 Issue 和 Pull Request。
更新日志
1.0.0
- 初始版本
- 按功能模块重新设计架构
- 提供 18 个功能管理器的完整接口
- 支持 Web、H5、Electron 平台
- 完整的 TypeScript 支持
