Updated on 2024-09-13 GMT+08:00

Scheduling a Meeting

API Description

This API is used to schedule a meeting.

Precautions

  • This API can be called only when you have logged in to Huawei Cloud Meeting.
  • The meeting start time must be later than the current time, and the meeting duration must be longer than 15 minutes.
  • The vmrId parameter must be passed for a personal meeting or cloud meeting room.
  • The attendees parameter must be passed if participant information needs to be carried.
  • The result parameter in the callback returns the meeting details. For details, see Table 3.

Method Definition

1
2
3
4
5
6
    /**
     * Schedules a meeting.
     * @param bookConfParam Indicates the bookConfParam object.
     * @param hwmCallback Indicates the result callback.
     */
   void bookConf(BookConfParam bookConfParam , HwmCallback<ConfInfo> hwmCallback);

Parameter Description

Table 1 BookConfParam description

Parameter

Mandatory

Type

Description

confSubject

Yes

String

Meeting topic.

startTime

Yes

long

Meeting start time. The value is a UTC timestamp, in seconds.

duration

Yes

int

Meeting duration, in minutes. The value ranges from 15 to 1,440.

timeZone

No

int

Time zone code. The default value is 56, indicating GMT+08:00. For details, see Time Zone Table.

confType

Yes

MeetingType

Meeting type. The default value is CONF_VIDEO.

CONF_AUDIO(0, "Voice meeting"),

CONF_VIDEO(1, "Video meeting");

attendees

No

List<AttendeeModel>

Participant list.

vmrIdFlag

No

boolean

Whether to use the cloud meeting room ID for meeting scheduling. The default value is false.

vmrId

No

String

Cloud meeting room ID.

This parameter is mandatory when vmrIdFlag is set to true.

isNeedConfPwd

No

boolean

Whether a guest password is required. The default value is true.

NOTE:

This parameter is valid only for meetings with a random ID.

guestPwd

No

String

Guest password. If this parameter is left blank, the guest password is generated by the server.

NOTE:

This parameter is valid only for meetings with a random ID.

joinConfRestrictionType

No

JoinConfPermissionType

Range of participants who are allowed to join the meeting. The default value is PERMIT_EVERYONE.

PERMIT_EVERYONE("PERMIT_EVERYONE", 0, "Everyone is allowed to join the meeting.")

PERMIT_ENTERPRISE_USER("PERMIT_ENTERPRISE_USER", 2, " Only corporate users are allowed to join the meeting.")

PERMIT_INVITED_USER("PERMIT_INVITED_USER", 3, "Only invited users are allowed to join the meeting.")

isRecordOn

No

boolean

Whether recording is supported. The default value is false.

NOTE:

This parameter is valid only for cloud recording, not for local recording on clients.

isAutoRecord

No

boolean

Whether to automatically start recording after the meeting starts. The default value is false. Meeting recording must be enabled if automatic recording is enabled.

NOTE:

This parameter is valid only for cloud recording, not for local recording on clients.

isSmsOn

No

boolean

Whether to send SMS notifications. The default value is false. This function must be enabled in the enterprise configuration. Otherwise, this function does not take effect.

isMailOn

No

boolean

Whether to send email notifications. The default value is false.

isEmailCalenderOn

No

boolean

Whether to send email calendars. The default value is false.

vmrIdType

No

VmrIdType

Meeting ID type of the cloud meeting room. The ID can be fixed or random.

allowGuestStartConf

No

boolean

Whether to allow guests to join the meeting ahead of the host.

NOTE:

allowGuestStartConfTime

No

int

Time range allowed for guests to join the meeting in advance, in minutes.

0: Guests can join the meeting at any time before the scheduled time.

x: Guest can join the meeting x minutes before the scheduled time.

NOTE:
  • This parameter is valid only for meetings with a random ID.
  • For meetings with fixed IDs, the time range cannot be set.

isOpenWaitingRoom

No

boolean

Whether to enable the waiting room.

NOTE:
  • The function takes effect only after the waiting room function is enabled.

customInfo

No

String

User-defined data on the device side. The server is unaware of the data.

concurrentParticipants

No

int

Maximum number of participants in the meeting.

