
# 添加与会者
#### AddAttendee
**接口描述**
该接口用于在会议中添加与会者。
**注意事项**
1. 不在会议中，调用该接口将返回失败。
2. 该接口为异步接口，返回值只代表接口是否调用成功，实际业务处理结果在对应的回调函数中返回。
**方法定义**
```
HWM_SDK_AGENT_API hwmsdk::HwmErrCode AddAttendee(HwmConfAttendee *attendees, unsigned int count);
```
**回调函数**
```
virtual void OnAddAttendeeResult(hwmsdk::HwmErrCode ret, const char* reason) {};
```
**参数描述**
 表1结构体HwmConfAttendee参数说明 
| 参数          | 是否必须 | 类型                  | 描述                                                                                                                                   |
|:---|:---|:---|:---|
| name        | 是    | char\[\]            | 会场名。                                                                                                                                 |
| number      | 是    | char\[\]            | 号码。如果填分配给账号的sip号码（如+99111244216210249）则呼叫该账号的App；如果填PSTN号码（如18700000000），则通过VoIP网关呼叫该号码，前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一，账号密码鉴权时使用。 |
| thirdUserId | 是    | char\[\]            | 第三方用户ID。与number二选一，App ID鉴权时使用。                                                                                                      |
| accountId   | 否    | char\[\]            | 华为云会议账号。                                                                                                                             |
| type        | 否    | HwmConfAttendeeType | 会议用户类型。                                                                                                                              |
| orgId       | 否    | char\[\]            | 企业id。                                                                                                                                |
   
表2枚举HwmConfAttendeeType说明 
| 枚举值                      | 描述       |
|:---|:---|
| HWM_ATTENDEE_TYPE_NORMAL | 会议软终端用户。 |
| HWM_ATTENDEE_TYPE_MOBILE | 用户手机号码。  |
   
**返回值**
表3返回值 
| 类型         | 描述                                                                                                           |
|:---|:---|
| HwmErrCode | 成功返回0，其他值表示失败。失败返回值见[错误码参考](https://support.huaweicloud.com/sdkreference-meeting/meeting_control_0022.html)。 |
   
**示例代码**
```
/**
* 添加与会人
*/
int demoAddAttendeeDlg::clickAddAttendee()
{
    int ret;
    CString tempCString;
    
    //获取与会人信息，实际使用是根据实际情况获取
    m_numbersEdit.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++;
            }
        }
 
        ret = hwmsdkagent::AddAttendee(participants, realCount);
        
        //释放内存空间
        free(participants);
        participants = NULL;
    }
    
    return ret;
}
```
