@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.
Files changed (44) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +13 -5
  3. package/knowledge/bm25.js +20 -11
  4. package/knowledge/search/generic-rerank.js +123 -0
  5. package/knowledge/search/search-pass.js +8 -1
  6. package/package.json +1 -1
  7. package/resource/_schema/query-normalization.yaml +6 -0
  8. package/resource/index/manifest.json +1 -1
  9. package/resource/integration/chat/preset/android/integration.md +33 -29
  10. package/resource/integration/chat/preset/flutter/integration.md +93 -92
  11. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +1 -1
  12. package/resource/knowledge/chat/best-practice/common/web-sdk-log-level.md +76 -0
  13. package/resource/knowledge/chat/best-practice/miniprogram/desktop-wechat-miniprogram-error.md +79 -0
  14. package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +1 -1
  15. package/resource/knowledge/chat/preset/android-view/integration.md +37 -29
  16. package/resource/knowledge/push/config/android/fcm.md +2 -6
  17. package/resource/knowledge/push/integration/android.md +777 -425
  18. package/resource/knowledge/push/integration/donut.md +54 -71
  19. package/resource/knowledge/push/integration/flutter.md +194 -63
  20. package/resource/knowledge/push/integration/harmonyos.md +7 -2
  21. package/resource/knowledge/push/integration/ios.md +23 -93
  22. package/resource/knowledge/push/integration/react-native.md +2 -1
  23. package/resource/knowledge/push/integration/uni-app.md +28 -106
  24. package/resource/knowledge/push/integration/unity.md +2 -1
  25. package/resource/knowledge/push/integration/unreal-engine.md +2 -1
  26. package/resource/knowledge/roomkit/best-practice/vue/screen-share-auto-stop-on-leave.md +62 -0
  27. package/resource/knowledge/roomkit/core-sdk/react/network-proxy.md +84 -0
  28. package/resource/knowledge/roomkit/core-sdk/vue/network-proxy.md +84 -0
  29. package/resource/knowledge/roomkit/core-sdk/vue/recording.md +245 -0
  30. package/resource/knowledge/roomkit/core-sdk/vue/whiteboard-annotation.md +196 -0
  31. package/resource/knowledge/roomkit/faq/error-code.md +103 -0
  32. package/resource/knowledge/roomkit/preset/harmonyos/integration.md +461 -0
  33. package/resource/knowledge/roomkit/preset/react/features/network-proxy.md +80 -0
  34. package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +581 -0
  35. package/resource/knowledge/roomkit/preset/vue/features/ai-caption-translation.md +69 -0
  36. package/resource/knowledge/roomkit/preset/vue/features/ai-denoiser.md +67 -0
  37. package/resource/knowledge/roomkit/preset/vue/features/network-proxy.md +80 -0
  38. package/resource/knowledge/roomkit/preset/vue/features/recording.md +85 -0
  39. package/resource/knowledge/roomkit/preset/vue/features/whiteboard-annotation.md +86 -0
  40. package/server.js +1 -1
  41. package/tools/common/search_trtc_knowledge.js +2 -0
  42. package/utils/preflight-route.js +18 -6
  43. package/utils/report-cls-client.js +1 -1
  44. package/utils/report-es-client.js +1 -1
