场景4:编辑会议
描述
预约会议成功后,可以通过编辑会议接口来编辑会议信息,在编辑会议时可以添加与会者。
业务流程
得到会议列表以后,若要编辑会议,需要先通过getConfDetail接口查询会议详情,在接口回调onGetConfDetailResult中处理详情数据,再调用editConf接口对会议详情进行修改,并处理接口回调函数onEditConfResult和订阅的onConfListChanged通知。
- 获取会议详情
- 组装数据结构GetConfDetailParam和接口回调函数onGetConfDetailResult
- 调用GetConfDetail接口,第1步中的数据作为参数。
- 处理回调函数
处理回调onGetConfDetailResult,得到会议详情数据。
- 调用编辑会议接口
- 使用步骤2获取的数据,组装数据结构EditConfParam(包含结构内的Array<AttendeeBaseInfo>)和回调函数onEditConfResult。
- 调用editConf接口,第1步中的数据作为入参。
- 处理回调函数
处理回调函数onEditConfResult。
- 处理消息通知
处理消息通知onConfListChanged。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * 获取会议详情 */ async getConfInfoById(confId) { let param = { confId: "989156631", } const apiService = new ApiService(); let setResult = await apiService.getConfDetail(param); if (setResult.ret == 0) { let _data = setResult.confDetail; console.log("confDetail:", _data); // 此处省略缓存会议详情数据代码 } else { window.electron.ipcRenderer.send("show-error-alert", "getConfDetail error = " + setResult.ret); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * ApiService中getConfDetail接口定义 */ async getConfDetail(getConfDetailParam) { return new Promise((resolve) => { let resultCallback = (ret, reason, confDetail) => { console.log("getConfDetail, out data = ", { ret, reason, confDetail }); resolve({ ret, reason, confDetail }); }; console.log("getConfDetail, in param = ", getConfDetailParam); this.uisdkService.getConfMgrApi().getConfDetail(getConfDetailParam, resultCallback); }); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/** * 编辑会议接口 */ async editConf() { // 从缓存中得到会议详情数据存在state中,从state中读取 let { confId, subject, startTime, duration, mediaType, needPassword, timezone, vmrFlag, vmrId, confAllowJoinUser, isSendSms, isSendEmail, isSendCalendar, attendees, isAutoRecord, isOpenWaitingRoom, vmrConfId } = this.state; let _attendees = attendees ? JSON.parse(attendees) : ""; let param = { confId: confId, startTime: 1598398920, // utc时间戳 duration: 0 * 60 + 30, // 会议时长 isSendCalendar: isSendCalendar, confCommonParam: { subject: subject, mediaType: mediaType, needPassword: needPassword, timezone: 56, // 本地时区,用户依据自身情况自己调整,56东八区 vmrId: vmrId, vmrConfIdType: (vmrConfId != "") ? 0 : 1, confAllowJoinUser: ConfAllowJoinUserType.CONF_ALLOW_JOIN_ANYONE, // 取编辑会议上面的允许入会用户类型 isSendSms: isSendSms, isSendEmail: isSendEmail, attendees: _attendees, isAutoRecord: false; // 默认会议不启用自动录制 isOpenWaitingRoom: isOpenWaitingRoom, } } const apiService = new ApiService(); let setResult = await apiService.editConf(param); if (setResult.ret != 0) { window.electron.ipcRenderer.send("show-error-alert", "editConf error = " + setResult.ret); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * ApiService中editConf接口定义 */ async editConf(editConfParam) { return new Promise((resolve) => { let resultCallback = (ret, reason) => { console.log("editConf, out data = ", { ret, reason }); resolve({ ret, reason }); }; console.log("editConf, in param = ", editConfParam); this.uisdkService.getConfMgrApi().editConf(editConfParam, resultCallback); }); } |
onConfListChanged事件通知跟预约会议场景相同,请参考预约会议的示例代码。