界面配置
Config
接口描述
Windows SDK中已经提供了会议中的界面,界面上的部分元素是可以自定义的。可以自定义的界面元素如下:
- 会议窗口名称
 
会议开始后,在Windows任务栏上会生成一个会议的图标,鼠标指向该图标时会显示会议的缩略窗口,该窗口的名称可以自定义。
 
   会议窗口的图标,可以替换HwmSdk\sdkResources\nativeimg目录下的video.ico图标文件。
- 会议信息及会议链接前缀
 
会议链接的域名前缀默认是https://bmeeting.huaweicloud.com/(如https://bmeeting.huaweicloud.com/#/j/982989574),如果入会Portal是第三方自己开发的,这个前缀需要自定义。
整个会议信息也可以自定义显示或者隐藏。
- 来电窗口
 
会议来电窗口默认在收到来电时弹出,可配置成隐藏,在收到来电通知时调用会议来电应答接口来应答:

- 会控按钮
 

- 自定义会议信息窗口
 
注意事项
- 只有需要更改会议界面默认显示样式时,才需要调用该接口,若默认样式已满足要求,可以不调用该接口。
 - 该接口为异步接口,返回值只代表接口是否调用成功,实际业务处理结果在对应的回调函数中返回。
 
方法定义
        1
         | 
       
        HWM_SDK_AGENT_API hwmsdk::HwmErrCode Config(char uiConfig[HWM_MAX_CONFIG_LEN]);  | 
      
 
  Config接口不能连续调用,如果需要调用两次Config接口,一定要等第一次OnConfigResult回调函数处理完成后,再调用第二次Config。
回调函数
       1
        | 
      
       virtual void OnConfigResult(hwmsdk::HwmErrCode ret, const char* reason) {};  | 
     
参数描述
| 
       参数  | 
     
       是否必须  | 
     
       类型  | 
     
       描述  | 
    
|---|---|---|---|
| 
       uiConfig  | 
     
       是  | 
     
       char[]  | 
     
       Json对象字符串"{"frame":object}", object对象有格式要求,若不匹配则配置不生效。详细规则见以下表格。  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       name  | 
     
       string  | 
     
       会议窗口名称。如图1中的窗口名称(MyApp)。  | 
    
| 
       linkPrefix  | 
     
       string  | 
     
       会议窗口中分享的会议链接前缀。如图2中复制出来的会议链接。  | 
    
| 
       confMenu  | 
     
       object  | 
     |
| 
       isUseExternalConfInfoWnd  | 
     
       bool  | 
     
       会议窗口中自定义分享会议信息框开关。如图6中的窗口。"true" :开启 ;"false" :关闭,默认 "false" 关闭。  | 
    
| 
       isUseExternalAddressBook  | 
     
       bool  | 
     
       会议窗口中使用外部通讯录头像信息的开关。"true": 使用 ;"false": 不使用,默认 "false"不使用  | 
    
| 
       isHideConfIncomingWindow  | 
     
       bool  | 
     
       是否隐藏会议来电弹窗。"true":隐藏,会议来电不弹窗;"false"不隐藏,正常弹窗,默认不隐藏,正常弹窗。  | 
    
| 
       defaultWindowMode  | 
     
       int  | 
     
       会议窗口模式。0 通常;1最大化;2全屏。默认通常。  | 
    
| 
       isCloseSideWindow  | 
     
       bool  | 
     
       是否关闭侧边窗口: "false": 不关闭;"true":关闭。默认不关闭。  | 
    
| 
       flowControlInitShowPos  | 
     
       int  | 
     
       共享工具栏初始化位置:0:顶部 1:底部。默认显示顶部。  | 
    
| 
       defaultWindowMonitor  | 
     
       int  | 
     
       会议窗口入会时默认创建在哪个显示器:0主显示器,1副显示器。默认在主显示器。  | 
    
| 
       isHideTransferHostBeforeLeave  | 
     
       bool  | 
     
       是否隐藏离会时指定主持人功能按钮:"false": 不隐藏;"true":隐藏。默认不隐藏。  | 
    
| 
       isUploadKeyLog  | 
     
       bool  | 
     
       是否自动收集日志的开关。"true":收集;"false": 不收集。默认"true"收集。  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       toolBar  | 
     
       object  | 
     |
| 
       titleBar  | 
     
       object  | 
     
       会议窗口上的标题栏配置对象。如图2中的会议信息。  | 
    
| 
       statusBar  | 
     
       object  | 
     
       会议窗口左上角的状态栏配置对象。如图8中的按钮  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       button  | 
     
       object[]  | 
     |
