云服务器内容精选

  • 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")); } }
  • 业务流程 使用SDK实现“邀请”功能时,在SDK初始化完成后先调用Config接口,然后处理回调函数OnConfigResult。会议中,在“邀请”按钮单击后,再处理 消息通知 OnClickInjectBtn。 接口调用 在SDK初始化后,调用Config进行“邀请”按钮的定制。 处理回调函数 处理回调函数OnConfigResult。 处理消息通知 当“邀请”按钮单击后,再处理消息通知OnClickInjectBtn
  • 示例代码 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; } }
  • 描述 通过邮件会议通知中的会议链接入会时(会议链接如:https://bmeeting.huaweicloud.com/#/j/981924330/e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659),链接里面的是会议ID(即举例中的981924330)和会议的Random码(即举例中的e11ddec62ee760734fcf2ba55b79937eac2aa68677caf659)。 在华为云会议账号登录后或者登录前,都可以使用该接口通过分享会议链接中的会议ID和48位密码映射值Random加入会议。
  • 业务流程 使用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; }
  • 示例代码 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事件通知跟预约会议场景相同,请参考预约会议的示例代码。