更新时间:2024-09-13 GMT+08:00

预约会议

接口描述

该接口用于预约会议。

注意事项

  • 不在登录状态下,不应调用该接口。
  • 会议开始时间必须晚于当前时间,会议时长应大于15分钟。
  • 个人会议或者云会议室的时候要传入vmrId。
  • 携带与会者入会的时候需要传入attendees。
  • callback中的result返回会议详情信息(ConfInfo类型说明

方法定义

1
2
3
4
5
6
    /**
     * 预约会议
     * @param bookConfParam 预约会议参数
     * @param hwmCallback 结果回调
     */
   void bookConf(BookConfParam bookConfParam , HwmCallback<ConfInfo> hwmCallback);

参数描述

表1 BookConfParam参数说明

参数

是否必须

类型

描述

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分钟启动会议

说明:
  • 仅针对随机会议ID的会议生效。
  • 固定会议ID的会议,不支持设置提前入会时间。

isOpenWaitingRoom

boolean

是否开启等候室:

说明:
  • 等候室功能开通后才生效。

customInfo

String

端侧自定义数据,服务器不感知业务

concurrentParticipants

int

会议方数,会议最大与会人数限制。

注:不填则不限制

confResType

ConfResType

会议资源类型,共享VMR需要传ConfResType.CONF_RESTYPE_SHARE_VMR,非共享VMR可不传此参数

autoMuteMode

AutoMuteType

个人客户端入会是否自动静音

hardTerminalAutoMuteMode

AutoMuteType

会议室设备入会是否自动静音

表2 AttendeeModel参数说明

参数

是否必须

类型

描述

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

与会者类型

email

String

邮箱

sms

String

手机号码

email

String

邮箱

orgId

String

用户的企业ID, 用于识别是否是本企业账号(仅用于获取与会者列表使用)

isAnonymous

boolean

是否是匿名入会

state

ConfAttendeeState

与会者状态(仅用于获取与会者列表使用)

表3 ConfInfo类型说明

成员名称

类型

描述

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

是否在分组讨论中

表4 VmrIdType枚举说明

枚举名称

枚举值

枚举说明

FIXED_ID

0

VmrId是固定类型

RANDOM_ID

1

VmrId是随机类型

表5 ConfResType枚举说明

枚举名称

枚举值

枚举说明

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);