@tencentcloud/sdk-mcp 1.7.1 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +13 -5
- package/knowledge/bm25.js +20 -11
- package/knowledge/search/generic-rerank.js +123 -0
- package/knowledge/search/search-pass.js +8 -1
- package/package.json +1 -1
- package/resource/_schema/query-normalization.yaml +6 -0
- package/resource/index/manifest.json +1 -1
- package/resource/integration/chat/preset/android/integration.md +33 -29
- package/resource/integration/chat/preset/flutter/integration.md +93 -92
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +1 -1
- package/resource/knowledge/chat/best-practice/common/web-sdk-log-level.md +76 -0
- package/resource/knowledge/chat/best-practice/miniprogram/desktop-wechat-miniprogram-error.md +79 -0
- package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +1 -1
- package/resource/knowledge/chat/preset/android-view/integration.md +37 -29
- package/resource/knowledge/push/config/android/fcm.md +2 -6
- package/resource/knowledge/push/integration/android.md +777 -425
- package/resource/knowledge/push/integration/donut.md +54 -71
- package/resource/knowledge/push/integration/flutter.md +194 -63
- package/resource/knowledge/push/integration/harmonyos.md +7 -2
- package/resource/knowledge/push/integration/ios.md +23 -93
- package/resource/knowledge/push/integration/react-native.md +2 -1
- package/resource/knowledge/push/integration/uni-app.md +28 -106
- package/resource/knowledge/push/integration/unity.md +2 -1
- package/resource/knowledge/push/integration/unreal-engine.md +2 -1
- package/resource/knowledge/roomkit/best-practice/vue/screen-share-auto-stop-on-leave.md +62 -0
- package/resource/knowledge/roomkit/core-sdk/react/network-proxy.md +84 -0
- package/resource/knowledge/roomkit/core-sdk/vue/network-proxy.md +84 -0
- package/resource/knowledge/roomkit/core-sdk/vue/recording.md +245 -0
- package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +196 -0
- package/resource/knowledge/roomkit/faq/error-code.md +103 -0
- package/resource/knowledge/roomkit/preset/harmonyos/integration.md +461 -0
- package/resource/knowledge/roomkit/preset/react/features/network-proxy.md +80 -0
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +581 -0
- package/resource/knowledge/roomkit/preset/vue/features/ai-caption-translation.md +69 -0
- package/resource/knowledge/roomkit/preset/vue/features/ai-denoiser.md +67 -0
- package/resource/knowledge/roomkit/preset/vue/features/network-proxy.md +80 -0
- package/resource/knowledge/roomkit/preset/vue/features/recording.md +85 -0
- package/resource/knowledge/roomkit/preset/vue/features/whiteboard-annotation.md +86 -0
- package/server.js +1 -1
- package/tools/common/search_trtc_knowledge.js +2 -0
- package/utils/preflight-route.js +18 -6
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
AI 降噪源自腾讯天籁实验室的 AI 算法,能够智能检测和去除混合在传播信号中的噪声干扰,从而显著提高语音的质量,提升声音的清晰度,改善用户听感。AI 降噪特性在 TUIRoomKit 中的应用,可以让用户在办公室、网吧、商场、户外等各种环境下都能够获得清晰、稳定的声音体验。
|
|
2
|
+
|
|
3
|
+
## 在线体验
|
|
4
|
+
|
|
5
|
+
您也可以进入我们的 [实时音视频体验馆](https://rtcube.cloud.tencent.com/component/experience-center/index.html#/detail),在线体验 AI 降噪能力带来的优秀声音效果。
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
## 开通 AI 降噪
|
|
10
|
+
|
|
11
|
+
TUIRoomKit 提供了非常便捷的开通流程,您只需要两个步骤即可体验:
|
|
12
|
+
1. 进入 实时音视频控制台 ,选择您需要开通的应用。
|
|
13
|
+
|
|
14
|
+
2. 进入增值功能,打开 AI 降噪开关即可。
|
|
15
|
+
|
|
16
|
+
然后您就可以在您的应用上愉快的体验 TUIRoomKit 更好的降噪效果了!
|
|
17
|
+
|
|
18
|
+
## Web 端资源配置
|
|
19
|
+
|
|
20
|
+
TUIRoomKit 在用户进房后会自动开启 AI 降噪,前提是您已完成以下 assets 资源配置:
|
|
21
|
+
1. 将 `node_modules/trtc-sdk-v5/plugins/ai-denoiser` 目录下的 `denoiser-wasm.js` 文件发布至 CDN 或静态资源服务器中,并确保文件处于同一个公共路径下。详细说明请参见 [AI 降噪插件文档](https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/zh-cn/tutorial-35-advanced-ai-denoiser.html)。
|
|
22
|
+
|
|
23
|
+
2. 在进房前,调用以下接口将上述公共路径传入 TUIRoomKit:
|
|
24
|
+
|
|
25
|
+
【含 UI 集成】
|
|
26
|
+
|
|
27
|
+
【Vue3】
|
|
28
|
+
``` typescript
|
|
29
|
+
import { conference } from '@tencentcloud/roomkit-web-vue3';
|
|
30
|
+
|
|
31
|
+
conference.callExperimentalAPI({
|
|
32
|
+
api: 'setRtcAssetsPath',
|
|
33
|
+
params: { assetsPath: 'XXXXX/assets/' }, // denoiser-wasm.js 文件所在目录路径
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
【React】
|
|
38
|
+
``` typescript
|
|
39
|
+
import { conference } from '@tencentcloud/roomkit-web-react';
|
|
40
|
+
|
|
41
|
+
conference.callExperimentalAPI({
|
|
42
|
+
api: 'setRtcAssetsPath',
|
|
43
|
+
params: { assetsPath: 'XXXXX/assets/' }, // denoiser-wasm.js 文件所在目录路径
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
【无 UI 集成】
|
|
48
|
+
|
|
49
|
+
【Vue3】
|
|
50
|
+
``` typescript
|
|
51
|
+
import { callExperimentalAPI } from 'tuikit-atomicx-vue3';
|
|
52
|
+
|
|
53
|
+
callExperimentalAPI({
|
|
54
|
+
api: 'setRtcAssetsPath',
|
|
55
|
+
params: { assetsPath: 'XXXXX/assets/' }, // denoiser-wasm.js 文件所在目录路径
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
【React】
|
|
60
|
+
``` typescript
|
|
61
|
+
import { callExperimentalAPI } from 'tuikit-atomicx-react';
|
|
62
|
+
|
|
63
|
+
callExperimentalAPI({
|
|
64
|
+
api: 'setRtcAssetsPath',
|
|
65
|
+
params: { assetsPath: 'XXXXX/assets/' }, // denoiser-wasm.js 文件所在目录路径
|
|
66
|
+
});
|
|
67
|
+
```
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
视频会议 SDK 基于腾讯云即时通信 IM 与实时音视频 TRTC 提供服务,支持在内网 / 防火墙环境下统一配置 IM 与 TRTC 代理,适用于私有化部署、企业内网隔离等无法直连腾讯云服务的场景。
|
|
2
|
+
|
|
3
|
+
## 代理架构
|
|
4
|
+
|
|
5
|
+
|代理服务器|代理链路|
|
|
6
|
+
|---------|---------|
|
|
7
|
+
|IM 代理|代理 IM 登录、消息收发等信令通道(WebSocket),以及聊天图片、文件等资源的上传与下载。|
|
|
8
|
+
|TRTC WebSocket 代理(如 Nginx)|代理 TRTC 进房、控制等信令通道(WebSocket),负责房间管理与用户状态同步。|
|
|
9
|
+
|TRTC TURN Server|中继转发 TRTC 音视频媒体流。|
|
|
10
|
+
|
|
11
|
+
> **说明:**
|
|
12
|
+
> 代理服务器(IM 代理、Nginx、TURN)需自行部署,搭建方式参见 [TRTC Web SDK 应对防火墙受限](https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/zh-cn/tutorial-34-advanced-proxy.html)。
|
|
13
|
+
>
|
|
14
|
+
|
|
15
|
+
## 接口与参数
|
|
16
|
+
|
|
17
|
+
视频会议 SDK 支持用户在调用 `login()` 之前通过 `callExperimentalAPI` 接口统一配置内网代理:
|
|
18
|
+
``` typescript
|
|
19
|
+
callExperimentalAPI({
|
|
20
|
+
api: 'setNetworkProxy',
|
|
21
|
+
params: {
|
|
22
|
+
im?: { /* IM 代理参数 */ },
|
|
23
|
+
rtc?: { /* TRTC 代理参数 */ },
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### IM 代理参数
|
|
29
|
+
|
|
30
|
+
|参数|类型|说明|
|
|
31
|
+
|---------|---------|---------|
|
|
32
|
+
|`proxyServer`|String|IM 信令 WebSocket 代理地址。|
|
|
33
|
+
|`fileUploadProxy`|String|IM 文件上传代理地址。|
|
|
34
|
+
|`fileDownloadProxy`|String|IM 文件下载代理地址。|
|
|
35
|
+
|
|
36
|
+
### TRTC 代理参数
|
|
37
|
+
|
|
38
|
+
|参数|类型|说明|
|
|
39
|
+
|---------|---------|---------|
|
|
40
|
+
|`websocketProxy`|String|TRTC 信令 WebSocket 代理地址,如 `wss://proxy.example.com/ws/`。|
|
|
41
|
+
|`turnServer`|Array|TURN 服务器列表,每项含 `url` / `username` / `credential`。|
|
|
42
|
+
|`iceTransportPolicy`|`'relay' \| 'all'`|客户端 ICE 传输策略;内网环境建议设为 `'relay'`,强制连接 TURN server。|
|
|
43
|
+
|
|
44
|
+
## 示例代码
|
|
45
|
+
|
|
46
|
+
``` typescript
|
|
47
|
+
import { conference } from '@tencentcloud/roomkit-web-vue3';
|
|
48
|
+
|
|
49
|
+
conference.callExperimentalAPI({
|
|
50
|
+
api: 'setNetworkProxy',
|
|
51
|
+
params: {
|
|
52
|
+
im: {
|
|
53
|
+
proxyServer: 'wss://proxy.example.com:8080',
|
|
54
|
+
fileUploadProxy: 'https://proxy.example.com:8080',
|
|
55
|
+
fileDownloadProxy: 'https://proxy.example.com:8080',
|
|
56
|
+
},
|
|
57
|
+
rtc: {
|
|
58
|
+
websocketProxy: 'wss://proxy.example.com/ws/',
|
|
59
|
+
turnServer: [
|
|
60
|
+
{ url: '14.3.3.3:3478', username: 'turn', credential: 'turn' },
|
|
61
|
+
],
|
|
62
|
+
iceTransportPolicy: 'relay',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
await conference.login({ sdkAppId, userId, userSig });
|
|
68
|
+
await conference.createAndJoinRoom({ roomId });
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 常见问题
|
|
72
|
+
|
|
73
|
+
### 用户在外网正常进会,但是内网无法进会?
|
|
74
|
+
|
|
75
|
+
检查是否在 `login()` 前调用了 `setNetworkProxy`;若已配置仍失败,排查 TURN 端口与代理服务器出站白名单。
|
|
76
|
+
|
|
77
|
+
### 用户能进会但看不到远端画面、听不到远端声音?
|
|
78
|
+
|
|
79
|
+
确认 `turnServer` 可达,内网环境将 `iceTransportPolicy` 设为 `'relay'`。
|
|
80
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
本文档介绍视频会议 SDK 云端录制功能。**视频会议 SDK 已默认集成房间合流录制能力**,房主或管理员可通过客户端接口和含 UI 集成组件一键发起录制,**无需客户自建后端**调用 TRTC 云 API。若默认录制能力不满足您的业务需求,可参考本文 与 TRTC 云端录制的区别,并参阅 [TRTC 云端录制](https://cloud.tencent.com/document/product/647/76497) 自行接入。
|
|
2
|
+
|
|
3
|
+
> **说明:**
|
|
4
|
+
> 视频会议 SDK 云端录制基于 [TRTC 云端录制](https://cloud.tencent.com/document/product/647/76497) 能力实现,并针对会议场景预设了典型合流录制参数,帮助您更简单、快速地完成录制配置。
|
|
5
|
+
>
|
|
6
|
+
|
|
7
|
+
## 前提条件
|
|
8
|
+
|
|
9
|
+
使用视频会议 SDK 云端录制前,请确认已完成以下步骤:
|
|
10
|
+
- 已购买含云录制能力的视频会议 SDK 套餐并获取 SDKAppID 信息。
|
|
11
|
+
|
|
12
|
+
- 开通录制文件存储服务:录制文件支持存储至 [云点播(VOD)](https://console.cloud.tencent.com/vod) 或 [对象存储(COS)](https://console.cloud.tencent.com/cos),请在对应控制台完成开通并记录存储信息。
|
|
13
|
+
|
|
14
|
+
- [提交工单](https://console.cloud.tencent.com/workorder/category),选择**实时音视频**产品,说明需要为视频会议 SDK 配置云端录制存储信息(VOD 或 COS)。
|
|
15
|
+
|
|
16
|
+
## 功能说明
|
|
17
|
+
|
|
18
|
+
视频会议 SDK 提供**托管式云端录制**方案:服务端负责鉴权与录制任务管理,客户只需配置录制文件存储地址,即可在会中由房主或管理员通过客户端一键发起录制。
|
|
19
|
+
|
|
20
|
+
## 录制效果
|
|
21
|
+
|
|
22
|
+
视频会议 SDK 默认采用**合流录制**模式,将房间内发布的音视频流混合为一份完整的录制文件。录制内容包括:
|
|
23
|
+
- **音频**:房间内所有参会者的声音。
|
|
24
|
+
|
|
25
|
+
- **视频**:所有开启摄像头或屏幕分享的画面。
|
|
26
|
+
|
|
27
|
+
录制布局会随会中状态**自动切换**,切换过程中**不重启录制任务**:
|
|
28
|
+
|
|
29
|
+
|会中状态|混流布局|画面数量上限|
|
|
30
|
+
|---------|---------|---------|
|
|
31
|
+
|无屏幕分享 / 白板|[九宫格布局](https://cloud.tencent.com/document/product/647/76497#nine)|最多 **25** 路视频画面|
|
|
32
|
+
|有屏幕分享 / 白板|[屏幕分享布局](https://cloud.tencent.com/document/product/647/76497#share)(共享为主画面)|最多 **1** 路屏幕分享/白板 + **16** 路视频画面|
|
|
33
|
+
|仅音频|-|—|
|
|
34
|
+
|
|
35
|
+
## 会后文件获取
|
|
36
|
+
|
|
37
|
+
录制结束后,文件将存储在您配置的 VOD 或 COS 中。您可以通过以下方式获取录制文件:
|
|
38
|
+
- 前往 [实时音视频控制台 > 应用管理](https://console.cloud.tencent.com/trtc/app),在 **录制管理 > 录制文件管理** 中查看存储于云点播(VOD)的录制文件。
|
|
39
|
+
|
|
40
|
+
- 若存储在对象存储(COS),请前往 [对象存储(COS)控制台](https://console.cloud.tencent.com/cos) 查看。
|
|
41
|
+
|
|
42
|
+
- 详细的文件查找、接收、删除与回放操作,请参考 [录制文件管理](https://cloud.tencent.com/document/product/647/76497#file)。
|
|
43
|
+
|
|
44
|
+
## 与 TRTC 云端录制的区别
|
|
45
|
+
|
|
46
|
+
视频会议 SDK 房间录制与 TRTC 云端录制底层均基于 TRTC 云端录制服务。SDK 已针对会议场景预设合流录制参数;若您需要**指定订阅主播、自定义合流布局、由服务端控制录制启停**等能力,可使用 TRTC 云端录制自行接入。二者主要区别如下:
|
|
47
|
+
|
|
48
|
+
|对比项|**视频会议 SDK 房间录制**|**TRTC 云端录制**|
|
|
49
|
+
|---------|---------|---------|
|
|
50
|
+
|录制范围|适用于当前 SDKAppID 下,通过视频会议 SDK 创建的房间。|适用于当前 SDKAppID 下所有 TRTC 房间(含其他 SDK 或 TRTC SDK 直接创建的房间)。|
|
|
51
|
+
|发起方式|会中由房主或管理员通过客户端接口 / 含 UI 组件一键发起、停止录制。|控制台开启全局自动录制,或由自建后端调用 REST API(例如 `CreateCloudRecording`)控制录制。|
|
|
52
|
+
|录制文件|默认**合流录制**,产出一份混流文件;布局随会中是否有屏幕分享 / 白板自动切换(九宫格最多 25 路,屏幕分享布局 1+16 路)。|全局自动录制为**单流**(每主播一个文件);REST API 方式可选单流或合流,并支持自定义布局与订阅名单。|
|
|
53
|
+
|接入成本|提交工单配置存储地址即可,**无需自建后端**。|需自行在 TRTC 控制台配置录制模板,或集成 REST API 与回调。|
|
|
54
|
+
|
|
55
|
+
> **注意:**
|
|
56
|
+
> - 两种方案可同时使用,但可能产生多份录制文件及额外 [费用](https://cloud.tencent.com/document/product/647/75047)。
|
|
57
|
+
> - 若已使用视频会议 SDK 房间录制,不建议再开启 TRTC **全局自动录制**,以免同一房间被重复录制。
|
|
58
|
+
> - 配置与接入详情请参见 [实现云端录制与回放](https://cloud.tencent.com/document/product/647/76497)。
|
|
59
|
+
|
|
60
|
+
## 常见问题
|
|
61
|
+
|
|
62
|
+
### **多种录制方案可以同时使用吗?**
|
|
63
|
+
|
|
64
|
+
多种录制方案并不冲突,可以同时使用多种录制方案,但会产生多份录制文件和 [费用](https://cloud.tencent.com/document/product/647/75047)。
|
|
65
|
+
|
|
66
|
+
### 如何查看录制时长明细?
|
|
67
|
+
|
|
68
|
+
您可以在 [实时音视频控制台 > 云端录制](https://console.cloud.tencent.com/trtc/cloudrecord) 查看录制的一些时长明细:
|
|
69
|
+
|
|
70
|
+
### 如何管理录制文件?
|
|
71
|
+
|
|
72
|
+
目前提供的 [录制文件管理](https://cloud.tencent.com/document/product/647/76497#file) 主要有以下操作:
|
|
73
|
+
|
|
74
|
+
[查找录制文件](https://cloud.tencent.com/document/product/647/76497#find_file)、[接收录制文件](https://cloud.tencent.com/document/product/647/76497#receive_file)、[删除录制文件](https://cloud.tencent.com/document/product/647/76497#delete_file)、[回放录制文件](https://cloud.tencent.com/document/product/647/76497#record_file)。
|
|
75
|
+
|
|
76
|
+
### 如何自定义录制文件名?
|
|
77
|
+
|
|
78
|
+
目前暂不支持重命名录制文件名,仅支持使用 [API 录制](https://cloud.tencent.com/document/product/647/76497#API_record) 自定义设置文件名称前缀:使用 [API 录制](https://cloud.tencent.com/document/product/647/76497#API_record) 存储至云点播 VOD 时,可通过 [TencentVod](https://cloud.tencent.com/document/api/647/44055#TencentVod) 中的 UserDefineRecordId 参数自定义文件名称前缀,前缀与自动生成的录制文件名之间用`_UserDefine_u_`分开。
|
|
79
|
+
|
|
80
|
+
### 更多文档
|
|
81
|
+
- [实现云端录制与回放](https://cloud.tencent.com/document/product/647/76497)
|
|
82
|
+
|
|
83
|
+
- [云端录制服务端事件回调](https://cloud.tencent.com/document/product/647/81113)
|
|
84
|
+
|
|
85
|
+
- [云端录制计费说明](https://cloud.tencent.com/document/product/647/75047)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
TUIRoomKit 已内置白板和屏幕共享批注。完成 TUIRoomKit 接入后,无需编写额外代码,用户即可在会议中使用:
|
|
2
|
+
- **白板**:打开一块空白画布,用于板书、讲解和头脑风暴。
|
|
3
|
+
|
|
4
|
+
- **屏幕共享批注**:在共享中的画面上圈画重点、添加箭头或标记问题。
|
|
5
|
+
|
|
6
|
+
## 在线体验
|
|
7
|
+
|
|
8
|
+
访问 [TUIRoomKit 在线体验](https://rtcube.cloud.tencent.com/component/experience-center/index.html#/detail),进入会议场景体验白板和屏幕共享批注。
|
|
9
|
+
|
|
10
|
+
## 开始使用
|
|
11
|
+
|
|
12
|
+
请先参考 [快速接入](https://cloud.tencent.com/document/product/647/81962) 集成 `@tencentcloud/roomkit-web-vue3`,并升级到 `6.1.0` 或更高版本。
|
|
13
|
+
|
|
14
|
+
### 使用白板
|
|
15
|
+
1. 进入**多人会议**。
|
|
16
|
+
|
|
17
|
+
2. 点击底部工具栏的**屏幕共享**。
|
|
18
|
+
|
|
19
|
+
3. 在展开的菜单中选择**白板**。
|
|
20
|
+
|
|
21
|
+
4. 白板会立即共享给房间内其他成员。发起者可以使用画笔、激光笔、形状、箭头、橡皮擦、撤销、重做、清空和保存截图等工具。
|
|
22
|
+
|
|
23
|
+
会议中的白板
|
|
24
|
+
|
|
25
|
+
### 使用屏幕共享批注
|
|
26
|
+
1. 开启屏幕共享。
|
|
27
|
+
|
|
28
|
+
2. 点击共享画面上的**批注**按钮。
|
|
29
|
+
|
|
30
|
+
3. 使用画笔、形状或箭头在共享内容上标记重点。
|
|
31
|
+
|
|
32
|
+
4. 结束屏幕共享后,批注会自动关闭。
|
|
33
|
+
|
|
34
|
+
在屏幕共享画面上批注
|
|
35
|
+
|
|
36
|
+
## 权限控制
|
|
37
|
+
|
|
38
|
+
白板使用与屏幕共享相同的权限:
|
|
39
|
+
- **房主和管理员**可以通过会控禁止或允许普通成员共享屏幕。
|
|
40
|
+
|
|
41
|
+
- **普通成员**被禁止共享屏幕后,不能开启屏幕共享,也不能开启白板。
|
|
42
|
+
|
|
43
|
+
- **屏幕共享批注**仅供当前屏幕共享者使用。其他成员可以观看共享画面和批注内容,但不能在该画面上绘制。
|
|
44
|
+
|
|
45
|
+
如果成员看不到白板入口,请先确认其屏幕共享权限是否已被关闭。
|
|
46
|
+
|
|
47
|
+
## 关闭白板和批注
|
|
48
|
+
|
|
49
|
+
如果您的应用不需要白板和批注,可以隐藏功能入口:
|
|
50
|
+
``` typescript
|
|
51
|
+
import {
|
|
52
|
+
BuiltinWidget,
|
|
53
|
+
conference,
|
|
54
|
+
} from '@tencentcloud/roomkit-web-vue3';
|
|
55
|
+
|
|
56
|
+
conference.setWidgetVisible({
|
|
57
|
+
[BuiltinWidget.WhiteboardWidget]: false,
|
|
58
|
+
[BuiltinWidget.AnnotationWidget]: false,
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 使用范围
|
|
63
|
+
- 支持 Windows 和 macOS 桌面端的 Chrome、Edge 最新稳定版本。
|
|
64
|
+
|
|
65
|
+
- 暂不支持移动端浏览器和研讨会(Webinar)房间。
|
|
66
|
+
|
|
67
|
+
- 当前由发起者绘制,其他成员实时观看,暂不支持多人同时绘制。
|
|
68
|
+
|
|
69
|
+
- 白板与普通屏幕共享不能同时开启;需要批注时,请先开启屏幕共享,再在共享画面上开启批注。
|
|
70
|
+
|
|
71
|
+
## 常见问题
|
|
72
|
+
|
|
73
|
+
### 为什么会议中没有白板入口?
|
|
74
|
+
|
|
75
|
+
请确认:
|
|
76
|
+
1. `@tencentcloud/roomkit-web-vue3` 已升级到 **6.1.0** 或更高版本。
|
|
77
|
+
|
|
78
|
+
2. 当前是多人会议,而不是研讨会(Webinar)房间。
|
|
79
|
+
|
|
80
|
+
3. 当前用户拥有屏幕共享权限。
|
|
81
|
+
|
|
82
|
+
4. 当前使用支持屏幕共享的桌面端 Chrome 或 Edge。
|
|
83
|
+
|
|
84
|
+
### 退出会议前需要手动关闭吗?
|
|
85
|
+
|
|
86
|
+
不需要。退出房间时,组件会自动停止白板并释放相关资源;屏幕共享批注也会在共享结束时自动停止。
|
package/server.js
CHANGED
|
@@ -45,6 +45,8 @@ const registrySearchTRTCKnowledgeTool = (mcpServer) => {
|
|
|
45
45
|
from: params.from,
|
|
46
46
|
info: JSON.stringify({
|
|
47
47
|
preflight: routePlan.meta,
|
|
48
|
+
raw_product: params.product ?? [],
|
|
49
|
+
raw_frameworks: params.frameworks ?? [],
|
|
48
50
|
normalized_product: routePlan.primary.product,
|
|
49
51
|
normalized_frameworks: routePlan.primary.frameworks,
|
|
50
52
|
}),
|
package/utils/preflight-route.js
CHANGED
|
@@ -10,6 +10,10 @@ const PRODUCT_SIGNALS = {
|
|
|
10
10
|
// 平台词(纯运行形态,不含任何产品词)
|
|
11
11
|
const PLATFORM_NATIVE_SIGNAL = /\b(android|ios|flutter|c\+\+|native)\b|安卓\s*(sdk|端|原生)|iOS\s*(SDK|端|原生)|原生\s*(sdk|端)?|native\s+(?:sdk|client|app)|mobile\s+(?:sdk|native)/i;
|
|
12
12
|
const PLATFORM_WEB_SIGNAL = /\b(web|h5|html5|browser|webview)\b|浏览器|网页|Web端|H5端|网页端|web\s+(?:app|client|page)|in-?browser|mobile\s+browser|安卓\s*(浏览器|网页|H5|Web|webview)|iOS\s*(浏览器|网页|H5|Web|webview)|Android\s*(?:浏览器|网页|H5|Web|webview|browser|web)|iPad\s*(?:浏览器|网页|H5|Web|browser|web)|\b(Safari|Chrome|Edge|UC|QQ浏览器|QQ\s+Browser)\b/i;
|
|
13
|
+
// 小程序信号:小程序 / 微信小程序 / miniprogram / mini program / AppService(小程序逻辑层专有名词)。
|
|
14
|
+
// 命中即锁定 miniprogram,并像 web 一样压制 native 单字与 native 兜底,
|
|
15
|
+
// 避免「PC 微信小程序…没有原生 WebSocket」这类描述里的「原生」被 PLATFORM_NATIVE_SIGNAL 误命中后兜底成 android。
|
|
16
|
+
const PLATFORM_MINIPROGRAM_SIGNAL = /小程序|微信小程序|\bmini[-\s]?program\b|\bminiprogram\b|\bAppService\b/i;
|
|
13
17
|
// 平台+产品复合词(运行形态 + 产品线路标识)
|
|
14
18
|
const WEB_PRODUCT_PAIR_SIGNAL = /\bweb\s+(trtc|sdk|im|chat|roomkit)\b|\b(trtc|sdk|im|chat|roomkit)\s+web\b|trtc[-\s]?sdk|trtc\.js/i;
|
|
15
19
|
// API 词(客户端调用形态)
|
|
@@ -42,12 +46,19 @@ function collectPromptSignals(prompt) {
|
|
|
42
46
|
if (TRTC_SIGNAL.test(prompt))
|
|
43
47
|
products.add('trtc');
|
|
44
48
|
// 平台 tokens:web signal 锁定 → 压制 native 单字(安卓/iOS 仅归 hostEnv);
|
|
49
|
+
// miniprogram signal 锁定 → 同样压制 native 单字与 native 兜底(小程序逻辑层"没有原生 X"不应被判成 native)。
|
|
45
50
|
// 真复合词(unreal/unity/harmonyos/react-native/flutter/c++)不受影响。
|
|
46
51
|
const platforms = [];
|
|
47
52
|
const webLocked = PLATFORM_WEB_SIGNAL.test(prompt) || WEB_PRODUCT_PAIR_SIGNAL.test(prompt);
|
|
48
53
|
if (webLocked) {
|
|
49
54
|
platforms.push('web');
|
|
50
55
|
}
|
|
56
|
+
// 小程序信号优先级高于 native 单字/兜底:命中即锁定 miniprogram。
|
|
57
|
+
// web + 小程序可同时成立(如"小程序 web-view"),各自入 platforms 由 search core 做多平台归并。
|
|
58
|
+
const mpLocked = PLATFORM_MINIPROGRAM_SIGNAL.test(prompt);
|
|
59
|
+
if (mpLocked) {
|
|
60
|
+
platforms.push('miniprogram');
|
|
61
|
+
}
|
|
51
62
|
const nativeSpecificHits = [];
|
|
52
63
|
if (/\b(?:unreal|UE[45]?|unreal-engine)\b/i.test(prompt))
|
|
53
64
|
nativeSpecificHits.push('unreal-engine');
|
|
@@ -61,17 +72,18 @@ function collectPromptSignals(prompt) {
|
|
|
61
72
|
nativeSpecificHits.push('flutter');
|
|
62
73
|
if (/\b(?:c\+\+)\b/i.test(prompt))
|
|
63
74
|
nativeSpecificHits.push('c++');
|
|
64
|
-
// 安卓/iOS 单字只在非 web-locked 时进 platforms(
|
|
65
|
-
if (!webLocked && /\b(?:ios|iphone|ipad|苹果)\b/i.test(prompt))
|
|
75
|
+
// 安卓/iOS 单字只在非 web-locked 且非 miniprogram-locked 时进 platforms(否则仅归 hostEnv)
|
|
76
|
+
if (!webLocked && !mpLocked && /\b(?:ios|iphone|ipad|苹果)\b/i.test(prompt))
|
|
66
77
|
nativeSpecificHits.push('ios');
|
|
67
|
-
if (!webLocked && /\b(?:android|安卓)\b/i.test(prompt))
|
|
78
|
+
if (!webLocked && !mpLocked && /\b(?:android|安卓)\b/i.test(prompt))
|
|
68
79
|
nativeSpecificHits.push('android');
|
|
69
|
-
// 真复合词(如 unity/unreal/flutter/harmonyos/react-native/c++)无条件 push;单字在
|
|
80
|
+
// 真复合词(如 unity/unreal/flutter/harmonyos/react-native/c++)无条件 push;单字在 web/miniprogram 锁定时被压制
|
|
70
81
|
if (nativeSpecificHits.length > 0) {
|
|
71
82
|
platforms.push(...nativeSpecificHits);
|
|
72
83
|
}
|
|
73
|
-
else if (!webLocked && PLATFORM_NATIVE_SIGNAL.test(prompt)) {
|
|
74
|
-
// 仅 "native" 词,未指定细分 → 默认 android(
|
|
84
|
+
else if (!webLocked && !mpLocked && PLATFORM_NATIVE_SIGNAL.test(prompt)) {
|
|
85
|
+
// 仅 "native" 词,未指定细分 → 默认 android(web/miniprogram 锁定时不触发 fallback,
|
|
86
|
+
// 避免被 \b(android|ios|...) 或"原生"反向命中把 web/小程序 路径覆盖成 native)
|
|
75
87
|
platforms.push('android');
|
|
76
88
|
}
|
|
77
89
|
// Host env:仅用于标记,不进 platforms 归一化
|