更新时间:2024-07-30 GMT+08:00

场景4:编辑会议

描述

预约会议成功后,可以通过编辑会议接口来编辑会议信息,在编辑会议时可以添加与会者。

业务流程

得到会议列表以后,若要编辑会议,需要先通过getConfDetail接口查询会议详情,在接口回调onGetConfDetailResult中处理详情数据,再调用editConf接口对会议详情进行修改,并处理接口回调函数onEditConfResult和订阅的onConfListChanged通知。

  1. 获取会议详情

    1. 组装数据结构GetConfDetailParam和接口回调函数onGetConfDetailResult
    2. 调用GetConfDetail接口,第1步中的数据作为参数。

  2. 处理回调函数

    处理回调onGetConfDetailResult,得到会议详情数据。

  3. 调用编辑会议接口

    1. 使用步骤2获取的数据,组装数据结构EditConfParam(包含结构内的Array<AttendeeBaseInfo>)和回调函数onEditConfResult。
    2. 调用editConf接口,第1步中的数据作为入参。

  4. 处理回调函数

    处理回调函数onEditConfResult。

  5. 处理消息通知

    处理消息通知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事件通知跟预约会议场景相同,请参考预约会议的示例代码