-
Logout 接口描述 该接口用于退出已登录的华为云会议账号。 注意事项 请在已登录的场景下调用。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode Logout();
回调函数 1 virtual void OnLogoutResult(hwmsdk::HwmErrCode ret, const char* reason, const HwmLogoutResult* logoutResult) {};
参数描述 无。 返回值 表1 返回值 类型 描述 HwmErrCode 成功返回0,其他值表示失败。失败返回值见错误码参考。 HwmLogoutResult 登出结果信息。 表2 结构体HwmLogoutResult参数说明 参数 类型 描述 userUuid char[] UUID(由系统分配的真实的唯一用户标识)。 account char[] 账号。 thirdAccount char[] 第三方账号。 示例代码 1
2
3
4
5
6
7
8
9
10
11
12 /**
* 退出登录
*/
void demoMainMenuDlg::OnBnClickedLogout()
{
//调用退出登录接口
int ret = hwmsdkagent::Logout();
if (hwmsdk::HWM_COMMON_SUC
CES S != ret)
{
AfxMessageBox(_T("Logout error"));
}
}
-
Login 接口描述 该接口用于登录。登录分为华为云会议账户登录和AppID登录,由authType参数决定。 注意事项 创建会议,被邀入会等功能只有在登录后才能使用,若不登录,将无法体验完整会议功能。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode Login(HwmLoginInfo *loginInfo);
-
示例代码 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 /**
* 登录处理
*/
int demoLoginDlg::Login()
{
int ret;
//设置App ID登录参数
/**
*.此处省略第三方服务器做的数据转换,最后获取到nonce和signature
*/
strncpy_s(loginParam.appIdAuthInfo.thirdUserId, GetUserId.c_str(), HWM_MAX_USER_ID_LEN);
strncpy_s(loginParam.appIdAuthInfo.userName, GetUserName.c_str(), HWM_MAX_USER_NAME_LEN);
strncpy_s(loginParam.appIdAuthInfo.signature, GetSignature().c_str(), HWM_MAX_SIGNATURE_LEN);
strncpy_s(loginParam.appIdAuthInfo.nonce, GetNonce().c_str(), HWM_APPID_NONCE_LEN );
strncpy_s(loginParam.appIdAuthInfo.email, GetEmail.c_str(), HWM_MAX_EMAIL_LEN);
strncpy_s(loginParam.appIdAuthInfo.phoneNumber, GetPhoneNumber.c_str(), HWM_MAX_PHONE_NUM_LEN);
loginParam.appIdAuthInfo.expireTime = 1598398920; // utc时间,单位s
loginParam.authType = hwmsdkagent::HWM_AUTH_TYPE_APPID;
//调用登录接口
ret = hwmsdkagent::Login(&loginParam);
return ret;
}
1
2
3
4
5
6
7
8
9
10
11 /**
* 登录接口回调
*/
void demoCallbackProc::OnLoginResult(hwmsdk::HwmErrCode ret, const char* msg)
{
CS tring codeStr;
codeStr.Format(_T("%d"), ret);
string msgStr = CTools::UTF82MultiByte(msg);
CString tips = _T("OnLoginResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str());
AfxMessageBox(tips);
}
-
示例代码 1
2
3
4
5
6
7
8
9
10
11 /**
* 退出sdk
*/
void CdemoBeforeLoginDlg::OnBnClickedButtonExit()
{
int ret = hwmsdkagent::Exit();
if (hwmsdk::HWM_COMMON_SUCCESS != ret)
{
AfxMessageBox(_T("Exit error"));
}
}
-
示例代码 1
2
3
4
5
6
7
8
9
10
11
12 /**
* 退出登录
*/
void demoMainMenuDlg::OnBnClickedLogout()
{
//调用退出登录接口
int ret = hwmsdkagent::Logout();
if (hwmsdk::HWM_COMMON_SUCCESS != ret)
{
AfxMessageBox(_T("Logout error"));
}
}
-
示例代码 1
2
3
4
5
6
7
8
9
10
11 /**
* 配置邀请按钮
*/
int hwmSDKConfigUI::hwmSDKStartUIConfig()
{
//配置“邀请”按钮
CString inviteBtn = ("{\"frame\":{\"confMenu\" : {\"toolBar\":{\"button\":[{\"id\":\"invite\",\"showAsAction\" : \"ifRoom\",\"isCustomizedClick\" : true}]}}}}");
string uiConfig CTools::UNICODE2UTF(inviteBtn);
ret = hwmsdkagent::Config(uiConfig);
return ret;
}
1
2
3
4
5
6
7
8
9
10
11 /**
* 配置接口回调
*/
void demoCallbackProc::OnConfigResult(hwmsdk::HwmErrCode ret, const char* msg)
{
CString codeStr;
codeStr.Format(_T("%d"), ret);
string msgStr = CTools::UTF82MultiByte(msg);
CString tips = _T("OnConfigResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str());
AfxMessageBox(tips);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /**
* 按钮点击
消息通知
*/
void notifyProc::OnClickInjectBtn(hwmsdkagent::HwmClickInjectBtn injectBtn, void* data, const char* id)
{
INT_PTR nRes;
switch (injectBtn)
// “邀请”按钮点击消息通知
case hwmsdkagent::HWM_CLICK_INJECT_BTN_INVITE:
{
// 显示带通讯录的邀请与会人界面
hwm_ui_demo_inviteDlg inviteDlg;
nRes = inviteDlg.DoModal();
break;
}
}
-
业务流程 使用SDK实现“邀请”功能时,在SDK初始化完成后先调用Config接口,然后处理回调函数OnConfigResult。会议中,在“邀请”按钮单击后,再处理消息通知OnClickInjectBtn。 接口调用 在SDK初始化后,调用Config进行“邀请”按钮的定制。 处理回调函数 处理回调函数OnConfigResult。 处理消息通知 当“邀请”按钮单击后,再处理消息通知OnClickInjectBtn
-
业务流程 使用SDK加入已经存在的会议时,先调用JoinConfByRandom接口,然后处理回调函数OnJoinConfByRandom和消息通知OnConfState、OnConfInfo 接口调用 组装数据结构HwmJoinConfByRandomInfo。 调用JoinConfByRandom开始入会,第1步中的数据作为参数。 处理回调函数 处理回调函数OnJoinConfByRandomResult。 处理消息通知 处理消息通知OnConfState。 处理消息通知 处理消息通知OnConfInfo。
-
示例代码 1
2
3
4
5
6
7
8
9
10
11
12
13
14 // 通过会议ID和Random加入会议
int demoJoinConfByRandomDlg::clickJoinConfByRandom()
{
// 填写会议ID和密码映射值等;Random入会时,支持配置会场名称
hwmsdkagent::HwmJoinConfByRandomInfo data;
memset(&data, 0, sizeof(hwmsdkagent::HwmJoinConfByRandomInfo));
strncpy_s(data.confId, GetMeetingID().c_str(), HWM_MAX_CONF_ID_LEN);
strncpy_s(data.random, GetAccessCode().c_str(), HWM_MAX_RANDOM_LEN);
strncpy_s(data.name, GetParticipantName().c_str(), HWM_MAX_DISPLAY_NAME_LEN);
int ret = hwmsdkagent::JoinConfByRandom(&data);
return ret;
}
-
描述 通过邮件会议通知中的会议链接入会时(会议链接如:https://bmeeting.huaweicloud.com/#/j/981924330/e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659),链接里面的是会议ID(即举例中的981924330)和会议随机数密码(即举例中的e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659)。 在华为云会议账号登录后或者登录前,都可以使用该接口通过分享会议链接中的会议ID和48位密码映射值Random加入会议。
-
示例代码 1
2
3
4
5
6
7
8
9
10
11
12
13
14 // 通过会议ID加入会议
int demoJoinConfByIdDlg::clickJoinConfById()
{
// 填写会议ID和会议密码;未登录场景下加入会议时,也可以配置本会场的会场名称
hwmsdkagent::HwmJoinConfByIdInfo data;
memset(&data, 0, sizeof(hwmsdkagent::HwmJoinConfByIdInfo));
strncpy_s(data.confId, GetMeetingID().c_str(), HWM_MAX_CONF_ID_LEN);
strncpy_s(data.password, GetAccessCode().c_str(), HWM_MAX_PASSWORD_LEN);
strncpy_s(data.name, GetParticipantName().c_str(), HWM_MAX_DISPLAY_NAME_LEN);
int ret = hwmsdkagent::JoinConfById(&data);
return ret;
}
1
2
3
4
5
6
7
8
9
10
11 /**
* 会议id入会接口回调
*/
void demoCallbackProc::OnJoinConfByIdResult(hwmsdk::HwmErrCode ret, const char* msg)
{
CString codeStr;
codeStr.Format(_T("%d"), ret);
string msgStr = CTools::UTF82MultiByte(msg);
CString tips = _T("OnJoinConfByIdResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str());
AfxMessageBox(tips);
}
OnConfState和OnConfInfo的事件通知跟创建会议场景相同,请参考创建会议的示例代码。
-
业务流程 使用SDK加入已经存在的会议时,先调用JoinConfById接口,然后处理回调函数OnJoinConfByIdResult和消息通知OnConfState、OnConfInfo。 接口调用 组装数据结构HwmJoinConfByIdInfo。 调用JoinConfById开始创建,第1步中的数据作为参数。 处理回调函数 处理回调函数OnJoinConfByIdResult。 处理消息通知 处理消息通知OnConfState。 处理消息通知 处理消息通知OnConfInfo。
-
业务流程 若要创建个人会议ID的会议或者云会议室的会议,则需要先调用GetVmrList接口查询个人会议ID和云会议室信息,然后处理回调函数OnGetVmrList返回的数据,该数据可用于创建会议。 使用SDK创建立即会议时,先调用CreateConf接口,然后处理回调函数OnCreateConfResult和消息通知OnConfState、OnConfInfo。 接口调用 组装数据结构HwmCreateConfInfo。 组装数据结构HwmConfAttendee。 调用CreateConf开始创建,第1步中的数据作为参数。 处理回调函数 处理回调函数OnCreateConfResult。 处理消息通知 处理消息通知OnConfState。 处理消息通知 处理消息通知OnConfInfo。 处理消息通知 处理消息通知OnConfList。
-
示例代码 1
2
3
4
5
6
7 /**
* 取消会议接口
*/
int demoConfListDlg::OnBnCancelConf(hwmsdk::HwmErrCode ret, const char* msg)
{
return hwmsdkagent::CancelConf(GetConfId());
}
1
2
3
4
5
6
7
8
9
10
11 /**
* 取消会议接口回调
*/
void demoCallbackProc::OnCancelConfResult(hwmsdk::HwmErrCode ret, const char* msg)
{
CString codeStr;
codeStr.Format(_T("%d"), ret);
string msgStr = CTools::UTF82MultiByte(msg);
CString tips = _T("OnCancelConfResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str());
AfxMessageBox(tips);
}
OnConfList事件通知跟预约会议场景相同,请参考预约会议的示例代码。
-
示例代码 1
2
3
4
5
6
7
8 /**
* 获取会议详情
*/
int demoEditConfDlg::GetConfDetail()
{
int ret =hwmsdkagent::GetConfDetail(GetConfID()); // 使用会议id查询会议详细信息
return ret;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /**
* 会议详情回调处理
*/
void demoCallbackProc::OnGetConfDetail(hwmsdk::HwmErrCode ret, const char* reason, const HwmConfDetail* confDetail)
{
if (confDetail == nullptr)
{
return;
}
// 此处省略缓存会议详情数据代码
CString codeStr;
codeStr.Format(_T("%d"), ret);
string msgStr = CTools::UTF82MultiByte(msg);
CString tips = _T("OnGetConfDetail code:") + codeStr + _T(", msg:") + CString(msgStr.c_str());
AfxMessageBox(tips);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 /**
* 编辑会议接口
*/
int demoEditConfDlg::EditConf()
{
hwmsdkagent::HwmConfDetail confDetail{0}; //从缓存中得到会议详情数据赋予confDetail
hwmsdkagent::HwmEditConfParam editConfParam{ 0 };
//根据实际需求拷贝confDetail的数据
strncpy_s(editConfParam.confId, confDetail.confListInfo.confId, HWM_MAX_CONF_ID_LEN);
editConfParam.vmrFlag = confDetail.vmrFlag;
strncpy_s(editConfParam.vmrId, confInfo.vmrId, HWM_MAX_VMR_CONF_ID_LEN);
// 此处省略部分赋值代码
editConfParam.timeZone = 56; // 本地时区,用户依据自身情况自己调整,56东八区
editConfParam.isRecordOn = false; //默认会议不启用允许录制
editConfParam.isAutoRecordOn = false; //默认会议不启用自动录制
editConfParam.startTime = 1598398920; //utc时间戳
editConfParam.duration = 0 * 60 + 30;//会议时长
editConfParam.joinConfRestrictionType = hwmsdkagent::HwmJoinConfPermissionType::RESTRICTION_CALL_IN_ALL; //取编辑会议上面的允许入会用户类型
return hwmsdkagent::EditConf(&editConfParam);
}
1
2
3
4
5
6
7
8
9
10
11 /**
* 编辑会议接口回调
*/
void demoCallbackProc::OnEditConfResult()
{
CString codeStr;
codeStr.Format(_T("%d"), ret);
string msgStr = CTools::UTF82MultiByte(msg);
CString tips = _T("OnEditConfResult code:") + codeStr + _T(", msg:") + CString(msgStr.c_str());
AfxMessageBox(tips);
}
OnConfList事件通知跟预约会议场景相同,请参考预约会议的示例代码。