界面配置json说明
会议中的界面,界面上的部分元素是通过config接口进行自定义。可以自定义的界面元素如下:
- 会议窗口名称(仅针对windows平台)
会议开始后,在Windows任务栏上会生成一个会议的图标,鼠标指向该图标时会显示会议的缩略窗口,该窗口的名称可以自定义。
- 会议信息页面点击复制会议详情的内容
会议链接的域名前缀默认是https://bmeeting.huaweicloud.com/(如https://bmeeting.huaweicloud.com/#/j/982989574),如果入会Portal是第三方自己开发的,会议信息页面点击复制会议详情按钮后,会议详情内容需要用户自定义。
- 会控按钮
config接口参数描述
| 参数 | 是否必须 | 类型 | 描述 |
|---|---|---|---|
| uiConfig | 是 | string | Json对象字符串"{"frame":object}", object对象有格式要求,若不匹配则配置不生效。详细规则见下表2、表3、表4、表5。 |
| key | value类型 | 描述 |
|---|---|---|
| name | string | 会议窗口名称。如图1中的窗口名称(MyApp)。 |
| confMenu | object |
| key | value类型 | 描述 |
|---|---|---|
| toolBar | object | |
| titleBar | object | 会议窗口上的标题栏配置对象。如图2中的会议信息。 |
| statusBar | object | 会议窗口左上角的状态栏配置对象。如图5中的按钮。 |
| key | value类型 | 描述 |
|---|---|---|
| button | object[] | |
| customButton | object[] |
| key | value类型 | 描述 |
|---|---|---|
| button | object[] | 会议窗口左上角的状态栏上的按钮配置对象。如图5中的按钮。 |
| key | value类型 | 描述 |
|---|---|---|
| confDetail | object[] | 如图2中的会议信息 |
| key | value类型 | 描述 |
|---|---|---|
| button | object[] | 会议信息窗口上的按钮配置对象。 |
| key | value类型 | 描述 |
|---|---|---|
| buttonId | string | 按钮的唯一标识。具体buttonId与按钮的对应关系见表9 按钮buttonId介绍。 |
| showAsAction | string | 是否显示。只有2个取值,“never”:不显示,“ifRoom”:显示。 |
| isCustomizedClick | bool | 是否点击注入。true:点击注入,用户点击按钮时发送通知消息,SDK不做点击响应处理。 |
| key | value类型 | 描述 |
|---|---|---|
| buttonId | string | 第三方自定义的按钮id。如“customMenu”。 |
| title | string | 第三方自定义按钮的显示的名称。如“自定义按钮”。 |
| buttonImg | string | 第三方自定义按钮的图标路径,使用绝对路径。如“to/path/image.svg”,支持svg/png等格式 注:需要UTF8编码。 |
| buttonPos | int | 第三方自定义按钮的位置。0:工具栏更多菜单,1:底部工具栏,2:共享工具栏 |
| 按钮名称 | 按钮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); } } |