| 
       customButton  | 
     
       object[]  | 
     
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       button  | 
     
       object[]  | 
     
       会议窗口左上角的状态栏上的按钮配置对象。如图8中的按钮。  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       id  | 
     
       string  | 
     
       按钮的唯一标识。具体id与按钮的对应关系见表9。  | 
    
| 
       showAsAction  | 
     
       string  | 
     
       是否显示。只有2个取值,“never”:不显示,“ifRoom”:显示。  | 
    
| 
       isCustomizedClick  | 
     
       bool  | 
     
       是否点击注入。true:点击注入,用户点击按钮时发送通知消息,SDK不做点击响应处理。  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       id  | 
     
       string  | 
     
       第三方自定义的按钮id。如“customMenu”。  | 
    
| 
       title  | 
     
       string  | 
     
       第三方自定义按钮的显示的名称。如“自定义按钮”。  | 
    
| 
       buttonImg  | 
     
       string  | 
     
       第三方自定义按钮的图标路径,使用绝对路径。如“to/path/image.svg”,支持svg/png等格式 注:需要UTF8编码。  | 
    
| 
       buttonPos  | 
     
       int  | 
     
       第三方自定义按钮的位置。0:工具栏更多菜单,1:底部工具栏,2:共享工具栏  | 
    
| 
       subMenu  | 
     
       object[]  | 
     
       第三方自定义按钮的子菜单项。*(最多配置到三级:深入两次)  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       id  | 
     
       string  | 
     
       第三方自定义的按钮id。如“customMenu”。  | 
    
| 
       title  | 
     
       string  | 
     
       第三方自定义按钮的显示的名称。如“自定义按钮”。  | 
    
| 
       buttonImg  | 
     
       string  | 
     
       第三方自定义按钮的图标路径,使用绝对路径。如“to/path/image.svg”,支持svg/png等格式 注:需要UTF8编码。  | 
    
| 
       subMenu  | 
     
       object[]  | 
     
       第三方自定义按钮的子菜单项。  | 
    
| 
       按钮名称  | 
     
       按钮id  | 
     
       说明  | 
    
|---|---|---|
| 
       麦克风  | 
     
       "microphone"  | 
     
       可隐藏  | 
    
| 
       扬声器  | 
     
       "speaker"  | 
     
       可隐藏  | 
    
| 
       摄像头  | 
     
       "camera"  | 
     
       可隐藏  | 
    
| 
       邀请  | 
     
       "invite"  | 
     
       可隐藏,可注入  | 
    
| 
       离开  | 
     
       "leave"  | 
     
       可隐藏,可注入  | 
    
| 
       共享  | 
     
       "share"  | 
     
       可隐藏,可注入  | 
    
| 
       与会者  | 
     
       "attendee"  | 
     
       可隐藏,可注入  | 
    
| 
       呼叫其它号码  | 
     
       "call_other_number"  | 
     
       可隐藏,可注入  | 
    
| 
       反馈  | 
     
       "feedback"  | 
     
       可隐藏,可注入  | 
    
| 
       举手/手放下  | 
     
       "hands_up"  | 
     
       可隐藏  | 
    
| 
       申请主持人/释放主持人  | 
     
       "change_chairman_auth"  | 
     
       可隐藏  | 
    
| 
       改名  | 
     
       "rename"  | 
     
       可隐藏  | 
    
| 
       锁定会议  | 
     
       "lock_conf"  | 
     
       可隐藏  | 
    
| 
       标注  | 
     
       "annotation"  | 
     
       可隐藏  | 
    
| 
       授予远程控制  | 
     
       "remote_control"  | 
     
       可隐藏  | 
    
| 
       停止共享  | 
     
       "stop_share"  | 
     
       可隐藏  | 
    
| 
       聊天  | 
     
       "chat"  | 
     
       可隐藏,可注入  | 
    
| 
       导出与会者  | 
     
       "export_participants"  | 
     
       可隐藏  | 
    
| 
       入会范围  | 
     
       "attendee_access_control"  | 
     
       可隐藏  | 
    
| 
       允许共享  | 
     
       "lock_Share"  | 
     
       可隐藏  | 
    
| 
       字幕功能:开启字幕、字幕翻译  | 
     
       "subtitle"  | 
     
       可隐藏  | 
    
| 
       安全  | 
     
       "security"  | 
     
       可隐藏  | 
    
| 
       邀请共享、取消共享  | 
     
       "invite_or_cancel_share"  | 
     
       可隐藏  | 
    
| 
       隐藏无视频与会者  | 
     
       "hide_no_video_view"  | 
     
       可隐藏  | 
    
| 
       视频画面智能排序  | 
     
       "video_smart_sorting"  | 
     
       可隐藏  | 
    
| 
       虚拟背景  | 
     
       "virtual_background"  | 
     
       可隐藏  | 
    
