
# 创建会议
#### CreateConf
**接口描述**
该接口用于创建即时会议。
**注意事项**
1. 该接口默认已将自己作为主持人加入会议，调用接口时，在与会者参数中不需要带上自己的信息。
2. 若需要在创建会议的同时邀请其他与会者，需要传入其他与会者信息。若不需要，与会者信息和与会者个数可以为空。
3. 该接口为异步接口，返回值只代表接口是否调用成功，实际业务处理结果在对应的回调函数中返回。 
   
**方法定义**
```
HWM_SDK_AGENT_API hwmsdk::HwmErrCode CreateConf(HwmCreateConfInfo *createConfInfo, HwmConfAttendee *attendees, unsigned int count);
```
**回调函数**
```
virtual void OnCreateConfResult(hwmsdk::HwmErrCode ret, const char* reason) {};
```
**参数描述**
| 参数             | 是否必须 | 类型                | 描述                         |
|:---|:---|:---|:---|
| createConfInfo | 是    | HwmCreateConfInfo | 会议信息。                      |
| attendees      | 否    | HwmConfAttendee   | 与会者信息。若不需要带与会者，参数值可以为NULL。 |
| count          | 否    | unsigned int      | 与会者个数。若不需要带与会者，参数值可以为0。    |
   
 表1结构体HwmCreateConfInfo参数说明 
