更新时间:2024-10-28 GMT+08:00
分享

界面配置json说明

会议中的界面,界面上的部分元素是通过config接口进行自定义。可以自定义的界面元素如下:

  • 会议窗口名称(仅针对windows平台)

会议开始后,在Windows任务栏上会生成一个会议的图标,鼠标指向该图标时会显示会议的缩略窗口,该窗口的名称可以自定义。

图1 会议窗口名称
  • 会议信息页面点击复制会议详情的内容

会议链接的域名前缀默认是https://bmeeting.huaweicloud.com/(如https://bmeeting.huaweicloud.com/#/j/982989574),如果入会Portal是第三方自己开发的,会议信息页面点击复制会议详情按钮后,会议详情内容需要用户自定义。

图2 会议信息
  • 会控按钮
  1. 删除或者修改SDK中自带的会控按。具体可以删除和修改的按钮见按钮ID定义表
  2. 自定义新增按钮。具体用例见自定义会控按钮
图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);
    }
}

相关文档