预约会议
接口描述
该接口用于预约会议。
注意事项
- 不在登录状态下,不应调用该接口。
- 会议开始时间必须晚于当前时间,会议时长应大于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 |
会议主题 |
startTime |
是 |
long |
会议开始时间,单位为秒的UTC时间戳 |
duration |
是 |
int |
会议时长-单位分钟,最小值15分钟,最大值1440分钟 |
timeZone |
否 |
int |
时区码,默认值56-东八区,详情参考时区表 |
confType |
是 |
MeetingType |
会议类型,默认CONF_VIDEO CONF_AUDIO(0, "语音会议"), CONF_VIDEO(1, "视频会议"); |
attendees |
否 |
List<AttendeeModel> |
与会人列表 |
vmrIdFlag |
否 |
boolean |
预约会议是否使用云会议室ID,默认false |
vmrId |
否 |
String |
云会议室ID, 个人会议或者云会议室时传入(vmrIdFlag 为true时必填) |
isNeedConfPwd |
否 |
boolean |
是否需要来宾密码,默认true
说明:
仅对随机ID会议生效。 |
guestPwd |
否 |
String |
来宾密码,如果不填则来宾密码由服务端生成
说明:
仅对随机ID会议生效。 |
joinConfRestrictionType |
否 |
JoinConfPermissionType |
允许入会范围限制,默认PERMIT_EVERYONE PERMIT_EVERYONE("PERMIT_EVERYONE", 0, "允许所有人入会"), PERMIT_ENTERPRISE_USER("PERMIT_ENTERPRISE_USER", 2, "仅允许企业内人员入会"), PERMIT_INVITED_USER("PERMIT_INVITED_USER", 3, "仅允许会议邀请人员入会"); |
isRecordOn |
否 |
boolean |
录制会议开关,会议是否支持录制功能,默认false
说明:
仅对云录制生效,客户端本地录制不生效。 |
isAutoRecord |
否 |
boolean |
会议开始后是否自动开启录制,默认false。开启自动录制会议时必须开启录制会议
说明:
仅对云录制生效,客户端本地录制不生效。 |
isSmsOn |
否 |
boolean |
发送短信通知开关,默认false,企业配置里面需要开启,否则不生效 |
isMailOn |
否 |
boolean |
发送邮件通知开关,默认false |
isEmailCalenderOn |
否 |
boolean |
发送邮件日历开关,默认false |
vmrIdType |
否 |
VmrIdType |
云会议室的会议ID类型,固定会议ID或者随机会议ID。 |
allowGuestStartConf |
否 |
boolean |
是否允许来宾提前启动会议。
说明:
|
allowGuestStartConfTime |
否 |
int |
允许来宾提前入会时间范围(单位:分钟): 0 - 随时 x - 提前x分钟启动会议
说明:
|
isOpenWaitingRoom |
否 |
boolean |
是否开启等候室:
说明:
|
customInfo |
否 |
String |
端侧自定义数据,服务器不感知业务 |
concurrentParticipants |
否 |
int |
会议方数,会议最大与会人数限制。 注:不填则不限制 |
confResType |
否 |
ConfResType |
会议资源类型,共享VMR需要传ConfResType.CONF_RESTYPE_SHARE_VMR,非共享VMR可不传此参数 |
autoMuteMode |
否 |
AutoMuteType |
个人客户端入会是否自动静音 |
hardTerminalAutoMuteMode |
否 |
AutoMuteType |
会议室设备入会是否自动静音 |
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
number |
是 |
String |
SIP呼叫号码或者电话号码(number/thirdUserId 二选一) |
thirdUserId |
是 |
String |
App ID登录场景下的第三方账号
说明:
number/thirdUserId 二选一 |
name |
是 |
String |
名字。长度限制为96个字符 |
isSelf |
否 |
boolean |
是否是用户自己 |
isAutoInvite |
否 |
boolean |
会议时间到了是否自动呼叫 |
isMute |
否 |
boolean |
入会是否静音 |
accountId |
否 |
String |
用户账号唯一ID,企业通讯录的id |
type |
否 |
HwmAttendeeType |
与会者类型 |
否 |
String |
邮箱 |
|
sms |
否 |
String |
手机号码 |
否 |
String |
邮箱 |
|
orgId |
否 |
String |
用户的企业ID, 用于识别是否是本企业账号(仅用于获取与会者列表使用) |
isAnonymous |
否 |
boolean |
是否是匿名入会 |
state |
否 |
与会者状态(仅用于获取与会者列表使用) |
成员名称 |
类型 |
描述 |
---|---|---|
confSubject |
String |
会议主题 |
confId |
String |
会议ID |
isOtherCorpConf |
boolean |
是否企业外会议 |
vmrConferenceId |
String |
个人会议id |
confPwd |
String |
会议密码 |
confAccessNum |
String |
会议接入号 |
confChairPwd |
String |
会议主持人密码 |
confGuestUri |
String |
会议来宾(普通用户)链接 |
confStartTime |
String |
会议开始时间 |
confEndTime |
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 |
是否在分组讨论中 |
枚举名称 |
枚举值 |
枚举说明 |
---|---|---|
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()) .setStartTime(1599574798) .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);