| 参数                       | 是否必须 | 类型                        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| subject                  | 是    | char\[\]                  | **参数解释：** 会议主题。 **约束限制**： 不涉及 **取值范围**： 0-385个字符 **默认取值**： 不涉及                                                                                                                                                                                                          |
| mediaType                | 是    | HwmConfMediaType          | **参数解释：** 会议类型。 **约束限制**： 不涉及 **默认取值**： HWM_AUDIO_AND_DATA 音频数据会议                                                                                                                                                                                                                                                                                        |
| needPassword             | 否    | bool                      | **参数解释：** 是否需要会议密码。 **约束限制**： 仅对随机会议ID生效 **默认取值**： 不需要会议密码                                                                                                                                                                                                                                                                                            |
| isAutoRecord             | 否    | bool                      | **参数解释：** 是否开启自动录制会议。开启自动录制会议开关，内部会默认支持录制会议，录制会议开关的打开与关闭并不影响。 **约束限制**： 仅对云录制生效，客户端本地录制不生效。 **默认取值**： 不开启自动录制会议。                                                                                                                                                                                                                                         |
| allowRecord              | 否    | bool                      | **参数解释：** 是否支持录制会议。 **约束限制**： 仅对云录制生效，客户端本地录制不生效。 **默认取值**： 不支持录制会议。                                                                                                                                                                                                                                                                                     |
| callInRestriction        | 否    | HwmJoinConfPermissionType | **参数解释：** 允许入会范围限制。默认所有用户。 **约束限制**： 不涉及 **默认取值**： RESTRICTION_CALL_IN_ALL 所有用户。                                                                                                                                                                                                                                                                           |
| vmrId                    | 否    | char\[\]                  | **参数解释：** 云会议室唯一ID。 **约束限制**： 预约随机会议时，设置为空字符串。 **取值范围**： 0-128个字符 **默认取值**： 不涉及                                                                                                                                                                                        |
| vmrConfIdType            | 否    | HwmVmrConfIdType          | **参数解释：** 云会议室的会议ID类型 **约束限制**： 不涉及 **默认取值**： HWM_VMR_CONF_ID_TYPE_FIXED 固定类型                                                                                                                                                                                                                                                                          |
| guestPwd                 | 否    | char\[\]                  | **参数解释：** 普通与会者密码 **约束限制**： 如果空则服务器随机生成。仅对随机会议ID生效。 **取值范围**： 0-64个字符 **默认取值**： 不涉及                                                                                                                                                                                      |
| isOpenWaitingRoom        | 否    | bool                      | **参数解释：** 等候室开启开关。 **约束限制**： 需要等候室功能开通后才能生效。 **默认取值**： 不开启等候室。                                                                                                                                                                                                                                                                                          |
| duration                 | 否    | int                       | **参数解释：** 会议时长，单位分钟。 **约束限制**： 不涉及 **取值范围**： 最小值15分钟，最大值1440分钟。 **默认取值**： 不填时由服务端取默认会议时长30分钟                                                                                                                                                                                 |
| concurrentParticipants   | 否    | unsigned int              | **参数解释：** 会议方数，会议最大与会人数限制。 **约束限制**： 不涉及 **取值范围**： - 0：无限制  - 大于0：会议最大与会人数   **默认取值**： 不涉及 |
| customInfo               | 否    | char\[\]                  | **参数解释：** 自定义扩展信息 **约束限制**： 不涉及 **取值范围**： 0-64个字符 **默认取值**： 不涉及                                                                                                                                                                                                            |
| confResType              | 否    | HwmConfResType            | **参数解释：** 会议资源类型。 **约束限制**： 不涉及 **默认取值**： HWM_CONF_RESTYPE_DEFAULT 默认                                                                                                                                                                                                                                                                                |
| defaultSummaryState      | 否    | HwmSummaryState           | **参数解释：** 会议云录制是否包含纪要，初始值。 **约束限制**： 仅企业配置支持智能会议纪要时生效（corpEnableSummary），参考[表1](https://support.huaweicloud.com/sdkreference-meeting/meeting_basic_0022.html#ZH-CN_TOPIC_0269368630__table1714474365814) **默认取值**： SUMMARY_STATE_CLOSE 会议纪要关闭                                                                                                          |
| autoMuteMode             | 否    | HwmAutoMuteType           | **参数解释：** 来宾入会，软终端是否自动静音。 **约束限制**： 不涉及 **默认取值**： AUTO_MUTE_TYPE_DEFAULT 与默认配置一致                                                                                                                                                                                                                                                                          |
| hardTerminalAutoMuteMode | 否    | HwmAutoMuteType           | **参数解释：** 来宾入会，硬终端是否自动静音。 **约束限制**： 不涉及 **默认取值**： AUTO_MUTE_TYPE_DEFAULT 与默认配置一致                                                                                                                                                                                                                                                                             |
| forbiddenScreenShots     | 否    | bool                      | **参数解释：** 是否禁止截屏。 **约束限制**： 不涉及 **默认取值**： 允许截屏                                                                                                                                                                                                                                                                                                                 |
| 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结构体HwmConfAttendee参数说明 
| 参数             | 是否必须 | 类型                | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| name           | 是    | char\[\]          | **参数解释：** 与会者名称。 **约束限制**： 不涉及 **取值范围**： 0-256个字符 **默认取值**： 不涉及                                                                                                                             |
| number         | 是    | char\[\]          | **参数解释：** 号码。 **约束限制**： 如果填分配给账号的sip号码（如+99111244216210249）则呼叫该账号的App；如果填PSTN号码（如18700000000），则通过VoIP网关呼叫该号码，前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一，账号密码鉴权时使用。 **取值范围**： 0-128个字符 **默认取值**： 不涉及 |
| thirdUserId    | 是    | char\[\]          | **参数解释：** 第三方用户ID。 **约束限制**： 与number二选一，App ID鉴权时使用。 **取值范围**： 0-128个字符 **默认取值**： 不涉及                                                                                                                       |
| autoInviteType | 否    | HwmAutoInviteType | **参数解释：** 自动邀请类型。 **约束限制**： 仅创建会议生效 **默认取值**： AUTO_INVITE_NONE 自动邀请                                                                                                                                                                                                                 |
   
表5枚举HwmVmrConfIdType说明 
| 枚举值                         | 描述                |
|:---|:---|
| HWM_VMR_CONF_ID_TYPE_FIXED  | 云会议室的会议ID类型是固定类型。 |
| HWM_VMR_CONF_ID_TYPE_RANDOM | 云会议室的会议ID类型是随机类型。 |
   
 表6枚举HwmConfResType说明 
| 枚举值                        | 描述     |
|:---|:---|
| HWM_CONF_RESTYPE_DEFAULT   | 默认。    |
| HWM_CONF_RESTYPE_SHARE_VMR | 共享vmr。 |
   
 表7枚举HwmSummaryState说明 
| 枚举值                 | 描述      |
|:---|:---|
| SUMMARY_STATE_CLOSE | 会议纪要关闭。 |
| SUMMARY_STATE_OPEN  | 会议纪要开启。 |
   
 表8枚举HwmAutoMuteType说明 
| 枚举值                    | 描述       |
|:---|:---|
| AUTO_MUTE_TYPE_DEFAULT | 与默认配置一致。 |
| AUTO_MUTE_TYPE_MUTE    | 静音。      |
| AUTO_MUTE_TYPE_UNMUTE  | 非静音。     |
   
 表9枚举HwmAutoInviteType说明 
| 枚举值               | 描述           |
|:---|:---|
| AUTO_INVITE_NONE  | 不设置（默认自动邀请）。 |
| AUTO_INVITE_OPEN  | 自动邀请开启。      |
| AUTO_INVITE_CLOSE | 自动邀请关闭。      |
   
**返回值**
表10返回值 
| 类型         | 描述                                                                                                           |
|:---|:---|
| HwmErrCode | 成功返回0，其他值表示失败。失败返回值见[错误码参考](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0022.html)。 |
   
**示例代码**
```
/**
* 创建会议
*/
int demoCreateConfWithAttendeeDlg::clickCreatConfWithAttendee()
{
    int ret;
    hwmsdkagent::HwmCreateConfInfo data;
    memset(&data, 0, sizeof(hwmsdkagent::HwmCreateConfInfo));
    
    //设置会议主题
    strncpy_s(data.subject, GetMeetingSubjectStr().c_str(), HWM_MAX_SUBJECT_LEN);
    //设置会议类型
    data.mediaType = hwmsdkagent::HWM_VIDEO_AND_DATA
    //设置会议是否需要来宾密码
    data.needPassword = true;
    //设置会议呼入限制
    data.callInRestriction = hwmsdkagent::RESTRICTION_CALL_IN_ALL;
    //设置vmrId，若创建随机会议，则vmrId为空 此处m_confIdTypeCombo排序是把随机会议放在首位
    //因此vmrIdSelect > 0 为个人会议id与云会议室id场景
    const auto vmrIdSelect = m_confIdTypeCombo.GetCurSel();
    if (vmrIdSelect > 0 && vmrIdSelect - 1 < vmrList.size())
    {
        strcpy_s(data.vmrId, HWM_MAX_VMR_CONF_ID_LEN, vmrList[vmrIdSelect - 1].vmrId);
    }
    
    //设置与会人
    //获取与会人信息，实际使用是根据实际情况获取
    CString tempCString;
    m_attendeesEdit.GetWindowText(tempCString);
    string tempString = CTools::UNICODE2UTF(tempCString);
    vector<string> list = CTools::split(tempString, ';');
    vector<string> temp;
    int count = list.size();
    int realCount = 0;
    if (count > 0)
    {
        //申请结构体内存
        hwmsdkagent::HwmConfAttendee* participants;
        participants = (hwmsdkagent::HwmConfAttendee*)malloc(sizeof(hwmsdkagent::HwmConfAttendee) * count);
        if (participants == NULL)
        {
            return -1;
        }
        memset(participants, 0, sizeof(hwmsdkagent::HwmConfAttendee)*count);
 
        hwmsdkagent::HwmConfAttendee* participantsTemp = participants;
        for (int i = 0; i < count; i++)
        {
            temp = CTools::split(list[i], '-');
            if (temp.size() == 2)
            {
                //name赋值
                strncpy_s(participantsTemp->name, (char *)temp[0].c_str(), HWM_MAX_DISPLAY_NAME_LEN);
                //number赋值
                strncpy_s(participantsTemp->number, (char *)temp[1].c_str(), HWM_MAX_NUMBER_LEN);
                //指针个数加1
                realCount++;
                participantsTemp++;
            }
        }
        //调用SDK接口，创建会议
        ret = hwmsdkagent::CreateConf(&data, participants, realCount);
 
        //释放内存空间
        free(participants);
        participants = NULL;
    }
    else
    {
        //不携带与会人创建会议
        ret = hwmsdkagent::CreateConf(&data, NULL, 0);
    }
    return ret;
}
```