@@ -0,0 +1,461 @@
1
+ TUIRoomKit 是腾讯云提供的一站式多人音视频房间解决方案,集成了完整的 UI 组件和核心功能。通过本文档,开发者可以快速了解如何将 TUIRoomKit 集成到项目中,实现多人音视频房间功能。本文还将详细介绍如何快速替换图片资源、本地化文案等个性化配置,帮助开发者打造符合品牌特色的音视频应用。
2
+
3
+ ## 前提条件
4
+
5
+ ### 开通服务
6
+
7
+ 请参考 开通服务 领取 TUIRoomKit 体验版,并在 [应用管理](https://console.cloud.tencent.com/trtc) 页面获取以下信息:
8
+ - **SDKAppID**:应用标识(必填),腾讯云基于 SDKAppID 完成计费统计。
9
+
10
+ - **SDKSecretKey**:应用密钥,用于初始化配置文件的密钥信息。
11
+
12
+ ### 环境准备
13
+ - 集成开发环境:6.0.0.858 或以上。
14
+
15
+ - 手机操作系统:HarmonyOS 5.0.5 或以上。
16
+
17
+ - API Version:17 或以上。
18
+
19
+ ## 快速接入
20
+
21
+ ### 步骤1:集成 TUIRoomKit 组件
22
+
23
+ #### 下载源码
24
+
25
+ 从 GitHub 下载 [TUIKit Harmony](https://github.com/Tencent-RTC/TUIKit_Harmony) 源码:
26
+ ``` bash
27
+ git clone https://github.com/Tencent-RTC/TUIKit_Harmony.git
28
+ ```
29
+
30
+ #### 集成组件
31
+
32
+ 2. 在您的工程 `entry` 的 `oh-package.json5` 文件中,添加以下插件依赖。
33
+
34
+ ``` json
35
+ "dependencies": {
36
+ "@tencentcloud/atomicxcore": "^4.1.0",
37
+ "@tencentcloud/atomicx": "file:../../../atomic_x",
38
+ "@tencentcloud/tuiroomkit": "file:../../../room",
39
+ }
40
+ ```
41
+
42
+ > **说明:**
43
+ >
44
+ > room 和 atomic_x 可以放在任何位置,只要在 oh-package.json5 中正确设置相对路径即可。
45
+ >
46
+
47
+ 3. **oh-package.json5** 修改完毕后,执行以下命令,安装本地 TUIKit 组件。示例:
48
+
49
+ ``` bash
50
+ ohpm install
51
+ ```
52
+
53
+ ohpm install 会自动安装所需的依赖库。
54
+
55
+ > **注意:**
56
+ >
57
+ > - 使用本地集成方案时,如需升级时需要从 GitHub 获取最新的组件代码,覆盖您本地项目的 atomic_x 目录。
58
+ > - 当私有化修改和远端有冲突时,需要手动合并,处理冲突。
59
+
60
+ ### 步骤2:工程配置
61
+ 1. 权限配置:您需要在您工程 entry 的 module.json5 的 module 模块中,声明以下所需要的权限:
62
+
63
+ ``` json
64
+ "requestPermissions":[
65
+ {
66
+ "name" : "ohos.permission.INTERNET"
67
+ },
68
+ {
69
+ "name" : "ohos.permission.USE_BLUETOOTH"
70
+ },
71
+ {
72
+ "name" : "ohos.permission.GET_BUNDLE_INFO"
73
+ },
74
+ {
75
+ "name" : "ohos.permission.GET_NETWORK_INFO"
76
+ },
77
+ {
78
+ "name" : "ohos.permission.GET_WIFI_INFO"
79
+ },
80
+ {
81
+ "name" : "ohos.permission.MODIFY_AUDIO_SETTINGS"
82
+ },
83
+ {
84
+ "name" : "ohos.permission.MICROPHONE",
85
+ "reason": "$string:module_desc",
86
+ "usedScene": { "abilities": [ "EntryAbility" ], "when":"always" }
87
+ },
88
+ {
89
+ "name" : "ohos.permission.CAMERA",
90
+ "reason": "$string:module_desc",
91
+ "usedScene": { "abilities": [ "EntryAbility" ], "when":"always" }
92
+ },
93
+ {
94
+ "name" : "ohos.permission.KEEP_BACKGROUND_RUNNING"
95
+ },
96
+ ]
97
+ ```
98
+ 2. 模块声明:已有项目集成源码后,需在 build-profile.json5 文件声明模块:
99
+
100
+ ``` bash
101
+ "modules": [
102
+ {
103
+ "name": "entry",
104
+ "srcPath": "./entry",
105
+ "targets": [
106
+ {
107
+ "name": "default",
108
+ "applyToProducts": [
109
+ "default"
110
+ ]
111
+ }
112
+ ]
113
+ },
114
+ {
115
+ "name": "tuiroomkit",
116
+ "srcPath": "../room", // 根据实际目录调整
117
+ "targets": [
118
+ {
119
+ "name": "default",
120
+ "applyToProducts": [
121
+ "default"
122
+ ]
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "name": "atomic_x",
128
+ "srcPath": "../atomic_x", // 根据实际目录调整
129
+ "targets": [
130
+ {
131
+ "name": "default",
132
+ "applyToProducts": [
133
+ "default"
134
+ ]
135
+ }
136
+ ]
137
+ }
138
+ ]
139
+ ```
140
+ 3. 声明 backgroundModes。在承载会议界面的 UIAbility(通常是 EntryAbility)下,给 module.json5 的 abilities 节点添加 backgroundModes:
141
+
142
+ ``` java
143
+ "abilities": [
144
+ {
145
+ "name": "EntryAbility",
146
+ // ... 其他配置保持不变
147
+ "backgroundModes": [
148
+ "audioRecording",
149
+ "audioPlayback"
150
+ ]
151
+ }
152
+ ]
153
+ ```
154
+
155
+ ### 步骤3:登录
156
+
157
+ 代码集成完成后,需要完成登录操作,这是**使用 TUIRoomKit 的关键步骤**。只有在登录成功后,才能正常使用 TUIRoomKit 的各项功能,因此请仔细检查相关参数配置是否正确:
158
+
159
+ > **说明:**
160
+ > 在示例代码中,直接进行了登录接口的调用。但在实际项目场景下,强烈推荐**您在完成自己的用户身份验证等相关登录操作后,再调用 TUIRoomKit 的登录服务**。这样可以避免因过早调用登录服务,导致业务逻辑混乱或数据不一致的问题,同时也能更好地适配您项目中现有的用户管理和权限控制体系。
161
+ >
162
+
163
+ 【ArkTS】
164
+ ``` typescript
165
+ import { LoginStore } from '@tencentcloud/atomicxcore'
166
+
167
+ try {
168
+ await LoginStore.shared().login(
169
+ 1400000000, // 替换为您的 SDKAPPID
170
+ 'userID', // 替换为您的 UserID
171
+ 'userSig', // 替换为您的 UserSig
172
+ );
173
+ // login success
174
+ } catch (error) {
175
+ // login error
176
+ }
177
+ ```
178
+
179
+ **登录接口参数说明:**
180
+ | 参数 | 类型 | 说明 |
181
+ | --- | --- | --- |
182
+ | <code>sdkAppID</code> | <code>number</code> | 从 <a href="https://console.cloud.tencent.com/trtc">控制台</a> 获取,通常是以 <code>140</code> 或 <code>160</code> 开头的 10 位整数。 |
183
+ | <code>userID</code> | <code>string</code> | 当前用户的唯一 ID,仅包含英文字母、数字、连字符和下划线。为避免多端登录冲突,<strong>请勿使用</strong> <code>1</code>、<code>123</code> <strong>等简单 ID</strong>。 |
184
+ | <code>userSig</code> | <code>string</code> | 用于腾讯云鉴权的票据。更多信息请参见 如何计算及使用 UserSig。<br>【注意事项】<br>- 开发环境:可以采用本地 <code>GenerateTestUserSig.genTestSig</code> 函数生成 userSig 或者通过 <a href="https://console.cloud.tencent.com/im/tool-usersig">UserSig 辅助工具</a> 生成临时的 userSig。<br>- 生产环境:为了防止密钥泄露,请务必采用服务端生成 userSig 的方式。详细信息请参考 服务端生成 UserSig。 |
185
+
186
+ ### 步骤4:设置头像和昵称
187
+
188
+ 首次登录的用户没有头像和昵称信息,需要通过 `LoginStore` 的 `setSelfInfo` 接口设置个人信息:
189
+ ``` typescript
190
+ import { LoginStore, UserProfile, ErrorInfo } from '@tencentcloud/atomicxcore';
191
+
192
+ try {
193
+ await LoginStore.shared().setSelfInfo(new UserProfile('userID', 'userName', 'avatarURL'));
194
+ console.info("setSelfInfo success");
195
+ } catch (error) {
196
+ const err = error as ErrorInfo;
197
+ console.error(`setSelfInfo failed [code: ${err.code}] ${err.message}`);
198
+ }
199
+ ```
200
+
201
+ **setSelfInfo 接口参数/返回值说明:**
202
+ | 参数/返回值 | 类型 | 说明 |
203
+ | --- | --- | --- |
204
+ | <code>userProfile</code> | <code>UserProfile</code> | 个人用户信息核心模型,包含:<br>- userID:要设置用户信息的用户 ID。<br>- nickname:昵称信息。<br>- avatarURL:头像链接。 |
205
+
206
+ ### 步骤5:创建房间
207
+
208
+ 在 `TUIRoomKit` 组件中,`RoomMainPage` 是集成了完整的多人音视频房间功能的核心界面,以下将向开发者演示如何以房主身份将 `RoomMainPage` 嵌入到应用中。
209
+
210
+ #### **实现方式:**
211
+ 1. **构造进房的配置项**:进入房间后是否需要自动打开音视频设备的配置项。
212
+
213
+ 2. **配置房间创建选项**:配置房间名称等信息。
214
+
215
+ 3. **初始化房间主页面**:通过房主身份初始化房间主页面。
216
+
217
+ 4. **导航到房间页面**:将 `RoomMainPage` 推入导航栈。
218
+
219
+ > **说明:**
220
+ >
221
+ > Harmony 目前仅支持创建标准房间,如您需要创建大型研讨会房间,请参考 Web 快速接入 使用 Web 端创建。
222
+ >
223
+
224
+ #### **示例代码:**
225
+ ``` typescript
226
+ import {
227
+ RoomMainPage,
228
+ RoomBehavior,
229
+ ConnectConfig,
230
+ EnterRoomParams,
231
+ } from '@tencentcloud/tuiroomkit';
232
+ import { CreateRoomOptions } from '@tencentcloud/atomicxcore';
233
+
234
+ @Entry
235
+ @Component
236
+ struct YourMainPage {
237
+ private navStack: NavPathStack = new NavPathStack();
238
+
239
+ build() {
240
+ Navigation(this.navStack) {
241
+ Column() {
242
+ Button('创建房间')
243
+ .onClick(() => this.createRoom())
244
+ }
245
+ .width('100%')
246
+ .height('100%')
247
+ .justifyContent(FlexAlign.Center)
248
+ }
249
+ .navDestination(this.routerMap)
250
+ .hideTitleBar(true)
251
+ }
252
+
253
+ private createRoom(): void {
254
+ // 1. 构造进房的配置项
255
+ const config = new ConnectConfig(
256
+ true, // autoEnableMicrophone: 进房后是否自动开启麦克风
257
+ true, // autoEnableCamera: 进房后是否自动开启摄像头
258
+ true, // autoEnableSpeaker: 进房后是否自动开启扬声器
259
+ );
260
+
261
+ // 2. 配置房间创建选项
262
+ const options = new CreateRoomOptions();
263
+ options.roomName = 'roomName'; // 房间名称
264
+
265
+ // 3. 配置进房行为(创建房间)
266
+ const behavior = RoomBehavior.create(options);
267
+
268
+ // 4. 导航到房间页面
269
+ const params = new EnterRoomParams('123456', behavior, config);
270
+ this.navStack.pushPath({ name: 'RoomMain', param: params });
271
+ }
272
+
273
+ @Builder
274
+ routerMap(name: string, param: Object) {
275
+ if (name === 'RoomMain') {
276
+ RoomMainDestination({ navStack: this.navStack, params: param as EnterRoomParams })
277
+ }
278
+ }
279
+ }
280
+
281
+ @Component
282
+ struct RoomMainDestination {
283
+ navStack: NavPathStack = new NavPathStack();
284
+ params?: EnterRoomParams;
285
+
286
+ build() {
287
+ NavDestination() {
288
+ RoomMainPage({
289
+ roomID: this.params?.roomID ?? '',
290
+ behavior: this.params?.behavior ?? RoomBehavior.join(),
291
+ config: this.params?.config ?? new ConnectConfig(),
292
+ onExit: () => {
293
+ this.navStack.pop();
294
+ },
295
+ })
296
+ }
297
+ .hideTitleBar(true)
298
+ .width('100%')
299
+ .height('100%')
300
+ .onBackPressed(() => true)
301
+ }
302
+ }
303
+ ```
304
+
305
+ **RoomMainPage 构造函数参数详细说明:**
306
+ | 参数 | 类型 | 说明 |
307
+ | --- | --- | --- |
308
+ | <code>roomID</code> | <code>string</code> | - 字符串类型的房间唯一标识符。<br>- 限制长度为 0-48 字节。<br>- 建议仅包含数字、英文字母(区分大小写)、下划线(_)和连字符(-)。避免使用空格和中文字符。 |
309
+ | <code>behavior</code> | <code>RoomBehavior</code> | - 房间主页面初始化来源。<br>- 参数含义:<br>- create: 房主身份创建房间,此方式需要构造创建房间配置项 CreateRoomOptions。<br>- join:参与者身份加入房间。 |
310
+ | <code>config</code> | <code>ConnectConfig</code> | 进房后音视频设备控制的配置项。 |
311
+
312
+ **ConnectConfig 参数详细说明:**
313
+ | 参数 | 类型 | 说明 |
314
+ | --- | --- | --- |
315
+ | autoEnableMicrophone | <code>boolean</code> | - 进房后是否自动开启麦克风。<br>- 参数含义:<br>- true: 自动开启 (默认值)。<br>- false: 不自动开启。 |
316
+ | autoEnableCamera | <code>boolean</code> | - 进房后是否自动开启摄像头。<br>- 参数含义:<br>- true: 自动开启 (默认值)。<br>- false: 不自动开启。 |
317
+ | autoEnableSpeaker | <code>boolean</code> | - 进房后是否自动开启扬声器。<br>- 参数含义:<br>- true: 自动开启 (默认值)。<br>- false: 不自动开启。 |
318
+
319
+ ### 步骤6:加入房间
320
+
321
+ 以下示例将向开发者演示如何以参与者身份将 `RoomMainPage` 嵌入到应用中。
322
+
323
+ #### **实现方式:**
324
+ 1. **构造进房的配置项**:进入房间后是否需要自动打开音视频设备的配置项。
325
+
326
+ 2. **初始化房间主页面**:通过参与者身份初始化房间主页面。
327
+
328
+ 3. **导航到房间页面**:将 `RoomMainPage` 推入导航栈。
329
+
330
+ #### 代码示例:
331
+ ``` typescript
332
+ import {
333
+ RoomMainPage,
334
+ RoomBehavior,
335
+ ConnectConfig,
336
+ EnterRoomParams,
337
+ } from '@tencentcloud/tuiroomkit';
338
+
339
+ @Entry
340
+ @Component
341
+ struct YourMainPage {
342
+ private navStack: NavPathStack = new NavPathStack();
343
+
344
+ build() {
345
+ Navigation(this.navStack) {
346
+ Column() {
347
+ Button('加入房间')
348
+ .onClick(() => this.enterRoom())
349
+ }
350
+ .width('100%')
351
+ .height('100%')
352
+ .justifyContent(FlexAlign.Center)
353
+ }
354
+ .navDestination(this.routerMap)
355
+ .hideTitleBar(true)
356
+ }
357
+
358
+ private enterRoom(): void {
359
+ // 1. 构造进房的配置项
360
+ const config = new ConnectConfig(
361
+ true, // autoEnableMicrophone: 进房后是否自动开启麦克风
362
+ true, // autoEnableCamera: 进房后是否自动开启摄像头
363
+ true, // autoEnableSpeaker: 进房后是否自动开启扬声器
364
+ );
365
+
366
+ // 2. 配置进房行为(加入房间)
367
+ const behavior = RoomBehavior.join();
368
+
369
+ // 3. 导航到房间页面
370
+ const params = new EnterRoomParams('roomID', behavior, config);
371
+ this.navStack.pushPath({ name: 'RoomMain', param: params });
372
+ }
373
+
374
+ @Builder
375
+ routerMap(name: string, param: Object) {
376
+ if (name === 'RoomMain') {
377
+ RoomMainDestination({ navStack: this.navStack, params: param as EnterRoomParams })
378
+ }
379
+ }
380
+ }
381
+
382
+ @Component
383
+ struct RoomMainDestination {
384
+ navStack: NavPathStack = new NavPathStack();
385
+ params?: EnterRoomParams;
386
+
387
+ build() {
388
+ NavDestination() {
389
+ RoomMainPage({
390
+ roomID: this.params?.roomID ?? '',
391
+ behavior: this.params?.behavior ?? RoomBehavior.join(),
392
+ config: this.params?.config ?? new ConnectConfig(),
393
+ onExit: () => {
394
+ this.navStack.pop();
395
+ },
396
+ })
397
+ }
398
+ .hideTitleBar(true)
399
+ .width('100%')
400
+ .height('100%')
401
+ .onBackPressed(() => true)
402
+ }
403
+ }
404
+ ```
405
+
406
+ **参数详细说明请参考:**[RoomMainPage 构造函数参数详细说明]( 构造函数参数详细说明) 和 [ConnectConfig 参数详细说明]( 参数详细说明)。
407
+
408
+ > **说明:**
409
+ > 使用 TUIRoomKit 组件进入大型研讨会房间时,需确保 Web 端创建的研讨会房间的房间 ID 以 `webinar_` 开头。
410
+ >
411
+
412
+ ## 核心功能
413
+
414
+ 接入 `RoomMainPage` 代码后,开发者将得到一个完整的多人音视频页面,内部包含成员管理,音视频设备控制,房间信息展示等功能,这是 `TUIRoomKit` 组件的核心。
415
+
416
+ ## 界面定制
417
+
418
+ `RoomMainPage` 房间主页面内功能丰富,可定制化度高,开发者可以根据实际产品需求,对 UI 进行定制化修改,以适配业务交互场景。以下将详细为开发者展示 `RoomMainPage` 中视图组件,便于开发者快速修改。
419
+
420
+ `RoomMainPage` **中组件详细说明**
421
+
422
+ |组件|功能描述|定制化建议|
423
+ |---------|---------|---------|
424
+ |[RoomMainPage](https://github.com/Tencent-RTC/TUIKit_Harmony/blob/main/room/src/main/ets/pages/RoomMainPage.ets)|房间主视图容器,负责协调各子组件的布局与数据流转。|可调整整体背景、安全区域适配、组件显隐逻辑。|
425
+ |[RoomTopBarView](https://github.com/Tencent-RTC/TUIKit_Harmony/blob/main/room/src/main/ets/pages/main/RoomTopBarView.ets)|顶部导航栏,包含房间信息、摄像头和声音控制、退出房间功能入口。|可替换图标、调整背景透明度、添加自定义按钮(例如录制、 窗口化)。|
426
+ |[RoomView](https://github.com/Tencent-RTC/TUIKit_Harmony/blob/main/room/src/main/ets/pages/main/RoomView.ets)|视频流展示区域,采用瀑布流布局管理多个用户视频画面。|可修改布局算法(行列数、间距)、分页指示器样式、空状态视图。|
427
+ |[ParticipantVideoItemView](https://github.com/Tencent-RTC/TUIKit_Harmony/blob/main/room/src/main/ets/pages/main/room_view/ParticipantVideoItemView.ets)|单个视频流单元格,承载用户视频画面与基本信息。|可自定义视频渲染层、用户信息面板(头像、徽章)、互动控件(语音波形)。|
428
+ |[RoomBottomBarView](https://github.com/Tencent-RTC/TUIKit_Harmony/blob/main/room/src/main/ets/pages/main/RoomBottomBarView.ets)|底部工具栏,集成麦克风、摄像头、成员管理操作按钮。|可重新排列按钮顺序、修改按钮样式(颜色、尺寸)、添加业务相关功能(例如屏幕分享、会中呼叫、美颜)。|
429
+
430
+ ## 图标定制
431
+
432
+ 接入 TUIRoomKit 组件后,开发者可以根据实际 UI 交互需求直接替换组件下的图标资源,以适配开发者的业务场景。
433
+
434
+ TUIRoomKit 使用 `src/main/resources/base/media` 目录管理 UI 所需的图片资源,您可以直接替换该目录下的图片文件来自定义界面所需的图标。
435
+
436
+ **常用的图片文件列表**
437
+
438
+ |图标|文件名|说明|
439
+ |---------|---------|---------|
440
+ ||room_camera_off.png|摄像头关闭图标|
441
+ ||room_camera_on.png|摄像头开启图标|
442
+ ||room_mic_off.png|麦克风关闭图标|
443
+ ||room_mic_on_empty.png|麦克风开启图标|
444
+ ||room_administrator_icon.png|管理员身份标识图标|
445
+ ||room_owner_icon.png|房主身份标识图标|
446
+
447
+ ## 文案定制
448
+
449
+ TUIRoomKit 使用 HarmonyOS 标准的资源文件来管理 UI 所需的文案显示,您可以直接修改 atomic_x/src/main/resources/ 目录下对应语言文件夹中的 `string.json` 等 JSON 资源文件来调整需要的文案。
450
+
451
+ ## 常见问题
452
+
453
+ ### 每次进房都需要调用登录吗?
454
+
455
+ 不需要。通常您只需要完成一次 `LoginStore.shared.login` 调用即可,我们建议您将 `LoginStore.shared.login` 和
456
+
457
+ `LoginStore.shared.logout` 与自己的登录业务关联。
458
+
459
+ ### oh-package.json5 文件有没有示例配置可以参考?
460
+
461
+ 您可以参考 GitHub TUIKit_Harmony [application](https://github.com/Tencent-RTC/TUIKit_Harmony/tree/main/application) 工程中的 `oh-package.json5` 示例文件。
@@ -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-react';
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
+