| 
       网络检测  | 
     
       "network_detection"  | 
     
       可隐藏  | 
    
| 
       全场静音/取消全场静音  | 
     
       "mute_all"  | 
     
       可隐藏  | 
    
| 
       允许与会者解除静音  | 
     
       "allow_unmute"  | 
     
       可隐藏  | 
    
| 
       打开/关闭双屏模式  | 
     
       "dual_screen"  | 
     
       可隐藏  | 
    
| 
       录制  | 
     
       "record"  | 
     
       可隐藏  | 
    
| 
       共享画面质量策略:清晰度优先、流畅度优先  | 
     
       "share_strategy"  | 
     
       可隐藏  | 
    
| 
       共享时隐藏视频窗口  | 
     
       "share_hide_video"  | 
     
       可隐藏  | 
    
| 
       共享时包含电脑声音  | 
     
       "share_audio"  | 
     
       可隐藏  | 
    
| 
       复制会议信息  | 
     
       "copy_conf_info"  | 
     
       可注入  | 
    
| 
       全员移入等候室  | 
     
       "moveall_to_waitingroom"  | 
     
       可隐藏  | 
    
| 
       与会者详情  | 
     
       "participant_detail"  | 
     
       可注入,见图9  | 
    
| 
       复制观众链接  | 
     
       "copy_audience_conf_info"  | 
     
       可注入  | 
    
| 
       全部呼叫  | 
     
       "call_all"  | 
     
       可隐藏,可注入  | 
    
| 
       呼叫  | 
     
       "recall"  | 
     
       可注入  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       confDetail  | 
     
       object[]  | 
     
       如图2中的会议信息。showAsAction设置成never后,不显示会议信息。  | 
    
| 
       key  | 
     
       value类型  | 
     
       描述  | 
    
|---|---|---|
| 
       showAsAction  | 
     
       string  | 
     
       是否显示。只有2个取值,“never”:不显示,“ifRoom”:显示。  | 
    
| 
       button  | 
     
       object[]  | 
     
       会议信息窗口上的按钮配置对象。  | 
    
