更新时间:2024-09-13 GMT+08:00

创建会议

CreateConf

接口描述

该接口用于创建即时会议。

注意事项

  1. 该接口默认已将自己作为主持人加入会议,调用接口时,在与会者参数中不需要带上自己的信息。
  2. 若需要在创建会议的同时邀请其他与会者,需要传入其他与会者信息。若不需要,与会者信息和与会者个数可以为空。
  3. 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。

方法定义

1
HWM_SDK_AGENT_API hwmsdk::HwmErrCode CreateConf(HwmCreateConfInfo *createConfInfo, HwmConfAttendee *attendees, unsigned int count);

回调函数

1
virtual void OnCreateConfResult(hwmsdk::HwmErrCode ret, const char* reason) {};

参数描述

参数

是否必须

类型

描述

createConfInfo

HwmCreateConfInfo

会议信息。

attendees

HwmConfAttendee

与会者信息。若不需要带与会者,参数值可以为NULL。

count

unsigned int

与会者个数。若不需要带与会者,参数值可以为0。

表1 结构体HwmCreateConfInfo参数说明

参数

是否必须

类型

描述

subject

char[]

会议主题。

mediaType

HwmConfMediaType

会议类型。

needPassword

bool

是否需要会议密码。

说明:

仅对随机会议ID生效

isAutoRecord

bool

是否开启自动录制会议。开启自动录制会议开关,内部会默认支持录制会议,录制会议开关的打开与关闭并不影响。

说明:

仅对云录制生效,客户端本地录制不生效。

allowRecord

bool

是否支持录制会议。

说明:

仅对云录制生效,客户端本地录制不生效。

callInRestriction

HwmJoinConfPermissionType

允许入会范围限制。默认所有用户。

vmrId

char[]

云会议室唯一ID。预约随机会议时,设置为空字符串。

vmrConfIdType

HwmVmrConfIdType

云会议室的会议ID类型

guestPwd

char[]

普通与会者密码,如果空则服务器随机生成

说明:

仅对随机会议ID生效

isOpenWaitingRoom

bool

等候室开启开关

说明:

需要等候室功能开通后才能生效

duration

int

会议时长,单位分钟,最小值15分钟,最大值1440分钟。

注:不填时由服务端取默认会议时长

concurrentParticipants

unsigned int

会议方数,会议最大与会人数限制。

注:不填则不限制

customInfo

char[]

自定义扩展信息

confResType

HwmConfResType

会议资源类型。

defaultSummaryState

HwmSummaryState

会议云录制是否包含纪要,初始值。

autoMuteMode

HwmAutoMuteType

来宾入会,软终端是否自动静音。

hardTerminalAutoMuteMode

HwmAutoMuteType

来宾入会,硬终端是否自动静音。

表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[]

与会者名称。

number

char[]

号码。如果填分配给账号的sip号码(如+99111244216210249)则呼叫该账号的App;如果填PSTN号码(如18700000000),则通过VoIP网关呼叫该号码,前提是该企业已开通PSTN呼叫权限。与thirdUserId二选一,账号密码鉴权时使用。

thirdUserId

char[]

第三方用户ID。与number二选一,App ID鉴权时使用。

表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 返回值

类型

描述

HwmErrCode

成功返回0,其他值表示失败。失败返回值见错误码参考

示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* 创建会议
*/
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;
}