If this parameter is left blank, there is no restriction.

confResType

No

ConfResType

Meeting resource type. This parameter is mandatory only for a shared cloud meeting room (set the value to ConfResType.CONF_RESTYPE_SHARE_VMR).

autoMuteMode

No

AutoMuteType

Whether to automatically mute personal client users when they join the meeting.

hardTerminalAutoMuteMode

No

AutoMuteType

Whether to automatically mute meeting room device users when they join the meeting.

Table 2 AttendeeModel description

Parameter

Mandatory

Type

Description

number

Yes

String

SIP number or phone number (Specify either number or thirdUserId).

thirdUserId

Yes

String

Third-party account in the app ID login scenario.

NOTE:

Specify either number or thirdUserId.

name

Yes

String

Name. The value can contain up to 96 characters.

isSelf

No

boolean

Whether you are the participant.

isAutoInvite

No

boolean

Whether to automatically make a call when the start time arrives.

isMute

No

boolean

Whether to mute the microphone when joining the meeting.

accountId

No

String

Unique ID of the user account in the corporate directory.

type

No

HwmAttendeeType

Participant type.

email

No

String

Email address.

sms

No

String

Mobile number.

email

No

String

Email address.

orgId

No

String

Enterprise ID of the user, which is used to identify whether the user belongs to your enterprise (when the API for obtaining the participant list is called).

isAnonymous

No

boolean

Whether to join the meeting anonymously.

state

No

ConfAttendeeState

Participant status. (This parameter is used only for obtaining the participant list.)

Table 3 ConfInfo description

Parameter

Type

Description

confSubject

String

Meeting topic.

confId

String

Meeting ID.

isOtherCorpConf

boolean

Whether the meeting is held in another enterprise.

vmrConferenceId

String

Personal meeting ID.

confPwd

String

Meeting password.

confAccessNum

String

Meeting access number.

confChairPwd

String

Host password.

confGuestUri

String

Guest link.

confStartTime

String

Meeting start time.

confEndTime

String

Meeting end time.

confScheduserName

String

Meeting creator.

confOrgId

String

Enterprise ID.

audienceJoinUri

String

Attendee link (for webinars).

audienceJoinPwd

String

Attendee password (for webinars).

confType

ConfType

Meeting type, which can be general meeting or webinar.

conferenceType

ConferenceType

Whether the meeting is a general or recurring meeting.

cycleConfParam

CycleConfParam

Recurring meeting series parameters.

subConfSize

int

Number of recurring meetings.

subConfParam

List<SubCycleConfParam>

Recurring meeting parameters.

selfConfRole

ConfRole

Role in the meeting.

isInBreakoutSubConf

boolean

Whether the participant is in a breakout room.

Table 4 Enumerated values of VmrIdType

Enumeration Name

Enumerated Value

Description

FIXED_ID

0

VmrId is a fixed ID.

RANDOM_ID

1

VmrId is a random ID.

Table 5 Enumerated values of ConfResType

Enumeration Name

Enumerated Value

Description

CONF_RESTYPE_DEFAULT

0

Default.

CONF_RESTYPE_SHARE_VMR

3

Shared cloud meeting room.

Sample Code

Constructor of List<AttendeeModel>:
boolean needWithMember = true;
List<AttendeeModel> attendeeInfos = new ArrayList<>();
if (needWithMember) {
        // The following three methods are available:
	String name = getName();
	String number = getNumber();
	String thirdAccountId = getThirdAccountId();
	if (!TextUtils.isEmpty(thirdAccountId)) {
	    attendeeInfos.add(AttendeeModel.buildAttendeeByThirdUserId(thirdUserId, name));
	} else if (number.startsWith("+99")) {
	    // A SIP number is used to join the meeting.
	    attendeeInfos.add(AttendeeModel.buildAttendeeBySipNumber(number, name));
	} else {
	    // A mobile number or a fixed-line phone number is used to join the meeting.
	    attendeeInfos.add(AttendeeModel.buildAttendeeByPhone(number, name));
	}
}

Construct a participant model for login using an app ID. For details about other models, see the demo code.
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("Meeting scheduled.");
	}

	@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("Schedule meeting failed.: " + 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);