更新时间:2025-07-28 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

参数解释:

会议主题

约束限制

不涉及

取值范围

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

参数解释:

允许来宾提前入会时间范围(单位:分钟)

约束限制

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

取值范围:

  • 0 - 随时
  • x - 提前x分钟启动会议

默认取值:

0

isOpenWaitingRoom

boolean

参数解释:

等候室开启开关

约束限制:

需要等候室功能开通后才能生效

默认取值:

false

customInfo

String

参数解释:

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

约束限制

不涉及

取值范围

0-64个字符

默认取值

不涉及

concurrentParticipants

int

参数解释:

会议最大与会人数

约束限制:

不涉及

取值范围:

  • 0:无限制
  • 大于0:会议最大与会人数

默认取值:

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

表2 AttendeeModel参数说明

参数

是否必须

类型

描述

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

参数解释:

与会者类型(仅用于获取与会者列表使用)

约束限制

不涉及

默认取值

不涉及

email

String

参数解释:

电子邮箱地址,用于发送邮件通知

约束限制

不涉及

取值范围

0-256个字符

默认取值

不涉及

sms

String

参数解释:

短信通知手机号码,用于发送短信通知

约束限制

不涉及

取值范围

0-128个字符

默认取值

不涉及

role

ConfRole

参数解释:

会议角色

ATTENDEE(0, "普通与会者")

HOST(1, "主持人")

AUDIENCE(2, "观众")

COHOST(3, "联席主持人")

约束限制

不涉及

默认取值

ATTENDEE

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

会议来宾(普通用户)链接

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

是否在分组讨论中

表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())
		.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);