
# 预约会议
#### BookConf
**接口描述**
该接口用于预约会议。
**注意事项**
1. 该接口在已登录状态下才能调用。
2. 该接口为异步接口，返回值只代表接口是否调用成功，实际业务处理结果在对应的回调函数中返回。
3. 调用该接口，与会者列表中需要添加本会场，并且将本会场设置为主持人身份。
4. 回调函数中会返回预约成功后的会议详情，详见[HwmConfDetail]结构体表。如果参数内只有会议id有值则获取会议详情失败。
**方法定义**
```
HWM_SDK_AGENT_API hwmsdk::HwmErrCode BookConf(const HwmBookConfParam *param);
```
**回调函数**
```
virtual void OnBookConfResult(hwmsdk::HwmErrCode ret, const char* reason, const HwmConfDetail* confDetail) {};
```
**参数描述**
 表1结构体HwmBookConfParam参数说明 
| 参数                       | 是否必须 | 类型                                                                                                                                           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| subject                  | 是    | char\[\]                                                                                                                                     | **参数解释：** 会议主题。 **约束限制**： 不涉及 **取值范围**： 0-385个字符 **默认取值**： 不涉及                                                                                                                                                                                                                                                                             |
| startTimeStamp           | 是    | long long                                                                                                                                    | **参数解释：** 会议开始时间，UTC时间戳，精度秒。 **约束限制**： 时间戳不能早于系统当前时间 **取值范围**： 不涉及 **默认取值**： 不涉及                                                                                                                                                                                                                                                            |
| duration                 | 是    | int                                                                                                                                          | **参数解释：** 会议时长，单位分钟。 **约束限制**： 不涉及 **取值范围**： 最小值15分钟，最大值1440分钟。 **默认取值**： 不填时由服务端取默认会议时长30分钟                                                                                                                                                                                                                                                   |
| confType                 | 否    | [HwmConfMediaType]                                                                               | **参数解释：** 会议类型。 **约束限制**： 不涉及 **默认取值**： HWM_AUDIO_AND_DATA 音频数据会议                                                                                                                                                                                                                                                                                                                                                          |
| isNeedConfPwd            | 否    | bool                                                                                                                                         | **参数解释：** 是否需要会议密码。 **约束限制**： 仅对随机会议ID生效 **默认取值**： 不需要会议密码                                                                                                                                                                                                                                                                                                                                                               |
| isRecordOn               | 否    | bool                                                                                                                                         | **参数解释：** 录制会议开关。 **约束限制**： 仅对云录制生效，客户端本地录制不生效。 **默认取值**： 不开启录制                                                                                                                                                                                                                                                                                                                                                               |
| isAutoRecordOn           | 否    | bool                                                                                                                                         | **参数解释：** 是否开启自动录制会议。开启自动录制会议开关，内部会默认支持录制会议，录制会议开关的打开与关闭并不影响。 **约束限制**： 仅对云录制生效，客户端本地录制不生效。 **默认取值**： 不开启自动录制会议。                                                                                                                                                                                                                                                                                                           |
| timeZone                 | 是    | int                                                                                                                                          | **参数解释：** 时区码，用于发送会议通知。 **约束限制**： 不涉及 **取值范围**： 请参考[时区表](https://support.huaweicloud.com/api-meeting/meeting_21_0110.html)。 **默认取值**： 56 北京时间                                                                                                                                                                                                  |
| vmrFlag                  | 否    | bool                                                                                                                                         | **参数解释：** 会议是否使用虚拟会议室。 **约束限制**： 预约并发会议时，设置为false。（废弃） **默认取值**： 不使用虚拟会议室。                                                                                                                                                                                                                                                                                                                                                  |
| vmrId                    | 否    | char\[\]                                                                                                                                     | **参数解释：** 云会议室唯一ID。 **约束限制**： 预约并发会议时，设置为空字符串。 **取值范围**： 0-128个字符 **默认取值**： 不涉及                                                                                                                                                                                                                                                                      |
| joinConfRestrictionType  | 否    | [HwmJoinConfPermissionType]                                                                     | **参数解释：** 允许入会范围限制。 **约束限制**： 不涉及 **默认取值**： RESTRICTION_CALL_IN_ALL 所有用户                                                                                                                                                                                                                                                                                                                                                       |
| isSmsOn                  | 否    | bool                                                                                                                                         | **参数解释：** 短信通知能力。 **约束限制**： 保留字段，暂不提供短信通知能力 **默认取值**： 不开启短信通知能力。                                                                                                                                                                                                                                                                                                                                                                  |
| isMailOn                 | 否    | bool                                                                                                                                         | **参数解释：** 发送邮件通知开关。 **约束限制**： 不涉及 **默认取值**： 不发送邮件通知。                                                                                                                                                                                                                                                                                                                                                                          |
| isEmailCalendarOn        | 否    | bool                                                                                                                                         | **参数解释：** 发送邮件日历开关。 **约束限制**： 不涉及 **默认取值**： 不发送邮件日历。                                                                                                                                                                                                                                                                                                                                                                       |
| attendees                | 是    | [HwmAttendeeInfo]\*                                                                              | **参数解释：** 与会者列表。 **约束限制**： 不涉及 **默认取值**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                 |
| attendeeLen              | 是    | unsigned int                                                                                                                                 | **参数解释：** 与会者列表长度。 **约束限制**： 不涉及 **取值范围**： 最小值15分钟，最大值1440分钟。 **默认取值**： 不填时由服务端取默认会议时长30分钟                                                                                                                                                                                                                                                           |
| vmrConfIdType            | 否    | [HwmVmrConfIdType]                                                                               | **参数解释：** 云会议室的会议ID类型。 **约束限制**： 不涉及 **默认取值**： HWM_VMR_CONF_ID_TYPE_FIXED 固定类型                                                                                                                                                                                                                                                                                                                                               |
| guestPwd                 | 否    | char\[\]                                                                                                                                     | **参数解释：** 普通与会者密码。 **约束限制**： 如果空则服务器随机生成。仅对随机会议ID生效。 **取值范围**： 0-64个字符 **默认取值**： 不涉及                                                                                                                                                                                                                                                      |
| isOpenWaitingRoom        | 否    | bool                                                                                                                                         | **参数解释：** 等候室开启开关。 **约束限制**： 需要等候室功能开通后才能生效。 **默认取值**： 不开启等候室。                                                                                                                                                                                                                                                                                                                                                            |
| allowGuestStartConf      | 否    | bool                                                                                                                                         | **参数解释：** 是否允许来宾提前启动会议。 **约束限制**： - 仅针对随机会议ID的会议生效。  - 固定会议ID的会议，请使用[修改云会议室信息](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0017.html)接口设置。   **默认取值**： 不允许来宾提前启动会议。                                                 |
| allowGuestStartConfTime  | 否    | unsigned int                                                                                                                                 | **参数解释：** 允许来宾提前入会时间范围（单位：分钟）。 **约束限制**： - 仅针对随机会议ID的会议生效。  - 固定会议ID的会议，不支持设置提前入会时间。   **取值范围**： 0 - 随时 x - 提前x分钟启动会议 **默认取值**： 0 |
| concurrentParticipants   | 否    | unsigned int                                                                                                                                 | **参数解释：** 会议方数，会议最大与会人数限制。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不填则不限制                                                                                                                                                                                                                                                                   |
| customInfo               | 否    | char\[\]                                                                                                                                     | **参数解释：** 自定义扩展信息 **约束限制**： 不涉及 **取值范围**： 0-64个字符 **默认取值**： 不涉及                                                                                                                                                                                                                                                                          |
| confResType              | 否    | [HwmConfResType](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0002.html#ZH-CN_TOPIC_0269368387__table183441417169)   | **参数解释：** 会议资源类型。 **约束限制**： 不涉及 **默认取值**： HWM_CONF_RESTYPE_DEFAULT 默认                                                                                                                                                                                                                                                                                                                                                |
| defaultSummaryState      | 否    | [HwmSummaryState](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0002.html#ZH-CN_TOPIC_0269368387__table1391194915188) | **参数解释：** 会议云录制是否包含纪要，初始值。 **约束限制**： 仅企业配置支持智能会议纪要时生效（corpEnableSummary），参考[表1](https://support.huaweicloud.com/sdkreference-meeting/meeting_basic_0022.html#ZH-CN_TOPIC_0269368630__table1714474365814) **默认取值**： SUMMARY_STATE_CLOSE 会议纪要关闭                                                                                                                                                                              |
| autoMuteMode             | 否    | [HwmAutoMuteType](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0002.html#ZH-CN_TOPIC_0269368387__table1710488141910) | **参数解释：** 来宾入会，软终端是否自动静音。 **约束限制**： 不涉及 **默认取值**： AUTO_MUTE_TYPE_DEFAULT 与默认配置一致                                                                                                                                                                                                                                                                                                                                           |
| hardTerminalAutoMuteMode | 否    | [HwmAutoMuteType](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0002.html#ZH-CN_TOPIC_0269368387__table1710488141910) | **参数解释：** 来宾入会，硬终端是否自动静音。 **约束限制**： 不涉及 **默认取值**： AUTO_MUTE_TYPE_DEFAULT 与默认配置一致                                                                                                                                                                                                                                                                                                                                              |
| autoPublishSummary       | 否    | bool                                                                                                                                         | **参数解释：** 是否自动发布纪要（免人工审核）。 **约束限制**： 不涉及 **默认取值**： 不自动发布纪要                                                                                                                                                                                                                                                                                                                                                               |
   
 表2枚举HwmConfMediaType说明 
| 枚举值                | 描述      |
|:---|:---|
| HWM_AUDIO_AND_DATA | 音频数据会议。 |
| HWM_VIDEO_AND_DATA | 视频数据会议。 |
   
 表3枚举HwmJoinConfPermissionType说明 
| 枚举值                         | 描述     |
|:---|:---|
| RESTRICTION_CALL_IN_ALL     | 所有用户。  |
| RESTRICTION_CALL_IN_COMPANY | 企业内用户。 |
| RESTRICTION_CALL_IN_INVITED | 被邀请用户。 |
   
 表4结构体HwmAttendeeInfo参数说明 
| 参数           | 是否必须 | 类型                                                                                                                                                                          | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| number       | 是    | char\[\]                                                                                                                                                                    | **参数解释：** 号码。 **约束限制**： 如果填分配给账号的sip号码（如+99111244216210249）则呼叫该账号的App；如果填PSTN号码（如18700000000），则通过VoIP网关呼叫该号码，前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一，账号密码鉴权时使用。 **取值范围**： 0-128个字符 **默认取值**： 不涉及 |
| thirdUserId  | 是    | char\[\]                                                                                                                                                                    | **参数解释：** 第三方用户ID。 **约束限制**： 与number二选一，App ID鉴权时使用。 **取值范围**： 0-128个字符 **默认取值**： 不涉及                                                                                                                       |
| name         | 是    | char\[\]                                                                                                                                                                    | **参数解释：** 与会者名称。 **约束限制**： 不涉及 **取值范围**： 0-256个字符 **默认取值**： 不涉及                                                                                                                             |
| email        | 否    | char\[\]                                                                                                                                                                    | **参数解释：** 电子邮箱地址，用于发送邮件通知。 **约束限制**： 不涉及 **取值范围**： 0-256个字符 **默认取值**： 不涉及                                                                                                                |
| sms          | 否    | char\[\]                                                                                                                                                                    | **参数解释：** 短信通知手机号码，用于发送短信通知。 **约束限制**： 不涉及 **取值范围**： 0-128个字符 **默认取值**： 不涉及                                                                                                        |
| isMute       | 否    | bool                                                                                                                                                                        | **参数解释：** 是否闭音。 **约束限制**： 不涉及 **默认取值**： 不静音                                                                                                                                                                                                                           |
| isAutoInvite | 否    | bool                                                                                                                                                                        | **参数解释：** 是否自动外邀。 **约束限制**： 不涉及 **默认取值**： 不自动外邀                                                                                                                                                                                                                                  |
| role         | 是    | [HwmConfRole]                                                                                                                  | **参数解释：** 会议角色。 **约束限制**： 不涉及 **默认取值**： HWM_CONF_ROLE_ATTENDEE 普通与会者                                                                                                                                                                                                 |
| isAnonymous  | 否    | bool                                                                                                                                                                        | **参数解释：** 是否是匿名入会（仅用于获取与会者列表使用）                                                                                                                                                                                                                                                                                                                                                                                                             |
| callStatus   | 否    | ++[ConfAttendeeState](https://support.huaweicloud.com/sdkreference-meeting/toctopics/zh-cn_topic_0000001134940556.html#ZH-CN_TOPIC_0000001134940556__table16260141995815)++ | **参数解释：** 与会者状态（仅用于获取与会者列表使用）                                                                                                                                                                                                                                                                                                                                                                                                              |
| orgId        | 否    | char\[\]                                                                                                                                                                    | **参数解释：** 用于识别是否是本企业账号（仅用于获取与会者列表使用）                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表5会议成员角色HwmConfRole枚举值 
| 枚举值                    | 描述     |
|:---|:---|
| HWM_CONF_ROLE_ATTENDEE | 普通与会者。 |
| HWM_CONF_ROLE_CHAIRMAN | 主持人。   |
   
 表6枚举HwmVmrConfIdType说明 
| 枚举值                         | 描述                |
|:---|:---|
| HWM_VMR_CONF_ID_TYPE_FIXED  | 云会议室的会议ID类型是固定类型。 |
| HWM_VMR_CONF_ID_TYPE_RANDOM | 云会议室的会议ID类型是随机类型。 |
   
表7返回值 
| 类型         | 描述                                                                                                           |
|:---|:---|
| HwmErrCode | 成功返回0，其他值表示失败。失败返回值见[错误码参考](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0022.html)。 |
   
 表8结构体HwmConfDetail字段名 
| 字段                      | 类型                        | 描述                                                                                                                                      |
|:---|:---|:---|
| confListInfo            | HwmConfListInfo           | 会议信息，参见 [表3](https://support.huaweicloud.com/sdkreference-meeting/meeting_basic_0031.html#ZH-CN_TOPIC_0272621232__table12856122663719)。 |
| vmrFlag                 | bool                      | 是否是vmr会议。                                                                                                                               |
| vmrId                   | char\[\]                  | 云会议室唯一ID。                                                                                                                               |
| isRecordOn              | bool                      | 是否有录制会议权限。                                                                                                                              |
| isAutoRecord            | bool                      | 是否开启自动录制会议                                                                                                                              |
| isGuestFreePwd          | bool                      | 是否需要来宾免密。                                                                                                                               |
| isMailOn                | bool                      | 是否发送邮件通知。                                                                                                                               |
| isSmsOn                 | bool                      | 是否发送短信通知。保留字段，暂不提供短信通知能力。                                                                                                               |
| isEmailCalenderOn       | bool                      | 是否发送日历通知。                                                                                                                               |
| joinConfRestrictionType | HwmJoinConfPermissionType | 会议准入设置 [表3]。                                                                               |
| attendees               | HwmAttendeeInfo\*         | 与会者列表，字段信息参见 [预约会议](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0013.html) 中表述。                                |
| attendeeLen             | unsigned int              | 与会者列表长度。                                                                                                                                |
| confServerType          | HwmConfServerType         | 会议服务器类型 1:RTC or 0:MCU                                                                                                                  |
| isOpenWaitingRoom       | bool                      | 是否开启等候室                                                                                                                                 |
   
**示例代码**
```
/**
* 预约会议
*/
int CdemoBookConfDlg::OnBnClickedBookConf()
{
    hwmsdkagent::HwmBookConfParam data = {0};
    strncpy_s(data.subject, GetConfSubject().c_str(), HWM_MAX_SUBJECT_LEN); // 此处应是utf-8编码字符串
    data.confType = hwmsdkagent::HwmConfMediaType::HWM_VIDEO_AND_DATA;
    data.isNeedConfPwd = true;
    data.isAutoRecordOn = true;
    data.isRecordOn = true;
    data.startTime = 1598398920; //utc时间戳，单位秒，如果获取的时间是本地时间，需要转换成utc时间
    data.duration = 30; //会议持续时长(分钟)
    data.timeZone = 56; //时区，56表示东八区
    data.joinConfRestrictionType = hwmsdkagent::HwmJoinConfPermissionType::RESTRICTION_CALL_IN_ALL;
    
    std::vector<hwmsdkagent::HwmAttendeeInfo> attendeeList;
    //被邀与会者
    hwmsdkagent::HwmAttendeeInfo attendeeInfo = { 0 };
    strncpy_s(attendeeInfo.name, GetAttName().c_str(), HWM_MAX_USER_NAME_LEN);
    strncpy_s(attendeeInfo.number, GetAttNumber().c_str(), HWM_MAX_NUMBER_LEN);
    strncpy_s(attendeeInfo.email, GetAttEmail().c_str(), HWM_MAX_EMAIL_LEN);
    strncpy_s(attendeeInfo.sms, GetAttSms().c_str(), HWM_MAX_PHONE_NUM_LEN);
    strncpy_s(attendeeInfo.thirdUserId, GetAttUserId().c_str(), HWM_MAX_USER_ID_LEN);
    attendeeInfo.isMute = true;
    attendeeInfo.isAutoInvite = true;
    attendeeList.push_back(attendeeInfo);
 
    data.attendees = attendeeList.data();
    data.attendeeLen = attendeeList.size(); 
    data.isSmsOn = true;
    data.isMailOn = true;
    data.isEmailCalendarOn = true;
    return hwmsdkagent::BookConf(&data);
}
```
