预约会议
接口描述
该接口用于预约会议。
注意事项
- 不在登录状态下,不应调用该接口。
- 会议开始时间必须晚于当前时间,会议时长应大于15分钟。
- 个人会议或者云会议室的时候要传入vmrId。
- 携带与会者入会的时候需要传入attendees。
- callback中的result返回会议详情信息(ConfInfo类型说明)
方法定义
1 2 3 4 5 6 | /** * 预约会议 * @param bookConfParam 预约会议参数 * @param hwmCallback 结果回调 */ void bookConf(BookConfParam bookConfParam , HwmCallback<ConfInfo> hwmCallback); |
参数描述
参数 | 是否必须 | 类型 | 描述 |
|---|---|---|---|
confSubject | 是 | String | 参数解释: 会议主题 约束限制: 不涉及 取值范围: 1-385个字符 默认取值: 不涉及 |
startTimeStamp | 是 | long | 参数解释: 会议开始时间,UTC时间戳,精度秒 约束限制: 时间戳不能早于系统当前时间 默认取值: 不涉及 |
duration | 是 | int | 参数解释: 会议时长,单位分钟 约束限制: 不涉及 取值范围: 最小值15分钟,最大值1440分钟 默认取值: 服务端默认会议时长30分钟 |
timeZone | 否 | int | 参数解释: 时区码,用于发送会议通知 约束限制: 不涉及 取值范围: 详情参考时区表 默认取值: 56(东八区) |
confType | 是 | MeetingType | 参数解释: 会议类型 CONF_AUDIO(0, "语音会议") CONF_VIDEO(1, "视频会议") 约束限制: 不涉及 默认取值: CONF_AUDIO |
attendees | 否 | List<AttendeeModel> | 参数解释: 成员列表,可选 约束限制: 不涉及 默认取值: 不涉及 |
vmrIdFlag | 否 | boolean | 参数解释: 预约会议是否使用云会议室ID 约束限制: 不涉及 默认取值: false |
vmrId | 否 | String | 参数解释: 个人会议或者云会议室ID 约束限制: 创建个人会议或云会议室的时候传入,其它时候传入空 取值范围: 0-128个字符 默认取值: 不涉及 |
isNeedConfPwd | 否 | boolean | 参数解释: 是否需要会议来宾密码 约束限制: 仅对随机会议ID生效 默认取值: true |
guestPwd | 否 | String | 参数解释: 会议来宾密码 约束限制: 如果空则服务器随机生成。仅对随机会议ID生效 取值范围: 0-64个字符 默认取值: 不涉及 |
joinConfRestrictionType | 否 | JoinConfPermissionType | 参数解释: 允许入会范围限制 PERMIT_EVERYONE(0, "允许所有人入会") PERMIT_ENTERPRISE_USER(2, "仅允许企业内人员入会") PERMIT_INVITED_USER(3, "仅允许会议邀请人员入会") 约束限制: 不涉及 默认取值: PERMIT_EVERYONE |
isRecordOn | 否 | boolean | 参数解释: 会议录制功能是否开启 约束限制: 仅对云录制生效,客户端本地录制不生效 默认取值: false |
isAutoRecord | 否 | boolean | 参数解释: 会议开始后是否自动开启录制,默认false。开启自动录制必须开启会议录制功能 约束限制: 仅对云录制生效,客户端本地录制不生效 默认取值: false |
isSmsOn | 否 | boolean | 参数解释: 发送短信通知开关 约束限制: 保留字段,暂不提供短信通知能力 默认取值: false |
isMailOn | 否 | boolean | 参数解释: 发送邮件通知开关 约束限制: 企业配置里面需要开启,否则不生效 默认取值: false |
isEmailCalenderOn | 否 | boolean | 参数解释: 发送邮件日历开关 约束限制: 企业配置里面需要开启,否则不生效 默认取值: false |
vmrIdType | 否 | VmrIdType | 参数解释: VMR ID类型 FIXED_ID(0, "固定会议ID") RANDOM_ID(1, "随机会议ID") 约束限制: 不涉及 默认取值: FIXED_ID |
allowGuestStartConf | 否 | boolean | 参数解释: 是否允许来宾提前启动会议 约束限制:
默认取值: true |
allowGuestStartConfTime | 否 | int | 参数解释: 允许来宾提前入会时间范围(单位:分钟) 约束限制:
取值范围:
默认取值: 0 |
isOpenWaitingRoom | 否 | boolean | 参数解释: 等候室开启开关 约束限制: 需要等候室功能开通后才能生效 默认取值: false |
customInfo | 否 | String | 参数解释: 端侧自定义数据,服务器不感知业务 约束限制: 不涉及 取值范围: 0-64个字符 默认取值: 不涉及 |
concurrentParticipants | 否 | int | 参数解释: 会议最大与会人数 约束限制: 不涉及 取值范围:
默认取值: 0 |
confResType | 否 | ConfResType | 参数解释: 会议资源类型 CONF_RESTYPE_DEFAULT(0, "默认") CONF_RESTYPE_SHARE_VMR(3, "共享vmr") 约束限制: 共享VMR需要传ConfResType.CONF_RESTYPE_SHARE_VMR 非共享VMR可不传此参数 默认取值: CONF_RESTYPE_DEFAULT |
autoMuteMode | 否 | AutoMuteType | 参数解释: 个人客户端入会是否自动静音 AUTO_MUTE_TYPE_DEFAULT(0, "默认") AUTO_MUTE_TYPE_MUTE(1, "静音") AUTO_MUTE_TYPE_UNMUTE(2, "非静音") 约束限制: 不涉及 默认取值: AUTO_MUTE_TYPE_DEFAULT |
hardTerminalAutoMuteMode | 否 | AutoMuteType | 参数解释: 会议室设备入会是否自动静音 AUTO_MUTE_TYPE_DEFAULT(0, "默认") AUTO_MUTE_TYPE_MUTE(1, "静音") AUTO_MUTE_TYPE_UNMUTE(2, "非静音") 约束限制: 不涉及 默认取值: AUTO_MUTE_TYPE_DEFAULT |
attendeesExcludeSelf | 否 | boolean | 参数解释: 预定的会议,与会者中是否不包含预定者 约束限制: 不涉及 默认取值: false(预订者在与会者中) |
defaultSummaryState | 否 | SummaryState | 参数解释: 录制时,智能会议纪要的默认状态 SUMMARY_STATE_CLOSE(0, "会议纪要关闭") SUMMARY_STATE_OPEN(1, "会议纪要开启") 约束限制: 仅企业配置支持智能会议纪要时生效(corpEnableSummary),参考6.5.3.6-企业配置变更 默认取值: SUMMARY_STATE_CLOSE |
autoPublishSummary | 否 | boolean | 参数解释: 是否自动发布纪要(免人工审核) 约束限制: 不涉及 默认取值: false |
参数 | 是否必须 | 类型 | 描述 |
|---|---|---|---|
number | 是 | String | 参数解释: 被叫号码 约束限制: 如果填分配给账号的sip号码(如+99111244216210249)则呼叫该账号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一,账号密码鉴权时使用 默认取值: 不涉及 |
thirdUserId | 是 | String | 参数解释: 第三方用户ID 约束限制: 与number二选一,App ID鉴权时使用 默认取值: 不涉及 |
name | 是 | String | 参数解释: 名字 约束限制: 不涉及 取值范围: 0-96个字符 默认取值: 不涉及 |
isSelf | 否 | boolean | 参数解释: 是否是用户自己 约束限制: 不涉及 默认取值: false |
isAutoInvite | 否 | boolean | 参数解释: 会议时间到了是否自动呼叫外邀 约束限制: 不涉及 默认取值: false |
isMute | 否 | boolean | 参数解释: 入会是否静音 约束限制: 不涉及 默认取值: false |
accountId | 否 | String | 参数解释: 用户账号唯一ID,企业通讯录的id(会议详情时字段返回登录账号) 约束限制: 不涉及 默认取值: 不涉及 |
type | 否 | HwmAttendeeType | 参数解释: 与会者类型(仅用于获取与会者列表使用) 约束限制: 不涉及 默认取值: 不涉及 |
否 | String | 参数解释: 电子邮箱地址,用于发送邮件通知 约束限制: 不涉及 取值范围: 0-256个字符 默认取值: 不涉及 | |
sms | 否 | String | 参数解释: 短信通知手机号码,用于发送短信通知 约束限制: 不涉及 取值范围: 0-128个字符 默认取值: 不涉及 |
role | 否 | ConfRole | 参数解释: 会议角色 ATTENDEE(0, "普通与会者") HOST(1, "主持人") AUDIENCE(2, "观众") COHOST(3, "联席主持人") 约束限制: 不涉及 默认取值: ATTENDEE |
orgId | 否 | String | 参数解释: 用户的企业ID, 用于识别是否是本企业账号 约束限制: 不涉及 默认取值: 不涉及 |
isAnonymous | 否 | boolean | 参数解释: 是否是匿名入会(仅用于获取与会者列表使用) 约束限制: 不涉及 默认取值: 不涉及 |
state | 否 | 参数解释: 与会者状态(仅用于获取与会者列表使用) 约束限制: 不涉及 默认取值: 不涉及 |
成员名称 | 类型 | 描述 |
|---|---|---|
confSubject | String | 会议主题 |
confId | String | 会议ID |
isOtherCorpConf | boolean | 是否企业外会议 |
vmrConferenceId | String | 个人会议id |
confPwd | String | 会议密码 |
confAccessNum | String | 会议接入号 |
confChairPwd | String | 会议主持人密码 |
confGuestUri | String | 会议来宾(普通用户)链接 |
confStartTimeStamp | String | 会议开始时间 |
confEndTimeStamp | String | 会议结束时间 |
confScheduserName | String | 会议创建者 |
confOrgId | String | 企业id |
audienceJoinUri | String | 观众入会链接(网络研讨会) |
audienceJoinPwd | String | 观众入会密码(网络研讨会) |
confType | ConfType | 会议类型,区分普通会议和网络研讨会 |
conferenceType | ConferenceType | 区分普通会议和周期会议 |
cycleConfParam | CycleConfParam | 周期会议参数 |
subConfSize | int | 周期子会议数量 |
subConfParam | List<SubCycleConfParam> | 周期子会议参数 |
selfConfRole | ConfRole | 本人在会议中的角色 |
isInBreakoutSubConf | boolean | 是否在分组讨论中 |
枚举名称 | 枚举值 | 枚举说明 |
|---|---|---|
FIXED_ID | 0 | VmrId是固定类型 |
RANDOM_ID | 1 | VmrId是随机类型 |
枚举名称 | 枚举值 | 枚举说明 |
|---|---|---|
CONF_RESTYPE_DEFAULT | 0 | 默认 |
CONF_RESTYPE_SHARE_VMR | 3 | 共享vmr |
示例代码
与会人列表List<AttendeeModel>的构造:
boolean needWithMember = true;
List<AttendeeModel> attendeeInfos = new ArrayList<>();
if (needWithMember) {
//以下三种方式可选
String name = getName();
String number = getNumber();
String thirdAccountId = getThirdAccountId();
if (!TextUtils.isEmpty(thirdAccountId)) {
attendeeInfos.add(AttendeeModel.buildAttendeeByThirdUserId(thirdUserId, name));
} else if (number.startsWith("+99")) {
//sip 号码入会
attendeeInfos.add(AttendeeModel.buildAttendeeBySipNumber(number, name));
} else {
//电话号码入会(手机和座机)
attendeeInfos.add(AttendeeModel.buildAttendeeByPhone(number, name));
}
}
构造通过appid登录时的与会者模型,其他模型可参考demo代码:
public static AttendeeModel buildAttendeeByThirdUserId(@NonNull String thirdUserId,
String nickName) {
AttendeeModel attendeeInfo = new AttendeeModel();
attendeeInfo.setAppId(Foundation.getAppid());
attendeeInfo.setThirdUserId(thirdUserId);
attendeeInfo.setName(nickName);
attendeeInfo.setIsAutoInvite(true);
attendeeInfo.setIsMute(true);
attendeeInfo.setRole(ConfRole.ATTENDEE);
attendeeInfo.setType(HwmAttendeeType.ATTENDEE_TYPE_NORMAL);
return attendeeInfo;
}
private HwmCallback<ConfInfo> completeHandler = new HwmCallback<ConfInfo>() {
@Override
public void onSuccess(ConfInfo result) {
dismissLoading();
DemoUtil.showToast("预约会议成功");
}
@Override
public void onFailed(int retCode, String desc) {
dismissLoading();
dismiss();
String err = ErrorMessageFactory.create(Utils.getApp(), retCode);
if (TextUtils.isEmpty(err)) {
err = Utils.getApp().getString(R.string.hwmconf_book_conf_fail);
}
DemoUtil.showToast("预约会议失败: " + retCode + ", desc:" + err);
}
};
BookConfParam bookConfParam = new BookConfParam()
.setConfSubject(getSubject())
.setStartTimeStamp(1743075947)
.setTimeZone(56)
.setDuration(60)
.setConfType(MeetingType.CONF_VIDEO)
.setVmrIdFlag(false)
.setVmrId("")
.setNeedConfPwd(true)
.setJoinConfRestrictionType(JoinConfPermissionType.PERMIT_EVERYONE)
.setRecordOn(true)
.setMailOn(true)
.setSmsOn(true)
.setEmailCalenderOn(true)
.setAttendees(attendeeInfos);
HWMBizSdk.getBizOpenApi().bookConf(bookConfParam, this.completeHandler); 
