预约会议
接口描述
该接口用于预约会议。
注意事项
- 不在登录状态下,不应调用该接口。
- 会议开始时间必须晚于当前时间,会议时长应大于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 |
是否在分组讨论中 |
|
枚举名称 |
枚举值 |
枚举说明 |
|---|---|---|
|
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);