{
    "frame":{
        "name":"MyApp",
        "linkPrefix":"https://www.demo.com/",
        "isUseExternalConfInfoWnd":false,
        "isUseExternalAddressBook":false,
        "confMenu":{
            "titleBar":{
                 "confDetail":{
                      "showAsAction":"never",
                 "button":[
                     {
                        "id":"copy_conf_info",
                        "isCustomizedClick":false
                     }
                  ]
            },
            "statusBar": {        
                  "button": [          
                      {            
                          "id": "record",            
                          "showAsAction": "never"          
                      }       
                    ]      
             },
            "toolBar":{
                "customButton": [
                   {
		        "id": "customMenu",
			"title": "自定义按钮",
                        "buttonImg": "D:/demoResource/icon-whiteboard.svg",
                        "buttonPos": 1
		    }],
                "button":[
                    {
                        "id":"microphone",
                        "showAsAction":"ifRoom"
                    },
                    {
                        "id":"speaker",
                        "showAsAction":"ifRoom"
                    },
                    {
                        "id":"camera",
                        "showAsAction":"ifRoom"
                    },
                    {
                        "id":"invite",
                        "showAsAction":"ifRoom",
                        "isCustomizedClick":true
                    },
                   {
                        "id":"leave",
                        "showAsAction":"ifRoom",
                        "isCustomizedClick":true
                    },
                   {
                        "id":"share",
                        "showAsAction":"never",
                        "isCustomizedClick":true
                    },
                   {
                        "id":"attendee",
                        "showAsAction":"ifRoom",
                        "isCustomizedClick":true
                    },
                   {
                        "id":"call_other_number",
                        "showAsAction":"ifRoom",
                        "isCustomizedClick":true
                    },
                   {
                        "id":"feedback",
                        "showAsAction":"never"
                    },
                   {
                        "id":"hands_up",
                        "showAsAction":"never"
                    },
                   {
                        "id":"change_chairman_auth",
                        "showAsAction":"never",
                        "isCustomizedClick":false
                    },
                   {
                        "id":"rename",
                        "showAsAction":"never"
                    },
                   {
                        "id":"lock_conf",
                        "showAsAction":"never"
                    },
                   {
                        "id":"annotation",
                        "showAsAction":"never"
                    },
                   {
                        "id":"remote_control",
                        "showAsAction":"never"
                    },
                   {
                        "id":"stop_share",
                        "showAsAction":"never"
                    },
                   {
                        "id":"chat",
                        "showAsAction":"ifRoom",
                        "isCustomizedClick":true
                    },
                   {
                        "id":"export_participants",
                        "showAsAction":"never"
                    },
                   {
                        "id":"attendee_access_control",
                        "showAsAction":"never"
                    },
                   {
                        "id":"network_detection",
                        "showAsAction":"never"
                    },
                   {
                        "id":"mute_all",
                        "showAsAction":"never"
                    },
                   {
                        "id":"allow_unmute",
                        "showAsAction":"never"
                    },
                   {
                        "id":"dual_screen",
                        "showAsAction":"never"
                    },
                   {
                        "id":"record",
                        "showAsAction":"never"
                    },
                   {
                        "id":"vote",
                        "showAsAction":"never"
                    }
                ]
            }
        }
    }
}
 
 
  由于函数Config的uiConfig是字符数组,需要把上述的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 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  | 
      
       /** * UI界面配置 */ int hwmSDKConfigUI::hwmSDKStartUIConfigTotal() { CString start = "{\"frame\":{"; //会议窗口名称 CString name = "\"name\":\"MyApp\""; //会议链接前缀 CString linkPrefix = "\"linkPrefix\":\"https://www.demo.com/\""; //自定义外部会议信息框开关 CString isUseExternalConfInfoWnd = "\"isUseExternalConfInfoWnd\":\"false\""; //外部通讯录开关 CString isUseExternalAddressBook = "\"isUseExternalAddressBook\":\"false\""; CString menuStart = "\"confMenu\":{"; //会议信息 CString titleBar = "\"titleBar\":{\"confDetail\":{\"showAsAction\":\"ifRoom\"}}"; CString toolBarStart = "\"toolBar\":{"; //自定义按钮 CString customMenuStart = "\"customButton\":["; CString customMenu1 = "{\"id\":\"customMenu1\",\"title\":\"自定义按钮1\"}"; CString customMenu2 = "{\"id\":\"customMenu2\",\"title\":\"自定义按钮2\"}"; CString customMenuEnd = "]"; //会控按钮 CString buttonStart = "\"button\":["; CString inviateButton = "{\"id\":\"invite\",\"showAsAction\":\"ifRoom\",\"isCustomizedClick\":true}"; CString leaveButton = "{\"id\":\"leave\",\"showAsAction\":\"ifRoom\",\"isCustomizedClick\":true}"; CString callButton = "{\"id\":\"call_other_number\",\"showAsAction\":\"ifRoom\",\"isCustomizedClick\":true}"; CString attendeeButton = "{\"id\":\"attendee\",\"showAsAction\":\"ifRoom\",\"isCustomizedClick\":true}"; CString shareButton = "{\"id\":\"share\",\"showAsAction\":\"ifRoom\",\"isCustomizedClick\":true}"; CString annotationButton = "{\"id\":\"annotation\",\"showAsAction\":\"never\"}"; CString stopshareButton = "{\"id\":\"stop_share\",\"showAsAction\":\"never\"}"; CString feedbackButton = "{\"id\":\"feedback\",\"showAsAction\":\"never\"}"; CString remotecontrolButton = "{\"id\":\"remote_control\",\"showAsAction\":\"never\"}"; CString handsupButton = "{\"id\":\"hands_up\",\"showAsAction\":\"never\"}"; CString changechairmanButton = "{\"id\":\"change_chairman_auth\",\"showAsAction\":\"never\"}"; CString renameButton = "{\"id\":\"rename\",\"showAsAction\":\"never\"}"; CString lockconfButton = "{ \"id\":\"lock_conf\",\"showAsAction\":\"never\"}" CString chatButton = "{\"id\":\"chat\",\"showAsAction\":\"never\"}"; CString exportButton = "{\"id\":\"export_participants\",\"showAsAction\":\"never\"}"; CString accessButton = "{\"id\":\"attendee_access_control\",\"showAsAction\":\"never\"}"; CString buttonEnd = "]"; CString toolBarEnd = "}"; CString menuEnd = "}"; CString end = "}}"; CString customMenu = customMenuStart + customMenu1 + "," + customMenu2 + customMenuEnd; CString button = buttonStart + inviateButton + "," + leaveButton + "," \ + callButton + "," + attendeeButton + "," + shareButton + "," + annotationButton + "," + stopshareButton + ","\ + feedbackButton + "," + remotecontrolButton + "," + handsupButton + "," + changechairmanButton + "," + renameButton + ","\ + lockconfButton + "," + chatButton + "," + exportButton + "," + accessButton + buttonEnd; CString menu = menuStart + "," + titleBar + toolBarStart + customMenu + "," + button + toolBarEnd + menuEnd; CString config = start + name + "," + linkPrefix + "," + isUseExternalConfInfoWnd + "," + isUseExternalAddressBook + "," + menu + end; //转换成UTF8格式 string uiConfig = CTools::UNICODE2UTF(config); int ret = hwmsdkagent::Config(uiConfig); return ret; }  | 
     
    
      





