华为云用户手册

  • 80.9.5更新内容 1. Mac补充获取会议详情、编辑会议接口新增参数allowLive,具体详见获取会议详情、编辑会议。 2. 新增周期会议相关接口,具体详见预约周期会议、编辑周期会议、编辑周期子会议、取消周期会议、取消周期子会议。 3. 功能配置开关接口新增分组讨论功能开关枚举值HWM_CAPABILITY_BREAKOUT_CONF,具体请见功能配置开关。 4. 会议信息通知新增参数isInBreakoutSubConf,具体详见会议信息通知。Mac在下个版本支持。 5. Electron SDK补充常见错误码,具体详见常见错误码。 父主题: 版本更新内容
  • 80.9.5更新内容 1.取消周期子会议CancelSubCycleConf中字段subConfUUID改成subConfID,详见表1 2.预约周期会议BookCycleConf和编辑周期会议ModifyCycleConf、周期会议详情中cycleCount字段废弃,详见表2 3.会议相关功能配置开关接口EnableFeature新增分组讨论功能开关枚举值 HWM_ENABLE_FEATURE_BREAKOUT_CONF,详见表2 4.会议信息HwmConfInfo新增字段是否在讨论组中isInBreakoutSubConf,详见表1 父主题: 版本更新内容
  • 常见错误码 表1 SDKError枚举说明 变量 值 描述 UISDK_COMMON_ERROR 430100001 通用错误 UISDK_API_INVALID_PA RAM ETERS 430100002 参数错误 USG_ERR_PASSWORD 206010000 账号或密码错误 SDK_ LOG IN_ACCOUNT_LOCKED 412100010 账号被锁定 SDK_LOGIN_AUTH_ACCOUNT_DIACTIVE 412100015 账号或企业未激活 USG_APPID_AUTH_EXPIRE 206010057 APPID认证过期 USG_APPID_ACCOUNT_DISABLED 206010007 账号未激活,无权限登录 CMS_CONF_AUTHEN_NEED_PASSWORD 111070009 会议密码不能为空 CMS_CONF_NOT_FOUND_OR_AUTH_FAILED 111072065 会议不存在或密码错误 CMS_CONF_LOCKED 111072050 会议被锁定 UISDK_NOT_IN_CONF_OR_CALL 430400008 不在会议或呼叫中 CMS_VMR_ONLY_ALLOW_CHAIR_START_CONF 111071004 VMR会议不允许来宾在主持人入会前入会 UISDK_SHARE_LOCKED 430400015 共享被锁定 UISDK_NOT_IN_DATACONF 430400016 不在数据会议中 CMS_CONF_ONLY_ALLOW_USER_IN_ORG 111071074 会议只允许企业内用户呼入 CMS_CONF_ONLY_ALLOW_USER_INVITED 111071075 会议只允许被邀请用户呼入 UISDK_ALREADY_EXIST_CONF_OR_CALL 430400009 已存在一路会议或呼叫 CMS_CONF_ANONYMOUS_LOGIN_LOCKED 111071052 匿名登录锁定,请稍后重试 CMS_CONF_LINK_LOGIN_LOCKED 111071053 链接登录锁定,请稍后重试 CMS_CONF_IS_CLOSED 111072006 会议已结束 USG_VMR_PWD_SAME_AS_CHAIRMAN_PWD 201080006 主持人密码和来宾密码不能相同 请确认输入参数 CMS_CONF_PORTAL_PARTICIPANT_VMR_LOGIC_RESOURCE_NOT_ENOUGH 111076003 超出VMR最大方数 CMS_CONF_PORTAL_PARTICIPANT_RESOURCE_NOT_ENOUGH 111076004 企业并发数不足 CMS_CONF_NOT_ON_LOCAL_STATION 111100012 会议不在本站点 CMS_LOGICRES_PNUM_RESOURCE_NOT_ENOUGH 115022001 企业并发资源不足 CMS_CONF_DATA_NOT_FOUND 111070005 会议不存在 CMS_VMR_DATA_NOT_FOUND 111070006 个人云会议室不存在 CMS_CONF_ROLE_AUTHENTICATION_FAILED 111070010 权限不足,无法查看会议 CMS_ONLINE_CONF_IN_COMMUNAL 111071106 云会议室已有会议正在召开 CMS_CONF_MODIFY_FAIL_AS_CONF_ALREADY_STARTED 111071065 正在召开会议,无法编辑会议详情 CMS_ORG_CONCURRENT_PARTICIPANTS_NUMBER_IS_ZERO 111071060 企业未配置并发会议资源,无法使用个人会议ID和随机会议ID发起会议 CMS_CONF_USER_NOT_VMR_OWNER 111071063 非云会议室拥有者 CMS_CONF_CANCEL_FAIL_AS_CONF_STARTED 111071067 会议正在召开中,不允许取消会议 CMS_CONF_START_TIME_LESS_THAN_CURRENT_TIME 111071013 会议开始时间不能早于系统当前时间 CMS_CONF_START_TIME_OVER_MAX_SCHEDULE_TIME 111071014 会议开始时间超出最大预订时间范围 USG_VMR_PWM_SAME_AS_MEETING_PWD 201080017 和会议密码相同 CMS_PARTICIPANT_CONF_NOT_SUPPORT 111084013 不支持该会议 CMS_CONF_ATTENDEES_NUMBER_EXCEED_LIMIT 111071066 与会方数量超出上限 CMS_VMR_DATA_STATUS_ILLEGAL 111073007 VMR套餐状态非法 CMS_WAIT_APPLY_RESOURCE 115029006 等待申请资源中 SDK_SVN_DETECT_FAILED 411000017 svn端口探测不通 SDK_ERR_RTC_NOT_SUPPORT_STG 411000019 RTC不支持STG模式 CMS_OVER_MAX_PARTICIPANT_NUMBER 111072101 超过设置的会议方数 CMS_AUDIENCE_VMR_LOGIC_RESOURCE_NOT_ENOUGH 111072202 观众数超过VMR套餐中的观众最大并发资源数 CMS_PARTICIPANT_VMR_LOGIC_RESOURCE_NOT_ENOUGH 111072203 主持人与嘉宾超过VMR套餐中的最大并发资源数 CMS_PARTICIPANT_CONF_NOT_EXIST 111081002 会场所在会议不存在或已结束 USG_VMR_RESOURCE_UNAVAILABLE 201080000 云会议资源不可用 USG_ACCOUNT_IS_UNBOUND 206010075 账号已经解绑 RTC_SDK_JOIN_ROOM_FAIL 990000018 加入房间失败 RTC_SDK_JOIN_ROOM_STATUS_BUSY 990000019 非空闲状态 RTC_SDK_JOIN_ROOM_SERVER_ERROR 990000020 加入房间失败,服务器异常 RTC_SDK_JOIN_ROOM_AUTH_FAIL 990000022 加入房间失败,鉴权失败 RTC_SDK_JOIN_ROOM_URL_NOT_RIGHT 990000025 加入房间失败,url错误 SDK_LOGIN_CA_VERIFY_FAILED 412100012 服务器CA证书校验失败 SDK_LOGIN_CURLE_EXTERN_CONNECT_TIMEOUT 412100017 代理通信超时,tcp建链失败,大概率是代理配置错误 SDK_LOGIN_CURLE_EXTERN_CLOSED_BY_PROXY 412100018 链接被代理断开,大概率是服务器地址配置错误 SDK_LOGIN_CURLE_COULDNT_RESOLVE_PROXY 412100024 认证鉴权过程失败,无法解析网关 SDK_LOGIN_CURLE_COULDNT_RESOLVE_HOST 412100025 认证鉴权过程失败,无法解析主机 UISDK_TIMEOUT 430100004 超时 UISDK_IN_PRO CES S 430100005 接口正在处理中 UISDK_UNLOGIN_ERROR 430200001 未登录 UISDK_NOT_INITED_END 430100006 未初始化或初始化尚未完成 UISDK_NOT_SUPPORT_END 430100007 此版本不支持 UISDK_OPERATION_INTERRUPT 430100008 操作中断 UISDK_CONTACT_NOT_FOUND 430100009 联系人不存在 UISDK_ARGS_LENGTH_OVERRUN 430100010 参数长度超限 UISDK_APPID_INFO_ILLEGAL 430100011 APPID 信息入参不合法 UISDK_E2EENCRYPT_ALGORITHM_ERROR 430100012 端到端加密算法不对称 UISDK_REPEATED_LOGIN_ERROR 430200002 重复登录 UISDK_PASSWORD_OR_ACCOUNT_EMPTY 430200005 账号或密码不能都为空 UISDK_CALL_ACCOUNT_EMPTY 430300002 点对点呼叫账号为空 UISDK_CALL_NICKNAME_EMPTY 430300003 点对点呼叫名字为空 UISDK_INVALID_GUEST_PASSWORD_PARAMETER 430400007 来宾密码非法 UISDK_CONFID_EMPTY 430400010 会议id不能为空 UISDK_SUBJECT_TOO_LONG 430400011 会议主题长度不能超过50 UISDK_VMR_HOST_PASSWORD_LENGTH_LEGAL 430400012 主持人密码长度不合法 UISDK_VMR_NAME_EMPTY 430400013 VMR名字为空 父主题: 其他说明
  • setShareScreenPermission 接口描述 该接口用于设置共享权限。 注意事项 该接口返回值只代表接口是否调用成功。 方法定义 1 - (BOOL)setShareScreenPermission:(BOOL)isPermission; 参数描述 表1 参数说明 参数 是否必须 类型 描述 isPermission 是 bool 是否允许。 返回值 表2 返回值 类型 描述 BOOL 接口调用成功返回YES,失败返回NO。 示例代码 1 2 /// 设置共享权限 [[HWMSdk getOpenApi] setShareScreenPermission:isPermission];
  • 80.10.5更新内容 获取云会议列表(HWMVmrInfoModel)和修改云会议室信息(HWMModifyVMRParam )新增字段confAllowJoinUser允许入会范围限制、isOpenWaitingRoom等候室开启开关。具体请见HWMVmrInfoModel参数说明、HWMModifyVMRParam参数说明。 新增设置共享权限接口setShareScreenPermission。具体请见设置共享权限。 问题修复,体验更稳定。 父主题: 版本更新内容
  • 80.10.5更新内容 1.修改云会议室信息ChangeVmrInfoParam和云会议室信息HwmVmrInfo新增字段joinConfRestrictionType允许入会范围限制、isOpenWaitingRoom等候室开启开关,详见 表2和ChangeVmrInfo 2.新增设置共享权限接口SetShareScreenPermission,详见SetShareScreenPermission 父主题: 版本更新内容
  • 80.8.5更新内容 1.错误码细化,以及新增错误码10011鉴权信息过期,详见常见错误码 2.OnConfInfo接口参数HwmConfInfo新增字段isCreator,是否是会议预订者,详见会议信息 3.会议详情HwmConfDetail和编辑会议HwmEditConfParam新增字段isLiveOn,详见获取会议详情和编辑会议 表1 新旧版本错误码对应关系 80.7.5 版本及之前的错误码 80.8.5 版本之后的错误码 新版本错误描述 10006 10006 用户名或密码错误 206010025 APPID校验失败 206030000 系统中不存在该用户 20001 20001 会议id或密码错误 111070005 会议不存在 111070006 个人云会议室不存在 111070010 权限不足,无法查看会议 111081002 会场所在会议不存在或已结束 20015 20015 与会方超出专用VMR套餐的最大与会人数 111072101 超过设置的会议方数 父主题: 版本更新内容
  • SDK已知安全漏洞修复说明 表1 SDK已知安全漏洞及修复版本 安全漏洞描述 涉及SDK 修复版本 版本发布时间 更新OpenSSL版本到 3.0.7,修复漏洞: CVE-2023-0215 CVE-2023-2650 CVE-2023-0216 CVE-2022-4304 CVE-2023-0217 CVE-2023-1255 CVE-2023-0286 CVE-2023-0465 CVE-2023-0401 CVE-2023-0466 CVE-2023-0464 CVE-2023-2975 CVE-2023-5363 CVE-2023-3446 CVE-2022-3996 CVE-2023-3817 CVE-2022-4450 CVE-2022-4203 Android SDK/iOS SDK/Windows SDK/Mac SDK/Electron SDK 90.9.5 2023-9-26 更新curl版本到 8.1.2,修复漏洞: CVE-2023-27533 CVE-2023-27534 CVE-2023-27535 CVE-2023-27536 CVE-2023-27537 CVE-2023-27538 Android SDK/iOS SDK/Windows SDK/Mac SDK/Electron SDK 90.7.5 2023-8-4 更新wxSQLite3版本到 4.8.2,修复漏洞: CVE-2022-35737 Android SDK/iOS SDK/Windows SDK/Mac SDK/Electron SDK 80.9.5 2022-10-15
  • 80.9.5更新内容 1. 会议详情HWMConfDetail.h、编辑会议HWMOrderConfParam.h新增字段isRecordOn、isLiveOn,具体详见HWMConfDetail参数说明、HWMOrderConfParam参数说明。 2. 开启功能接口enableSDKCapability新增分组讨论枚举值HWMSDKCapabilitySuportBreakoutConf,具体详见HWMSDKCapabilitySuport参数说明。 3. 取消周期子会议CancelSubCycleConf中字段subConfUUID改成subConfID,具体详见HWMSDKCancelSubCycleConfParamModel参数说明。 4. 预约周期会议和编辑周期会议接口,HWMCycleConfParam.h中cycleCount字段废弃,具体详见HWMCycleConfParam参数说明。 父主题: 版本更新内容
  • 80.9.5更新内容 编辑会议HWMOrderConfParam.h新增字段isLiveOn。具体请见HWMOrderConfParam参数说明。 开启功能接口enableFeature:isEnable: 新增分组讨论枚举值HWMFeatureTypeBreakoutConf。具体请见开启功能。 取消周期子会议CancelSubCycleConf中字段subConfUUID改成subConfID。具体请见HWMSDKCancelSubCycleConfParamModel参数说明。 问题修复,体验更稳定 父主题: 版本更新内容
  • onClickInjectParticipantItemBtnNotify 接口描述 该接口用于定制与会者列表的子项点击事件。 方法定义 1 - (void)onClickInjectParticipantItemBtnNotify:(HWMUISDKInjectParticipantItemBtnInfoModel *)injectBtnInfo; 参数描述 表1 参数说明 参数 是否必须 类型 描述 injectBtnInfo 是 HWMUISDKInjectParticipantItemBtnInfoModel 显示设置窗口信息 表2 结构体HWMUISDKInjectParticipantItemBtnInfoModel参数说明 参数 类型 描述 injectBtn HWMUISDKClickInjectParticipantItemBtn 按钮类型 participantInfo HWMUISDKParticipantItemInfoModel 与会者子项信息 btnId NSString * 按钮Id 表3 枚举HWMUISDKClickInjectParticipantItemBtn说明 枚举值 描述 HWMUISDKClickInjectParticipantItemBtnCallOtherNum 呼叫其他号码按钮 HWMUISDKClickInjectParticipantItemBtnParticipantDetail 查看与会者详情 表4 结构体HWMUISDKParticipantItemInfoModel参数说明 参数 类型 描述 number NSString * 号码 nickName NSString * 与会者昵称 thirdUserId NSString * 与会者三方账号,appId登录时使用 accountId NSString * 华为云会议账号 返回值 无 示例代码 1 2 3 4 5 - (void)onClickInjectParticipantItemBtnNotify:(HWMUISDKInjectParticipantItemBtnInfoModel *)injectBtnInfo { // 收到通知后,对上报信息进行处理,示例代码处理方式为打印上报信息 NSString *info = [injectBtnInfo yy_modelDescription]; [HWMConsoleManager shareInstance].console = [NSString stringWithFormat:@"participant: %@", info]; }
  • showSettingWindowWithInfo 接口描述 该接口显示设置窗口。 方法定义 1 - (void)showSettingWindowWithInfo:(HWMUISDKShowSettingWindowInfoModel *)info; 参数描述 表1 参数说明 参数 是否必须 类型 描述 info 是 HWMUISDKShowSettingWindowInfoModel 显示设置窗口信息 表2 结构体HWMUISDKShowSettingWindowInfoModel参数说明 参数 类型 描述 isShow BOOL 是否显示 defaultPage HWMUISDKSettingPage 默认显示标签页 表3 枚举HWMUISDKSettingPage说明 枚举值 描述 HWMUISDKSettingPageNormal 基本设置页 HWMUISDKSettingPageVideo 视频设置页 HWMUISDKSettingPageAudio 音频设置页 HWMUISDKSettingPageRecord 录制设置页 HWMUISDKSettingPageHotkey 快捷键设置页 HWMUISDKSettingPageScreen 屏幕设置页 HWMUISDKSettingPageCount 设置页数量 返回值 无 示例代码 1 2 3 4 5 6 7 8 9 10 - (void)settingEvent:(NSButton *)button { if (![HWMSdk hasInit]) { // 初始化后才可以调用 return; } HWMUISDKShowSettingWindowInfoModel *model = [[HWMUISDKShowSettingWindowInfoModel alloc] init]; model.isShow = YES;// 设置是否显示 model.defaultPage = HWMUISDKSettingPageNormal;// 设置显示标签页 [[HWMBizSdk getBizOpenApi] showSettingWindowWithInfo:model]; }
  • ShowSettingWindow 接口描述 该接口显示设置窗口,会前会中都可以调用。 注意事项 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode ShowSettingWindow(const HwmShowSettingWindowInfo* showInfo); 回调函数 1 virtual void OnShowSettingWindowResult(hwmsdk::HwmErrCode ret, const char* reason) {}; 参数描述 表1 参数说明 参数 是否必须 类型 描述 showInfo 是 HwmShowSettingWindowInfo 显示设置窗口信息。 表2 结构体HwmShowSettingWindowInfo参数说明 参数 类型 描述 isShow bool 是否显示。 defaultPage HwmSettingPage 默认显示标签页。 表3 枚举HwmSettingPage说明 枚举值 描述 SETTING_PAGE_NORMAL 基本设置页。 SETTING_PAGE_VIDEO 视频设置页。 SETTING_PAGE_AUDIO 音频设置页。 SETTING_PAGE_RECORD 录制设置页。 SETTING_PAGE_HOTKEY 快捷键设置页。 SETTING_PAGE_SCREEN 屏幕设置页。 SETTING_PAGE_COUNT 设置页数量。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** * 显示设置窗口 */ void demoShowSettingWindowDlg::OnBnClickedOk() { hwmsdkagent::HwmShowSettingWindowInfo showInfo{ 0 }; showInfo.isShow = true; showInfo.defaultPage = hwmsdkagent::HwmSettingPage::SETTING_PAGE_NORMAL; int ret = hwmsdkagent::ShowSettingWindow(&showInfo); if (hwmsdk::HWM_COMMON_SUCCESS != ret) { AfxMessageBox(_T("show setting window error")); return; } }
  • 80.8.5更新内容 1. 获取会议详情、编辑会议接口新增参数allowLive,具体详见获取会议详情、编辑会议。Mac在下个版本支持。 2. 会议信息通知新增参数isCreator,具体详见会议信息通知。 3. 预约会议、编辑会议支持设置“来宾在主持人之前加入会议”,并可设置提前入会时间(allowGuestStartConf、allowGuestStartConfTime),具体详见预约会议、编辑会议。 父主题: 版本更新内容
  • disableVoicePrompts: 接口描述 禁用会议提示音。 注意事项 该接口非必需调用,若不设置,则使用默认模式。 返回值只代表接口是否调用成功。 方法定义 1 - (HWMSDKERR)disableVoicePrompts:(HWMSDKVoicePromptsModel *)voicePrompts; 参数描述 表1 HWMSDKVoicePromptsModel说明 参数 是否必须 类型 描述 disableMutePrompt 是 BOOL 主持人静音与会者提示音 返回值 接口是否调用成功 示例代码 1 2 3 HWMSDKVoicePromptsModel * model = [[HWMSDKVoicePromptsModel alloc] init]; model.disableMutePrompt = YES; [[HWMBizSdk getBizOpenApi] disableVoicePrompts:model];
  • DisableVoicePrompts 接口描述 禁用提示音。 注意事项 该接口非必需调用,如不调用,则默认播放会中提示音。 该接口为同步接口,返回值以错误码形式返回 方法定义 1 SDKERR disableVoicePrompts(VoicePrompts voicePrompts); 参数描述 表1 参数说明 参数 是否必须 类型 描述 voicePrompts 是 VoicePrompts 语音提示信息。 表2 结构体VoicePrompts 参数说明 参数 是否必须 类型 描述 disableMutePrompt 是 boolean 是否禁用静音提示,true表示禁用,false表示不禁用。 返回值 示例代码 1 2 3 4 VoicePrompts voicePrompts = new VoicePrompts(); voicePrompts.setDisableMutePrompt(true); SDKERR result = HWMBizSdk.getBizOpenApi().disableVoicePrompts(voicePrompts); Log.i(TAG, "result code:" + result.getValue() + " desc:" + result.getDescription());
  • DisableVoicePrompts 接口描述 禁用提示音。 注意事项 该接口非必需调用,如不调用,则默认播放会中提示音。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 HWM_SDK_AGENT_API hwmsdk::HwmErrCode DisableVoicePrompts(const HwmVoicePromptsInfo* voicePromptsInfo); 回调函数 1 virtual void OnDisableVoicePromptsResult(hwmsdk::HwmErrCode ret, const char* reason) {}; 参数描述 表1 参数说明 参数 是否必须 类型 描述 voicePromptsInfo 是 HwmVoicePromptsInfo 语音提示信息。 表2 结构体HwmVoicePromptsInfo参数说明 参数 是否必须 类型 描述 isDisableMutePrompt 是 bool 是否禁用静音提示。 返回值 表3 返回值 类型 描述 HwmErrCode 成功返回0,其他值表示失败。失败返回值见错误码参考。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 禁用提示音 */ void demoDisableVoicePromptsDlg::DisableVoicePrompts() { hwmsdkagent::HwmVoicePromptsInfo info{}; info.isDisableMutePrompt = true; int ret = hwmsdkagent::DisableVoicePrompts(&info);; if (hwmsdk::HWM_COMMON_SUCCESS != ret) { AfxMessageBox(_T("disable voice prompts error")); return; } CDialogEx::OnOK(); }
  • 80.7.5更新内容 1. 新增显示设置界面接口showSettingWindow,接口详见显示设置窗口。 2. 会议信息通知OnConfInfoNotify新增参数isOtherCorpConf,具体详见会议信息通知。 3. 与会者列表子项注入点击通知OnClickInjectParticipantItemBtnNotify新增与会者详情按钮类型HWM_CLICK_INJECT_PARTICIPANT_ITEM_BTN_PARTICIPANT_DETAIL,新增华为云会议账号参数accountId ,具体详见与会者列表子项注入点击通知。 4. Config接口新增字段participant_detail,支持与会者头像点击注入,详见界面配置json说明。 父主题: 版本更新内容
  • 80.7.5更新内容 1.新增显示设置界面接口ShowSettingWindow,接口详见显示设置窗口 2.Config接口新增字段moveall_to_waitingroom,支持全员移入等候室可隐藏,详见界面配置 3.Config接口新增字段participant_detail,支持与会者头像点击注入,详见界面配置,点击注入OnClickInjectBtn通知里面按钮类型里面增加HWM_CLICK_INJECT_BTN_PARTICIPANT_DETAIL 与会者详情按钮,data信息是HwmConfAttendee,详见注入点击 4.HwmSettingWindowConfig 添加 HwmScreenSettingTab 屏幕设置项,将双屏设置从 HwmNormalSettingTab 移到 HwmScreenSettingTab,接口详见自定义设置界面 5.会中信息通知(OnConfInfo)中HwmConfInfo参数新增字段isOtherCorpConf bool 是否是外部企业的会议,详见会议信息 6.企业信息变更通知(OnUserCorpInfo)中HwmUserCorpInfoNotifyType参数新增枚举值HWM_USER_CORP_INFO_NOTIFY_TYPE_USER_NAME_CHANGE 用户名变更和HWM_USER_CORP_INFO_NOTIFY_TYPE_USER_STATUS_CHANGE 用户状态变化,详见企业信息变更 7.会中邀人(AddAttendee)接口HwmConfAttendee参数新增字段accountId华为云会议账号,接口详见添加与会者 8.新增错误码,详见常见错误码 9.增加会议结束原因错误码,与会方超出专用VMR套餐的最大与会人数HWM_CONF_END_REASON_NUM_OF_PAR_EXCEEDS_UPPER_LIMIT,接口详见会议状态 10.新增通话结束通知OnCallRecordInfo 父主题: 版本更新内容
  • windows平台编译.node文件时遇Could not find any Python installation to use的错误提示 客户案例: windows平台,在编译.node文件时提示Could not find any Python installation to use。 原因分析: python环境变量没有配置好。 解决方案: 1. 系统中配置python环境变量 2. 或者重新安装python,选择自定义安装,勾选 Add Python to PATH 和 install for all user users 父主题: Electron SDK
  • mac平台编译.node文件时遇no template named 'remove_cv_t'的错误提示 客户案例: 某客户集成了会议Electron Sdk,在编译.node文件时提示no template named 'remove_cv_t'。 原因分析: 造成原因是remove_cv_t从c++14才开始支持,而node依赖文件binding.gyp中指定的c++版本还是c++11。 解决方案: 首先,建议node版本和electron版本要匹配安装,前往node官网下载electron版本建议的node版本(配套关系参见https://www.electronjs.org/zh/docs/latest/tutorial/electron-timelines)。其次,如果本问题依然存在,可从如下两种解决方案选择一种进行修复: 1.到对应报错文件v8-internal.h中,将remove_cv_t修改为remove_cv。 2.将binding.gyp中“OTHER_CPLUSPLUSFLAGS”的配置项“-std=c++11”修改为“-std=c++14”。 父主题: Electron SDK
  • 运行Electron demo时遇electron failed to install correctly的错误提示 客户案例: 某客户集成了会议Electron Sdk,运行启动时提示electron failed to install correctly。 原因分析: 造成原因一般是用户本地node版本和安装的electron版本不配套导致。 解决方案: 前往node官网下载electron版本建议的node版本(配套关系参见https://www.electronjs.org/zh/docs/latest/tutorial/electron-timelines)替换安装后,重新编译启动工程即可解决。 父主题: Electron SDK
  • 自定义会控按钮 自定义新增按钮。底部工具栏按钮、共享工具栏和更多菜单中的按钮支持第三方开发者自定义添加。目前底部工具栏和共享工具栏限制自定义按钮个数为1,超出的自定义按钮会移入更多菜单,自定义底部/共享工具栏按钮的顺序固定在“更多”按钮前;自定义更多菜单按钮会在底部和共享工具栏更多按钮中同时生效,底部工具栏的更多菜单中自定按钮添加在菜单栏最后,共享工具栏的更多菜单中自定按钮添加在“离开”按钮前。 删除自定义按钮。通过Config接口删除customButton中的按钮配置,关于清空自定义按钮操作,若赋值customButton:[],则清空全量自定义按钮;若customButton下未配置某位置下的自定义按钮,则清空该位置下的自定义按钮。 通过Config接口增删改自定义按钮时,需要传对应位置的全量自定义按钮,支持动态刷新底部/共享工具栏,更多菜单不支持,而是在重新生成时刷新。 增加自定义按钮 以添加自定义带子菜单的底部工具栏按钮、共享工具栏按钮和更多菜单按钮为例: { "frame":{ "confMenu":{ "toolBar":{ "customButton": [ { "buttonId": "customMenu", "title": "自定义按钮", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 1 }, { "buttonId": "customMore", "title": "自定义更多", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 0 }, { "buttonId": "customShare", "title": "自定义共享", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 2 } ] } } } } 更新自定义按钮 以重命名底部工具栏按钮为例: { "frame":{ "confMenu":{ "toolBar":{ "customButton": [ { "buttonId": "customMenu", "title": "重命名按钮", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 1 }, { "buttonId": "customMore", "title": "自定义更多", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 0 }, { "buttonId": "customShare", "title": "自定义共享", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 2 } ] } } } } 删除部分自定义按钮 customButton删除对应按钮,同时需要保留其他自定义按钮。以删除底部工具栏自定按钮为例: { "frame":{ "confMenu":{ "toolBar":{ "customButton": [ { "buttonId": "customMore", "title": "自定义更多", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 0 }, { "buttonId": "customShare", "title": "自定义共享", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 2 } ] } } } } 清空某个位置下的自定义按钮 customButton中删除该位置下的所有自定义按钮即可,若customButton下未配置某位置下的自定义按钮,则会清空该位置下的自定义按钮。以底部工具栏为例: { "frame":{ "confMenu":{ "toolBar":{ "customButton": [ { "buttonId": "customMore", "title": "自定义更多", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 0 }, { "buttonId": "customShare", "title": "自定义共享", "buttonImg": "D:/demoResource/icon-whiteboard.svg", "buttonPos": 2 }, ] } } } } 清空全量自定义按钮 customButton传入空数组,会清空所有位置下自定义按钮。清空示例如下: { "frame":{ "confMenu":{ "toolBar":{ "customButton": [ ] } } } } 父主题: 其他说明
  • 界面配置json说明 会议中的界面,界面上的部分元素是通过config接口进行自定义。可以自定义的界面元素如下: 会议窗口名称(仅针对windows平台) 会议开始后,在Windows任务栏上会生成一个会议的图标,鼠标指向该图标时会显示会议的缩略窗口,该窗口的名称可以自定义。 图1 会议窗口名称 会议信息页面点击复制会议详情的内容 会议链接的 域名 前缀默认是https://bmeeting.huaweicloud.com/(如https://bmeeting.huaweicloud.com/#/j/982989574),如果入会Portal是第三方自己开发的,会议信息页面点击复制会议详情按钮后,会议详情内容需要用户自定义。 图2 会议信息 会控按钮 删除或者修改SDK中自带的会控按。具体可以删除和修改的按钮见按钮ID定义表。 自定义新增按钮。具体用例见自定义会控按钮。 图3 底部工具栏和更多菜单 图4 共享工具栏和更多菜单 图5 状态工具栏 config接口参数描述 表1 参数说明 参数 是否必须 类型 描述 uiConfig 是 string Json对象字符串"{"frame":object}", object对象有格式要求,若不匹配则配置不生效。详细规则见下表2、表3、表4、表5。 表2 frame对象介绍 key value类型 描述 name string 会议窗口名称。如图1中的窗口名称(MyApp)。 confMenu object 会议窗口上的按钮配置对象。如图3和图4中所示按钮。 表3 confMenu对象介绍 key value类型 描述 toolBar object 会议窗口上的按钮配置对象。如图3和图4中所示按钮。 titleBar object 会议窗口上的标题栏配置对象。如图2中的会议信息。 statusBar object 会议窗口左上角的状态栏配置对象。如图5中的按钮。 表4 toolBar对象子key介绍 key value类型 描述 button object[] 会议窗口上的按钮配置对象。如图3和图4中所示按钮和菜单。 customButton object[] 会议窗口上的第三方自定义按钮配置对象。如图3中的②③和图4中的①②。 表5 statusBar对象子key介绍 key value类型 描述 button object[] 会议窗口左上角的状态栏上的按钮配置对象。如图5中的按钮。 表6 titleBar对象介绍 key value类型 描述 confDetail object[] 如图2中的会议信息 表7 confDetail的对象key介绍 key value类型 描述 button object[] 会议信息窗口上的按钮配置对象。 表8 toolBar对象和confDetail对象中button对象子key介绍 key value类型 描述 buttonId string 按钮的唯一标识。具体buttonId与按钮的对应关系见表9 按钮buttonId介绍。 showAsAction string 是否显示。只有2个取值,“never”:不显示,“ifRoom”:显示。 isCustomizedClick bool 是否点击注入。true:点击注入,用户点击按钮时发送通知消息,SDK不做点击响应处理。 表9 customButton对象子key介绍 key value类型 描述 buttonId string 第三方自定义的按钮id。如“customMenu”。 title string 第三方自定义按钮的显示的名称。如“自定义按钮”。 buttonImg string 第三方自定义按钮的图标路径,使用绝对路径。如“to/path/image.svg”,支持svg/png等格式 注:需要UTF8编码。 buttonPos int 第三方自定义按钮的位置。0:工具栏更多菜单,1:底部工具栏,2:共享工具栏 表10 按钮buttonId介绍 按钮名称 按钮id 说明 麦克风 "microphone" 可隐藏 扬声器 "speaker" 可隐藏 摄像头 "camera" 可隐藏 邀请 "invite" 可隐藏,可注入 离开 "leave" 可隐藏,可注入 共享 "share" 可隐藏,可注入 与会者 "attendee" 可隐藏,可注入 反馈 "feedback" 可隐藏,可注入 标注 "annotation" 可隐藏(仅对win平台生效) 授予远程控制 "remote_control" 可隐藏(仅对win平台生效) 停止共享 "stop_share" 可隐藏 聊天 "chat" 可隐藏,可注入 字幕功能:开启字幕、字幕翻译 "subtitle" 可隐藏 安全 "security" 可隐藏 网络检测 "network_detection" 可隐藏 允许与会者解除静音 "allow_unmute" 可隐藏(仅对win平台生效) 打开/关闭双屏模式 "dual_screen" 可隐藏(仅对win平台生效) 录制 "record" 可隐藏 复制会议信息 "copy_conf_info" 可注入 与会者详情 "participant_detail" 可注入(mac无需注入) 复制观众链接 "copy_audience_conf_info" 可注入 按照上面的定义,完整的可定制的界面元素的json格式配置项如下: { "frame": { "name": "demo", "confMenu": { "titleBar": { "confDetail": { "button": [ { "buttonId": "copy_conf_info", "isCustomizedClick": true } ] } }, "statusBar": { "button": [ { "buttonId": "record", "showAsAction": "never" } ] }, "toolBar": { "customButton": [ { "buttonId": "customMenu", "title": "自定义按钮", "buttonPos": 1, "buttonImg": "imagePath", "subMenu": "" }, { "buttonId": "customMore", "title": "自定义更多", "buttonPos": 0, "buttonImg": "imagePath" }, { "buttonId": "customShare", "title": "自定义共享", "buttonPos": 2, "buttonImg": "imagePath" } ], "button": [ { "buttonId": "microphone", "showAsAction": "never" }, { "buttonId": "speaker", "showAsAction": "never" }, { "buttonId": "camera", "showAsAction": "never" }, { "buttonId": "invite", "showAsAction": "never", "isCustomizedClick": true }, { "buttonId": "leave", "showAsAction": "never", "isCustomizedClick": true }, { "buttonId": "attendee", "showAsAction": "never", "isCustomizedClick": true, "dialogPos": "center" }, { "buttonId": "share", "showAsAction": "never", "isCustomizedClick": true }, { "buttonId": "chat", "showAsAction": "never", "isCustomizedClick": true, "dialogPos": "center" }, { "buttonId": "annotation", "showAsAction": "never" }, { "buttonId": "stop_share", "showAsAction": "never" }, { "buttonId": "feedback", "showAsAction": "ifRoom", "isCustomizedClick": true }, { "buttonId": "dual_screen", "showAsAction": "never" }, { "buttonId": "remote_control", "showAsAction": "never" }, { "buttonId": "record", "showAsAction": "never" }, { "buttonId": "subtitle", "showAsAction": "never" }, { "buttonId": "security", "showAsAction": "never" }, { "buttonId": "network_detection", "showAsAction": "never" }, { "buttonId": "vote", "showAsAction": "never" } ] } } } } 由于函数config的uiConfig是string类型,需要把上述的json转换成字符串形式,请参考下面的示例代码。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** * UI界面配置 */ async setInvite(){ let param = { "frame": { "confMenu": { "toolBar": { "button": [{ "buttonId": "invite", "showAsAction": "ifRoom", "isCustomizedClick": true }] } } } } const apiService = new ApiService(); // json转换成string传入 let setResult = await apiService.config(JSON.stringify(param)); if(setResult.ret != 0){ window.electron.ipcRenderer.send("show-error-alert", "config error = " + setResult.ret); } } 父主题: 其他说明
  • 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /** * 退出登录 */ async Logout(){ const apiService = new ApiService(); let setResult = await apiService.logout(); if(setResult.ret === 0){ console.log("logoutresult:", setResult.logoutResult); window.sessionStorage.setItem("confListInfo", ""); this.props.history.push('/'); }else{ window.electron.ipcRenderer.send("show-error-alert", "logout error = " + setResult.ret); } }
  • 示例代码 1 2 3 4 5 6 7 8 9 10 /** * 退出sdk */ async exitSdk(){ const apiService = await new ApiService(); let setResult = await apiService.exit(); if(setResult != 0){ window.electron.ipcRenderer.send("show-error-alert", "exit error = " + setResult); } }
  • disableVoicePrompts: 接口描述 禁用会议提示音。 注意事项 该接口非必需调用,若不设置,则使用默认模式,不禁用会议提示音。 返回值只代表接口是否调用成功。 方法定义 1 - (HWMSDKERR)disableVoicePrompts:(HWMSDKVoicePromptsModel *)voicePrompts; 参数描述 表1 HWMSDKVoicePromptsModel说明 参数 是否必须 类型 描述 disableMutePrompt 是 BOOL 主持人静音与会者提示音 返回值 接口是否调用成功 示例代码 1 2 3 HWMSDKVoicePromptsModel * model = [[HWMSDKVoicePromptsModel alloc] init]; model.disableMutePrompt = YES; [[HWMBizSdk getBizOpenApi] disableVoicePrompts:model];
  • setNetworkModeWithNetworkInfo: 接口描述 如华为云会议的媒体节点下沉部署到企业,并且管理节点也是通过企业内的代理访问,需要将网络模式设置成“企业内外接入”。 企业内的App无法直接访问公网(即媒体节点下沉和管理节点代理下沉场景)的情况下才需要调用该接口。 注意事项 该接口非必需调用,若不设置,则使用默认模式。 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。 方法定义 1 - (HWMSDKERR)setNetworkModeWithNetworkInfo:(HWMSDKNetWorkModeInfoModel *)networkInfo; 参数描述 表1 HWMSDKNetWorkModeInfoModel说明 参数 是否必须 类型 描述 accessType 是 HWMNetworkAccessType 网络类型 表2 枚举HWMNetworkAccessType说明 值 描述 HWMSDKAccessTypeAuto 默认值 HWMSDKAccessTypeInner 内网接入 HWMSDKAccessTypeOuter 外网接入 返回值 无 示例代码 1 2 3 HWMSDKNetWorkModeInfoModel *networkInfo = [[HWMSDKNetWorkModeInfoModel alloc] init]; networkInfo.accessType = HWMSDKAccessTypeAuto; HWMSDKERR ret = [[HWMSDKNetworkService shareInstance] setNetworkModeWithNetworkInfo:networkInfo];
  • 70.16.5更新内容 新增周期会议相关接口,具体请见预约周期会议、编辑周期会议、取消周期会议、编辑周期子会议、取消周期子会议 入会参数PasswordJoinConfParam 新增 isStopConflictConf字段,能够强制结束和当前VMR会议资源冲突的会议,具体请见 表3 会议通知栏支持在来电时可配置是否显示通知,具体请见 表2 sso 登录接口调整,具体请见 loginBySSO 错误码整改,新版本错误码描述请见 表1 表1 新旧版本错误码对应关系 70.14.6 版本及之前的错误码 70.16.5 版本之后的错误码 新版本错误描述 -1 430100001 Common Error.:通用错误 500 430200001 unlogin.:未登录 12 430200002 Repeated login.:重复登录 10001 412100001 The message processing thread is not initialized.:消息处理线程未初始 10001 412100004 Memory allocation error.:分配内存错误 10001 412100005 XML parsing error.:XML解析出错 10001 412100009 Server error.:服务器异常 10001 412100014 Server redirect.:服务器返回重定向地址 10001 412100016 JSON parsing error.:JSON解析失败 10001 412200001 Internal error.:内部错误 10002 412100002 Parameter error.:参数错误 10002 412200002 Parameter error.:参数错误 10003 412100003 Timeout.:超时 10004 412100006 DNS resolution error.:DNS解析异常 10004 412100007 Request message failed.:请求消息异常 10004 412100013 Network error.:网络异常 10004 412200004 Network Error.:网络错误 201 430200003 SIP connection timeout.:SIP连接超 35 430400001 Password required to join the meeting.:加入会议需要密码 2 430200004 Invalid login password.:用于登录的密码参数不合法 420010001 430100003 SIP connection check failed.:SIP连接检查失败 10006 206010000 User name or password error.:用户名或密码错误 10006 206030000 The user does not exist.:系统中不存在该用户 10006 206010025 APPID verification failed.:APPID校验失败 10007 412100010 Account is locked.:账号被锁定 10007 206030015 The user is locked and will be locked in 60s.:用户已被锁定,请60秒后重试 父主题: 版本更新内容
  • 70.16.5更新内容 1.新增周期会议相关接口,接口详见预约周期会议,编辑周期会议,取消周期会议,编辑周期子会议,取消周期子会议 2.加入会议接口HwmJoinConfByIdInfo参数新增字段:isStopConflictConf强制结束和当前VMR会议资源冲突的会议,接口详见加入会议 3.Config接口配置自定义按钮,支持增加二级菜单,接口详见界面配置 4.新增错误码,详见常见错误码 5.Config接口菜单按钮新增 共享画面质量策略:清晰度优先、流畅度优先 "share_strategy"、共享时隐藏视频窗口"share_hide_video"、共享时包含电脑声音"share_audio"配置可隐藏。复制会议信息"copy_conf_info"按钮支持配置可注入,详见界面配置和HwmClickInjectBtn说明 6.会议角色HwmConfRole新增枚举值HWM_CONF_ROLE_AUDIENCE观众,HWM_CONF_ROLE_COHOST联席主持人和HWM_CONF_ROLE_WAITING等候室成员,详见HwmConfRole说明 父主题: 版本更新内容
共100000条