@tencentcloud/sdk-mcp 1.3.7 → 1.3.9

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 (77) hide show
  1. package/package.json +2 -1
  2. package/resource/doc/chatuikit/android/integration.md +466 -484
  3. package/resource/doc/chatuikit/android/workflow.md +713 -0
  4. package/resource/doc/livekit/live/flutter/live-integration.md +208 -167
  5. package/resource/doc/livekit/voice/android/voice-audience-list.md +335 -0
  6. package/resource/doc/livekit/voice/android/voice-audio-effect.md +384 -0
  7. package/resource/doc/livekit/voice/android/voice-barrage.md +569 -0
  8. package/resource/doc/livekit/voice/android/voice-co-guest-interaction.md +748 -0
  9. package/resource/doc/livekit/voice/android/voice-gift.md +833 -0
  10. package/resource/doc/livekit/voice/android/voice-host-interaction.md +728 -0
  11. package/resource/doc/livekit/voice/android/voice-integration.md +886 -0
  12. package/resource/doc/livekit/voice/android/voice-room-list.md +493 -0
  13. package/resource/doc/livekit/voice/android/workflow.md +333 -0
  14. package/resource/doc/livekit/voice/flutter/voice-audience-list.md +337 -0
  15. package/resource/doc/livekit/voice/flutter/voice-audio-effect.md +739 -0
  16. package/resource/doc/livekit/voice/flutter/voice-barrage.md +578 -0
  17. package/resource/doc/livekit/voice/flutter/voice-co-guest-interaction.md +673 -0
  18. package/resource/doc/livekit/voice/flutter/voice-gift.md +812 -0
  19. package/resource/doc/livekit/voice/flutter/voice-integration.md +925 -0
  20. package/resource/doc/livekit/voice/flutter/voice-room-list.md +842 -0
  21. package/resource/doc/livekit/voice/flutter/workflow.md +359 -0
  22. package/resource/doc/livekit/voice/ios/voice-audience-list.md +335 -0
  23. package/resource/doc/livekit/voice/ios/voice-audio-effect.md +373 -0
  24. package/resource/doc/livekit/voice/ios/voice-barrage.md +529 -0
  25. package/resource/doc/livekit/voice/ios/voice-co-guest-interaction.md +701 -0
  26. package/resource/doc/livekit/voice/ios/voice-gift.md +785 -0
  27. package/resource/doc/livekit/voice/ios/voice-host-interaction.md +820 -0
  28. package/resource/doc/livekit/voice/ios/voice-integration.md +853 -0
  29. package/resource/doc/livekit/voice/ios/voice-room-list.md +467 -0
  30. package/resource/doc/livekit/voice/ios/workflow.md +358 -0
  31. package/resource/doc/livekit/voice/uni-app/voice-audience-list.md +264 -0
  32. package/resource/doc/livekit/voice/uni-app/voice-audio-effect.md +332 -0
  33. package/resource/doc/livekit/voice/uni-app/voice-barrage.md +482 -0
  34. package/resource/doc/livekit/voice/uni-app/voice-co-guest-interaction.md +944 -0
  35. package/resource/doc/livekit/voice/uni-app/voice-gift.md +716 -0
  36. package/resource/doc/livekit/voice/uni-app/voice-integration.md +613 -0
  37. package/resource/doc/livekit/voice/uni-app/voice-room-list.md +562 -0
  38. package/resource/doc/livekit/voice/uni-app/workflow.md +369 -0
  39. package/resource/doc/roomkit/vue/integration.md +119 -224
  40. package/resource/doc/roomkit/vue/workflow.md +472 -226
  41. package/resource/doc/tuicallkit/android/integration.md +675 -90
  42. package/resource/doc/tuicallkit/android/workflow.md +432 -0
  43. package/tools/common/present-scenario-choice.js +16 -0
  44. package/tools/common/present-scenario-choice.js.map +1 -0
  45. package/tools/common/record-prompt.js +31 -0
  46. package/tools/common/record-prompt.js.map +1 -1
  47. package/tools/common/record-result.js +32 -0
  48. package/tools/common/record-result.js.map +1 -1
  49. package/tools/definitions/get_native_call_uikit_integration_def.js +18 -2
  50. package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
  51. package/tools/definitions/get_native_chat_uikit_integration_def.js +29 -7
  52. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
  53. package/tools/definitions/get_native_live_uikit_integration_def.js +65 -40
  54. package/tools/definitions/get_native_live_uikit_integration_def.js.map +1 -1
  55. package/tools/definitions/get_native_live_uikit_interaction_def.js +42 -94
  56. package/tools/definitions/get_native_live_uikit_interaction_def.js.map +1 -1
  57. package/tools/definitions/get_web_room_feature_detail_def.js +29 -32
  58. package/tools/definitions/get_web_room_feature_detail_def.js.map +1 -1
  59. package/tools/definitions/get_web_room_uikit_integration_def.js +25 -9
  60. package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
  61. package/tools/definitions/present_scenario_choice_def.js +53 -0
  62. package/tools/definitions/present_scenario_choice_def.js.map +1 -0
  63. package/tools/definitions/record_prompt_def.js +6 -1
  64. package/tools/definitions/record_prompt_def.js.map +1 -1
  65. package/tools/definitions/record_result_def.js +34 -10
  66. package/tools/definitions/record_result_def.js.map +1 -1
  67. package/tools/index.js +2 -0
  68. package/tools/index.js.map +1 -1
  69. package/tools/live/get-native-live-uikit-integration.js +110 -34
  70. package/tools/live/get-native-live-uikit-integration.js.map +1 -1
  71. package/tools/live/get_native_live_uikit_interaction.js +128 -35
  72. package/tools/live/get_native_live_uikit_interaction.js.map +1 -1
  73. package/utils/get-device-identifier.js +58 -0
  74. package/utils/get-device-identifier.js.map +1 -0
  75. package/utils/report-cls-client.js +4 -2
  76. package/utils/report-cls-client.js.map +1 -1
  77. package/utils/report-es-client.js +1 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## 📋 指令目的
4
4
 
5
- 为 Agent 提供实现 Vue TUIRoomKit (Atomicx 版本) **核心功能的代码生成蓝图**,并指导 Agent **优先使用工具实时获取的最新文档内容**,专门针对 PC 端 Vue3 音视频会议应用场景。
5
+ 为 Agent 提供实现 Vue TUIRoomKit (Atomicx 版本) **核心功能的代码生成蓝图**,并指导 Agent **优先使用工具实时获取的最新文档内容**,支持 PC 端和 H5 移动端 Vue3 音视频会议应用场景。
6
6
 
7
7
  ---
8
8
 
@@ -15,10 +15,10 @@ Agent 在生成代码时必须严格遵守以下指令:
15
15
  - **必须严格按照集成文档中的示例代码生成代码**,不得擅自修改代码结构和实现方式
16
16
  - 代码生成时应完全遵循集成文档提供的最佳实践和示例,确保代码的正确性和可运行性
17
17
 
18
- ### 2. 源码接入方式
19
- - TUIRoomKit (Atomicx 版本) 采用 **源码接入方式**,需要从 GitHub 克隆并拷贝核心源码文件
20
- - 必须按照文档指引,将指定的源码文件夹(assets、components、hooks、i18n、utils、config、views)拷贝到用户项目中
21
- - 拷贝时必须确保与用户项目已有的文件夹进行合并,避免直接覆盖
18
+ ### 2. npm 包接入方式(推荐)
19
+ - TUIRoomKit (Atomicx 版本) 采用 **npm 包直接安装方式**,无需克隆 GitHub 仓库
20
+ - 通过 npm/pnpm/yarn 安装依赖包即可快速集成
21
+ - 如需深度定制 UI,可使用源码导出功能
22
22
 
23
23
  ### 3. 静默执行集成
24
24
  - 所有代码编写完成后,在最后一步自动安装依赖并启动项目
@@ -26,24 +26,34 @@ Agent 在生成代码时必须严格遵守以下指令:
26
26
 
27
27
  ### 4. 零外部配置(测试阶段)
28
28
  - 禁止自动创建任何 `.env` 文件用于生产环境配置
29
- - SDKAppID 和 SDKSecretKey 等关键凭证必须从 MCP 环境变量中读取,并直接配置在 `src/config/basic-info-config.js` 中
29
+ - SDKAppID 和 UserSig 等关键凭证必须从 MCP 工具获取或让用户手动配置
30
30
 
31
31
  ### 5. 鉴权凭据配置
32
- - 从 MCP 环境变量中读取 `SDKAppID` 和 `SDKSecretKey`,禁止要求用户手动输入
33
- - UserID 生成应保持简洁(可使用随机数生成,如 `user_${Math.ceil(Math.random()*999)}`)
32
+ - 使用 `get_usersig` MCP 工具获取 `SDKAppID`、`userId` 和 `userSig`
34
33
  - **⚠️ 重要安全提示**:必须告知用户,客户端生成 UserSig 仅适合本地测试,正式生产环境必须在服务端生成 UserSig
35
34
 
36
35
  ### 6. Vue 3 组合式 API
37
36
  - 优先使用 `<script setup lang="ts">` 语法(注意启用 TypeScript)
38
37
  - 使用 Vue 3 Composition API(ref、reactive、computed、onMounted 等)
39
- - 正确引入和使用 TUIRoomKit Atomicx 组件
38
+ - 正确引入和使用 TUIRoomKit 组件
40
39
 
41
- ### 7. 路由配置
42
- - 必须配置 Vue Router,将 `home.vue` 映射到主页(路径:`/home`),将 `room.vue` 映射到会议室页面(路径:`/room`)
43
- - 默认根路径重定向到 `/home`
40
+ ### 7. 平台适配
41
+ - 使用 `getPlatform()` 检测当前平台,PC 端使用 `ConferenceMainView`,H5 移动端使用 `ConferenceMainViewH5`
42
+ - 两套组件已分别针对 PC 和 H5 进行 UI 适配,开箱即用
44
43
 
45
- ### 8. 环境依赖准备
46
- - 确保用户项目支持 TypeScript 和 SCSS,如果未安装需自动安装 `typescript` 和 `sass` 开发依赖
44
+ ### 8. 会议组件加载前置要求(⚠️ 关键约束)
45
+ - **调用 `conference.start()` 或 `conference.join()` 的页面,必须确保会议主视图组件已在模板中加载**
46
+ - 在调用发起/加入会议 API 前,页面模板中必须包含以下组件结构:
47
+
48
+ ```vue
49
+ <template>
50
+ <ConferenceMainView v-if="isPC"></ConferenceMainView>
51
+ <ConferenceMainViewH5 v-else></ConferenceMainViewH5>
52
+ </template>
53
+ ```
54
+
55
+ - 如果缺少会议主视图组件,`conference.start()` 和 `conference.join()` 将无法正常渲染会议界面
56
+ - Agent 生成会议室页面代码时,必须先引入并渲染上述组件,再执行发起/加入会议的逻辑
47
57
 
48
58
  ---
49
59
 
@@ -55,35 +65,34 @@ Agent 生成代码后,必须自动执行以下依赖链:
55
65
 
56
66
  ```json
57
67
  {
58
- "tuikit-atomicx-vue3": "latest", // TUIRoomKit 原子化组件库(包含所有 Hooks 和 UI 组件,会自动安装 tuiroom-engine-js)
59
- "@tencentcloud/uikit-base-component-vue3": "latest", // 基础 UI 组件库(按钮、输入框等通用组件)
60
- "@tencentcloud/tuiroom-engine-js": "latest", // TRTC 音视频引擎 SDK(底层能力)
61
- "vue-router": "^4.0.0" // Vue 路由(用于页面导航)
68
+ "@tencentcloud/roomkit-web-vue3": "latest", // TUIRoomKit 主组件包(包含 ConferenceMainView、ConferenceMainViewH5、conference 等)
69
+ "tuikit-atomicx-vue3": "latest", // TUIRoomKit 原子化组件库(包含所有 Hooks 和原子化 UI 组件)
70
+ "@tencentcloud/uikit-base-component-vue3": "latest", // 基础 UI 组件库(UIKitProvider 等)
71
+ "@tencentcloud/universal-api": "latest" // 跨平台 API 工具库(getPlatform 等)
62
72
  }
63
73
  ```
64
74
 
65
75
  **依赖说明**:
66
76
 
67
- | 依赖包 | 作用 | 是否必需手动安装 | 说明 |
68
- |-------|------|----------------|------|
69
- | **tuikit-atomicx-vue3** | TUIRoomKit 核心包 | ✅ 必须 | 包含所有原子化 Hooks(useLoginState、useRoomState、useDeviceState 等)和原子化 UI 组件(RoomLayoutView、ParticipantViewUI 等)。会自动安装 `@tencentcloud/tuiroom-engine-js` 作为依赖 |
70
- | **@tencentcloud/uikit-base-component-vue3** | 基础 UI 组件库 | ✅ 必须 | 提供通用的按钮、输入框、弹窗等基础组件,被 TUIRoomKit 原子化组件内部使用 |
71
- | **@tencentcloud/tuiroom-engine-js** | TRTC 音视频引擎 SDK | ⚠️ 可选 | 提供底层音视频能力(设备管理、音视频采集、推拉流等)。由于 `tuikit-atomicx-vue3` 会自动安装此依赖,通常不需要手动安装。但如果需要确保版本一致性,可以手动指定版本 |
72
- | **vue-router** | Vue 官方路由库 | ✅ 必须 | 用于实现会议入口页(`/home`)和会议室页面(`/room`)的路由导航 |
77
+ | 依赖包 | 作用 | 是否必需 | 说明 |
78
+ |-------|------|---------|------|
79
+ | **@tencentcloud/roomkit-web-vue3** | TUIRoomKit 主组件包 | ✅ 必须 | 提供 `ConferenceMainView`(PC 端)、`ConferenceMainViewH5`(H5 端)和 `conference` 对象(发起/加入会议) |
80
+ | **tuikit-atomicx-vue3** | 原子化组件库 | ✅ 必须 | 提供 `useLoginState`、`useRoomState` 等 Hooks,以及 `RoomLayoutTemplate` 等枚举类型 |
81
+ | **@tencentcloud/uikit-base-component-vue3** | 基础 UI 组件库 | ✅ 必须 | 提供 `UIKitProvider` 组件,用于配置全局主题和语言 |
82
+ | **@tencentcloud/universal-api** | 跨平台 API 工具库 | ✅ 必须 | 提供 `getPlatform()` 方法,用于检测当前运行平台(pc/mobile) |
73
83
 
74
- **依赖关系**:
75
- ```
76
- 用户项目
77
- ├── tuikit-atomicx-vue3(手动安装)
78
- │ └── @tencentcloud/tuiroom-engine-js(自动安装)
79
- ├── @tencentcloud/uikit-base-component-vue3(手动安装)
80
- └── vue-router(手动安装)
81
- ```
84
+ **安装命令**:
82
85
 
83
- **最佳实践**:
84
- - ✅ **推荐做法**:仅手动安装 `tuikit-atomicx-vue3`、`@tencentcloud/uikit-base-component-vue3`、`vue-router`,让 `@tencentcloud/tuiroom-engine-js` 自动安装
85
- - ⚠️ **可选做法**:如果需要精确控制 `@tencentcloud/tuiroom-engine-js` 版本,可以手动安装并指定版本号
86
- - ❌ **不推荐**:同时在 `dependencies` 和手动安装中指定不同版本的 `@tencentcloud/tuiroom-engine-js`,可能导致版本冲突
86
+ ```bash
87
+ # npm
88
+ npm install @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
89
+
90
+ # pnpm
91
+ pnpm install @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
92
+
93
+ # yarn
94
+ yarn add @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
95
+ ```
87
96
 
88
97
  ### 2. 开发环境依赖(TypeScript 和 SCSS)
89
98
 
@@ -91,15 +100,11 @@ Agent 生成代码后,必须自动执行以下依赖链:
91
100
 
92
101
  ```json
93
102
  {
94
- "typescript": "latest", // TypeScript 编译器(用于类型检查和编译)
95
- "sass": "latest" // SCSS 预处理器(用于编译 .scss 样式文件)
103
+ "typescript": "latest", // TypeScript 编译器
104
+ "sass": "latest" // SCSS 预处理器
96
105
  }
97
106
  ```
98
107
 
99
- **依赖说明**:
100
- - **typescript**: TUIRoomKit 源码使用 TypeScript 编写,需要 TypeScript 编译器支持
101
- - **sass**: TUIRoomKit 样式文件使用 SCSS 编写,需要 sass 预处理器进行编译
102
-
103
108
  ### 3. 构建环境补丁 (Vite/esbuild)
104
109
 
105
110
  若检测到 Vite 项目,Agent 必须在 `package.json` 自动增加补丁配置以兼容 esbuild-wasm:
@@ -107,196 +112,370 @@ Agent 生成代码后,必须自动执行以下依赖链:
107
112
  ```json
108
113
  {
109
114
  "overrides": {
110
- "esbuild": "npm:esbuild-wasm@latest" // npm 使用此字段覆盖依赖版本
115
+ "esbuild": "npm:esbuild-wasm@latest"
111
116
  },
112
117
  "resolutions": {
113
- "esbuild": "npm:esbuild-wasm@latest" // yarn/pnpm 使用此字段覆盖依赖版本
118
+ "esbuild": "npm:esbuild-wasm@latest"
114
119
  }
115
120
  }
116
121
  ```
117
122
 
118
- **补丁说明**:
119
- - **为什么需要**:部分环境下 esbuild 原生二进制可能无法正常运行,使用 esbuild-wasm(WebAssembly 版本)可以提供更好的跨平台兼容性
120
- - **适用场景**:主要针对 Vite 构建工具的项目
121
- - **作用**:强制将项目中所有依赖的 esbuild 版本替换为 esbuild-wasm 版本
122
-
123
- **安装命令示例**:
123
+ ---
124
124
 
125
- ```bash
126
- # npm
127
- npm install tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/tuiroom-engine-js vue-router
128
- npm install typescript sass -D
125
+ ## 🎯 TUIRoomKit (Atomicx 版本) 核心组件说明
129
126
 
130
- # pnpm
131
- pnpm install tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/tuiroom-engine-js vue-router
132
- pnpm install typescript sass -D
127
+ ### 主要组件
133
128
 
134
- # yarn
135
- yarn add tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/tuiroom-engine-js vue-router
136
- yarn add typescript sass -D
137
- ```
129
+ | 组件名称 | 说明 | 使用场景 |
130
+ |---------|------|---------|
131
+ | `ConferenceMainView` | PC 端会议主界面组件 | 桌面端多人会议 |
132
+ | `ConferenceMainViewH5` | H5 移动端会议主界面组件 | 移动端多人会议 |
133
+ | `conference` | 会议控制对象 | 发起会议(start)和加入会议(join) |
134
+ | `UIKitProvider` | 全局 UI 配置组件 | 配置主题和语言 |
138
135
 
139
- ---
136
+ ### 核心 Hooks
140
137
 
141
- ## 🏗️ 源码文件拷贝结构
138
+ | Hook 名称 | 来源 | 说明 |
139
+ |---------|------|------|
140
+ | `useLoginState` | `tuikit-atomicx-vue3/room` | 提供 `login`、`setSelfInfo` 等登录方法 |
141
+ | `useRoomState` | `tuikit-atomicx-vue3/room` | 提供房间状态管理 |
142
+ | `useDeviceState` | `tuikit-atomicx-vue3/room` | 提供设备状态管理 |
143
+ | `useRoomEngine` | `tuikit-atomicx-vue3/room` | 获取 roomEngine 实例 |
142
144
 
143
- Agent 必须按照以下结构,从示例项目拷贝核心源码到用户项目:
145
+ ### 平台检测
144
146
 
145
- | 源路径 (示例项目) | 目标路径 (用户项目) | 说明 |
146
- |------------------|-------------------|------|
147
- | `src/assets/` | `src/assets/` | 包含背景图、图标等静态资源 |
148
- | `src/components/` | `src/components/` | 包含 TUIRoomKit 所有原子 UI 组件 |
149
- | `src/hooks/` | `src/hooks/` | 包含 TUIRoomKit 业务逻辑处理 |
150
- | `src/i18n/` | `src/i18n/` | 包含多语言配置文件 |
151
- | `src/utils/` | `src/utils/` | 包含通用工具函数 |
152
- | `src/config/` | `src/config/` | 包含 `basic-info-config.js` 等应用配置信息(首次接入请重点关注此文件) |
153
- | `src/views/home.vue` | `src/views/home.vue` | 该页面包含了设备检测、房间创建/加入的入口功能 |
154
- | `src/views/room.vue` | `src/views/room.vue` | 该页面是 TUIRoomKit 的核心会议界面,集成了完整的头部、视频布局、控制栏和侧边面板 |
147
+ ```typescript
148
+ import { getPlatform } from '@tencentcloud/universal-api';
155
149
 
156
- > **重要提示**:拷贝源码文件时,请确保与用户项目已有的文件夹进行**合并**,避免直接覆盖已有的同名文件夹。
150
+ const isPC = getPlatform() === 'pc';
151
+ // isPC === true → 使用 ConferenceMainView
152
+ // isPC === false → 使用 ConferenceMainViewH5
153
+ ```
157
154
 
158
155
  ---
159
156
 
160
- ## 🎯 TUIRoomKit (Atomicx 版本) 核心组件说明
157
+ ## 👥 默认测试用户说明
161
158
 
162
- Agent 在生成代码时,必须了解 TUIRoomKit Atomicx 的核心架构:
159
+ 为方便开发调试,Agent 生成的代码**默认提供 3 个测试用户**:
163
160
 
164
- ### 原子化组件设计理念
161
+ | 用户 ID | 用户名称 | 说明 |
162
+ |---------|---------|------|
163
+ | `user001` | 用户 001 | 测试用户 1(可作为主持人) |
164
+ | `user002` | 用户 002 | 测试用户 2(可作为参会者) |
165
+ | `user003` | 用户 003 | 测试用户 3(可作为参会者) |
165
166
 
166
- TUIRoomKit (Atomicx 版本) 采用原子化组件设计,开发者可以灵活组合这些组件构建个性化的会议界面。
167
+ ### 应用登录流程
167
168
 
168
- ### 核心页面组件
169
+ Agent 生成的完整应用包含以下页面和流程:
169
170
 
170
- | 组件名称 | 说明 | 使用场景 |
171
- |---------|------|---------|
172
- | `home.vue` | 会议入口页面 | 包含设备检测、房间创建/加入功能 |
173
- | `room.vue` | 会议室核心页面 | 集成完整的头部、视频布局、控制栏和侧边面板 |
171
+ ```mermaid
172
+ graph LR
173
+ A[首页 - 用户选择登录] --> B{选择用户}
174
+ B --> C[user001 登录]
175
+ B --> D[user002 登录]
176
+ B --> E[user003 登录]
177
+ C --> F[会议入口页面]
178
+ D --> F
179
+ E --> F
180
+ F --> G[创建会议]
181
+ F --> H[加入会议]
182
+ G --> I[进入会议室]
183
+ H --> I
184
+ ```
174
185
 
175
- ### 核心 Hooks
186
+ ### 首页功能要求
176
187
 
177
- | Hook 名称 | 说明 | 主要用途 |
178
- |---------|------|---------|
179
- | `useLoginState` | 登录状态管理 | 提供 login、setSelfInfo 等方法 |
180
- | `useRoomModal` | 房间弹窗管理 | 提供 handleErrorWithModal 错误处理方法 |
181
- | `useRoomEngine` | 房间引擎管理 | 获取 roomEngine 实例 |
188
+ Agent 生成的首页(Home 页面)必须包含以下功能:
182
189
 
183
- ### 核心 UI 组件(来自 tuikit-atomicx-vue3)
190
+ 1. **用户选择界面**:
191
+ - 提供下拉框或按钮组,让用户选择要登录的测试用户(user001/user002/user003)
192
+ - 显示当前选中用户的 ID 和名称
184
193
 
185
- - **RoomLayoutView**: 视频流布局组件(支持九宫格、侧边栏、顶部栏三种布局)
186
- - **ParticipantViewUI**: 视频流挂件组件(可自定义)
187
- - **UIKitProvider**: 全局 UI 配置组件(主题、语言)
194
+ 2. **登录按钮**:
195
+ - 点击登录按钮后,调用 `login()` 和 `setSelfInfo()` 完成用户登录
196
+ - 登录过程中显示加载状态
188
197
 
189
- ---
198
+ 3. **登录成功后跳转**:
199
+ - 登录成功后自动跳转到会议入口页面
200
+ - 会议入口页面提供「创建会议」和「加入会议」两个入口
190
201
 
191
- ## 🛠️ 集成步骤详解
202
+ ### 会议入口页面功能要求
192
203
 
193
- Agent 必须按照以下步骤执行集成:
204
+ 登录成功后的会议入口页面必须包含:
194
205
 
195
- ### 步骤 1:克隆 GitHub 仓库并拷贝源码
206
+ 1. **显示当前登录用户信息**:展示已登录的用户 ID 和名称
207
+ 2. **创建会议功能**:
208
+ - 输入会议 ID(可选,不输入则自动生成)
209
+ - 输入会议名称(可选)
210
+ - 点击「创建会议」按钮调用 `conference.start()`
211
+ 3. **加入会议功能**:
212
+ - 输入要加入的会议 ID(必填)
213
+ - 点击「加入会议」按钮调用 `conference.join()`
196
214
 
197
- ```bash
198
- # 克隆 TUIRoomKit 仓库
199
- git clone https://github.com/Tencent-RTC/TUIRoomKit.git --depth=1
215
+ ### 代码实现示例
216
+
217
+ #### 测试用户配置
200
218
 
201
- # 进入 PC 端 Vue3 Atomicx 示例目录
202
- cd TUIRoomKit/Web/example/atomicx-vite-vue3-ts
219
+ Agent 在生成代码时,需要为每个测试用户调用 `get_usersig` MCP 工具获取对应的 userSig,并**预先填入**代码中:
203
220
 
204
- # 拷贝核心源码文件到用户项目
205
- # (注意:需要与用户项目已有文件夹合并,而非直接覆盖)
221
+ ```typescript
222
+ // ⚠️ Agent 生成代码时,需要调用 get_usersig 工具 3 次,分别为 user001、user002、user003 获取 userSig
223
+ // 然后将获取到的 SDKAppID 和每个用户的 userSig 填入下方配置
224
+
225
+ const SDKAppID = 0; // Agent 填入从 get_usersig 获取的 SDKAppID
226
+
227
+ // 测试用户列表(包含预生成的 userSig)
228
+ const TEST_USERS = [
229
+ { userId: 'user001', userName: '用户 001', userSig: '' }, // Agent 填入 user001 的 userSig
230
+ { userId: 'user002', userName: '用户 002', userSig: '' }, // Agent 填入 user002 的 userSig
231
+ { userId: 'user003', userName: '用户 003', userSig: '' }, // Agent 填入 user003 的 userSig
232
+ ];
206
233
  ```
207
234
 
208
- **Agent 执行注意事项**:
209
- - 如果用户项目中已存在同名文件夹,必须进行智能合并
210
- - 不得覆盖用户已有的业务代码
235
+ #### 首页用户选择组件示例
236
+
237
+ ```vue
238
+ <template>
239
+ <div class="login-container">
240
+ <h1>TUIRoomKit 音视频会议</h1>
241
+ <div class="user-select">
242
+ <label>选择测试用户:</label>
243
+ <select v-model="selectedUserId">
244
+ <option v-for="user in TEST_USERS" :key="user.userId" :value="user.userId">
245
+ {{ user.userName }} ({{ user.userId }})
246
+ </option>
247
+ </select>
248
+ </div>
249
+ <button @click="handleLogin" :disabled="isLogging">
250
+ {{ isLogging ? '登录中...' : '登录' }}
251
+ </button>
252
+ </div>
253
+ </template>
254
+
255
+ <script setup lang="ts">
256
+ import { ref } from 'vue';
257
+ import { useRouter } from 'vue-router';
258
+ import { useLoginState } from 'tuikit-atomicx-vue3/room';
259
+
260
+ // ⚠️ 以下凭证由 Agent 在代码生成时调用 get_usersig 工具获取并填入
261
+ const SDKAppID = 0; // Agent 填入实际的 SDKAppID
262
+
263
+ const TEST_USERS = [
264
+ { userId: 'user001', userName: '用户 001', userSig: '' }, // Agent 填入 user001 的 userSig
265
+ { userId: 'user002', userName: '用户 002', userSig: '' }, // Agent 填入 user002 的 userSig
266
+ { userId: 'user003', userName: '用户 003', userSig: '' }, // Agent 填入 user003 的 userSig
267
+ ];
268
+
269
+ const router = useRouter();
270
+ const { login, setSelfInfo } = useLoginState();
271
+
272
+ const selectedUserId = ref('user001');
273
+ const isLogging = ref(false);
274
+
275
+ const handleLogin = async () => {
276
+ const user = TEST_USERS.find(u => u.userId === selectedUserId.value);
277
+ if (!user) return;
278
+
279
+ isLogging.value = true;
280
+ try {
281
+ await login({
282
+ userId: user.userId,
283
+ userSig: user.userSig, // 使用预填入的 userSig
284
+ sdkAppId: SDKAppID,
285
+ });
286
+ await setSelfInfo({
287
+ userName: user.userName,
288
+ avatarUrl: '',
289
+ });
290
+ // 登录成功,跳转到会议入口页面
291
+ router.push('/conference-entry');
292
+ } catch (error) {
293
+ console.error('登录失败:', error);
294
+ } finally {
295
+ isLogging.value = false;
296
+ }
297
+ };
298
+ </script>
299
+ ```
211
300
 
212
301
  ---
213
302
 
214
- ### 步骤 2:安装项目依赖
303
+ ## 🛠️ 集成步骤详解
304
+
305
+ ### 步骤 1:安装项目依赖
215
306
 
216
307
  ```bash
217
- # 安装核心依赖
218
- npm install tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/tuiroom-engine-js vue-router
308
+ # npm
309
+ npm install @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
310
+
311
+ # pnpm
312
+ pnpm install @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
219
313
 
220
- # 安装开发环境依赖(如果用户项目尚未支持 TypeScript 和 SCSS)
221
- npm install typescript sass -S -D
314
+ # yarn
315
+ yarn add @tencentcloud/roomkit-web-vue3@latest tuikit-atomicx-vue3 @tencentcloud/uikit-base-component-vue3 @tencentcloud/universal-api
222
316
  ```
223
317
 
224
318
  ---
225
319
 
226
- ### 步骤 3:配置页面路由
227
-
228
- 在用户项目中配置或更新 `src/router/index.ts` 文件。
229
-
230
- **关键配置要点**:
231
- - 配置 `/home` 路由:映射到 `home.vue` 页面(会议入口)
232
- - 配置 `/room` 路由:映射到 `room.vue` 页面(会议室)
233
- - 默认根路径 `/` 重定向到 `/home`
320
+ ### 步骤 2:创建会议页面组件(⚠️ 关键步骤)
321
+
322
+ 创建会议页面组件,**必须在模板中先加载会议主视图组件**,然后再调用 `conference.start()` 或 `conference.join()`:
323
+
324
+ ```vue
325
+ <template>
326
+ <!-- ⚠️ 关键:必须先在模板中加载会议主视图组件 -->
327
+ <ConferenceMainView v-if="isPC"></ConferenceMainView>
328
+ <ConferenceMainViewH5 v-else></ConferenceMainViewH5>
329
+ </template>
330
+
331
+ <script setup lang="ts">
332
+ import { ref, onMounted } from 'vue';
333
+ import { useRoute } from 'vue-router';
334
+ import { ConferenceMainView, ConferenceMainViewH5, conference } from '@tencentcloud/roomkit-web-vue3';
335
+ import { getPlatform } from '@tencentcloud/universal-api';
336
+
337
+ const route = useRoute();
338
+ const isPC = ref(getPlatform() === 'pc');
339
+
340
+ // 从路由参数获取会议信息
341
+ const roomId = route.query.roomId as string;
342
+ const roomName = route.query.roomName as string;
343
+ const action = route.query.action as 'start' | 'join'; // 'start' 或 'join'
344
+
345
+ onMounted(async () => {
346
+ // ⚠️ 确保组件已挂载(模板已渲染)后再调用 conference API
347
+ if (action === 'start') {
348
+ // 发起新会议
349
+ await conference.start({
350
+ roomId: roomId,
351
+ options: {
352
+ roomName: roomName || '我的会议',
353
+ },
354
+ });
355
+ } else if (action === 'join') {
356
+ // 加入已有会议
357
+ await conference.join({
358
+ roomId: roomId,
359
+ });
360
+ }
361
+ });
362
+ </script>
363
+ ```
234
364
 
235
- **Agent 执行要求**:
236
- - ⚠️ 必须严格按照集成文档中的路由配置示例生成
237
- - 如果用户项目中已有 `src/router/index.ts` 文件,需要将路由配置**合并**到已有代码中
238
- - 如果尚未配置路由,需要新建 `src/router/index.ts` 文件
365
+ **⚠️ 强制约束说明**:
366
+ - `conference.start()` 和 `conference.join()` **必须在会议主视图组件加载后调用**
367
+ - 模板中必须包含 `<ConferenceMainView>` 和 `<ConferenceMainViewH5>` 组件
368
+ - 建议在 `onMounted` 生命周期中调用,确保组件已挂载完成
369
+ - 如果模板中缺少会议主视图组件,调用 API 后会议界面将无法正常渲染
239
370
 
240
371
  ---
241
372
 
242
- ### 步骤 4:配置 App.vue 文件
373
+ ### 步骤 3:配置 App.vue 文件
243
374
 
244
- 将集成文档中提供的配置内容合并到用户项目中的 `App.vue` 文件。
375
+ 将以下内容合并到项目的 `App.vue` 文件中:
245
376
 
246
377
  **关键配置要点**:
247
378
  - 配置全局 `UIKitProvider` 组件(设置主题和语言)
248
- - 引入页面路由 `<router-view />`
249
- - 在 `onMounted` 钩子中执行用户登录逻辑(`login` 和 `setSelfInfo`)
250
379
  - 配置全局样式,确保会议界面全屏显示
380
+ - **注意**:用户登录逻辑在首页组件中实现(见「默认测试用户说明」章节)
381
+
382
+ ```vue
383
+ <template>
384
+ <!-- Step 1: 配置全局 UIKitProvider -->
385
+ <UIKitProvider theme="light" language="zh-CN">
386
+ <!-- 您的业务组件(首页 → 会议入口 → 会议室) -->
387
+ <router-view />
388
+ </UIKitProvider>
389
+ </template>
390
+
391
+ <script setup lang="ts">
392
+ import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
393
+ </script>
394
+
395
+ <!-- Step 2: 配置全局样式 -->
396
+ <style>
397
+ html, body {
398
+ padding: 0 !important;
399
+ margin: 0 !important;
400
+ }
401
+
402
+ #app {
403
+ width: 100% !important;
404
+ height: 100% !important;
405
+ padding: 0 !important;
406
+ margin: 0 !important;
407
+ max-width: 100% !important;
408
+ max-height: 100% !important;
409
+ text-align: left !important;
410
+ overflow: hidden;
411
+ }
412
+ </style>
413
+ ```
251
414
 
252
415
  **Agent 执行要求**:
253
- - ⚠️ 必须严格按照集成文档中的 `App.vue` 示例代码生成,不得擅自修改
254
- - 如果用户项目已有 `App.vue` 文件,需要智能合并而非直接覆盖
416
+ - ⚠️ 用户登录逻辑在首页组件中实现,而非 App.vue
417
+ - 必须调用 `get_usersig` MCP 工具为每个测试用户获取 SDKAppID、userId、userSig
255
418
 
256
419
  ---
257
420
 
258
- ### 步骤 5:配置 src/main.ts 文件
421
+ ### 步骤 4:发起新会议(完整示例)
259
422
 
260
- 将集成文档中提供的路由和多语言配置合并到用户项目中的入口文件 `src/main.ts` 中。
423
+ 从会议入口页面跳转到会议室页面并发起会议:
261
424
 
262
- **关键配置要点**:
263
- - 引入并注册 Vue Router
264
- - 配置多语言资源(中文和英文)
265
- - 挂载 Vue 应用
425
+ ```typescript
426
+ // 会议入口页面中的发起会议逻辑
427
+ import { useRouter } from 'vue-router';
428
+
429
+ const router = useRouter();
430
+
431
+ const startConference = () => {
432
+ // 跳转到会议室页面,传递会议参数
433
+ router.push({
434
+ path: '/room',
435
+ query: {
436
+ action: 'start',
437
+ roomId: '123456', // 会议 ID
438
+ roomName: '我的临时会议', // 会议名称
439
+ },
440
+ });
441
+ };
442
+ ```
266
443
 
267
- **Agent 执行要求**:
268
- - ⚠️ 必须严格按照集成文档中的 `main.ts` 示例代码生成,不得擅自修改
269
- - 如果用户项目中的入口文件为 `main.js`,需要修改文件后缀为 `main.ts`
270
- - 如果用户项目已有路由配置,需要智能合并而非直接覆盖
444
+ **⚠️ 注意**:实际的 `conference.start()` 调用在会议室页面组件(步骤 2)的 `onMounted` 中执行,确保会议主视图组件已加载。
271
445
 
272
446
  ---
273
447
 
274
- ### 步骤 6:配置应用信息(src/config/basic-info-config.js)
275
-
276
- 在用户项目目录中找到 `src/config/basic-info-config.js` 配置文件,并进行以下配置:
448
+ ### 步骤 5:加入已有会议(完整示例)
277
449
 
278
- **配置方式**:
279
- - Agent 必须从 MCP 环境变量中读取 `SDKAppID` 和 `SDKSecretKey`
280
- - 这些凭证配置在 MCP 环境中,无需通过 `get_usersig` 工具获取
281
- - 直接将环境变量中的值写入 `basic-info-config.js` 文件
450
+ 从会议入口页面跳转到会议室页面并加入会议:
282
451
 
283
- **⚠️ 安全警告**:
284
- - 本文的 Demo 示例中通过在客户端代码中配置 `SDKSecretKey` 进行鉴权,但 `SDKSecretKey` 很容易被反编译逆向破解,一旦密钥泄露,攻击者就可以盗用您的腾讯云流量
285
- - **该方法仅适合本地跑通 Demo 和功能调试**
286
- - **在正式的生产环境中**,建议在您的服务端生成 UserSig,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig 来进行鉴权
452
+ ```typescript
453
+ // 会议入口页面中的加入会议逻辑
454
+ import { useRouter } from 'vue-router';
455
+
456
+ const router = useRouter();
457
+
458
+ const joinConference = () => {
459
+ // 跳转到会议室页面,传递会议参数
460
+ router.push({
461
+ path: '/room',
462
+ query: {
463
+ action: 'join',
464
+ roomId: '123456', // 要加入的会议 ID
465
+ },
466
+ });
467
+ };
468
+ ```
287
469
 
288
- **Agent 必须告知用户**:
289
- > "⚠️ 当前生成的代码仅适用于本地测试。在正式生产环境中,您必须在服务端生成 UserSig,详见腾讯云文档:https://cloud.tencent.com/document/product/647/17275#formal"
470
+ **⚠️ 注意**:实际的 `conference.join()` 调用在会议室页面组件(步骤 2)的 `onMounted` 中执行,确保会议主视图组件已加载。
290
471
 
291
472
  ---
292
473
 
293
474
  ## 🎨 UI 自定义功能
294
475
 
295
- TUIRoomKit (Atomicx 版本) 支持灵活的 UI 自定义,Agent 可根据用户需求提供以下自定义方案:
296
-
297
476
  ### 1. 主题及语言配置
298
477
 
299
- 通过配置 `App.vue` 中 `UIKitProvider` 的入参,修改主题及语言的默认值:
478
+ 通过配置 `UIKitProvider` 的入参修改主题及语言:
300
479
 
301
480
  | UIKitProvider 参数 | 可选值 | 默认值 |
302
481
  |-------------------|--------|--------|
@@ -311,17 +490,43 @@ TUIRoomKit (Atomicx 版本) 支持灵活的 UI 自定义,Agent 可根据用户
311
490
 
312
491
  ---
313
492
 
314
- ### 2. 房间流布局自定义
493
+ ### 2. 源码导出(深度定制)
494
+
495
+ 如需深度定制 TUIRoomKit 界面,可使用源码导出功能:
496
+
497
+ ```bash
498
+ # 执行源码导出脚本,默认拷贝路径为 ./src/components/RoomKit
499
+ node ./node_modules/@tencentcloud/roomkit-web-vue3/scripts/eject.js
500
+ ```
501
+
502
+ 导出后修改组件引用路径:
503
+
504
+ ```typescript
505
+ // 修改前:从 npm 包引入
506
+ - import { ConferenceMainView, conference } from '@tencentcloud/roomkit-web-vue3';
507
+
508
+ // 修改后:从本地源码引入
509
+ + import { ConferenceMainView, ConferenceMainViewH5, conference } from './components/RoomKit/index.ts';
510
+ ```
511
+
512
+ ---
513
+
514
+ ### 3. 自定义房间流布局
315
515
 
316
- TUIRoomKit 目前支持三种流布局:
317
- - **九宫格布局**(默认):`RoomLayoutTemplate.GridLayout`
318
- - **侧边栏布局**:`RoomLayoutTemplate.SidebarLayout`
319
- - **顶部栏布局**:`RoomLayoutTemplate.CinemaLayout`
516
+ TUIRoomKit 支持三种流布局:
320
517
 
321
- 在 `src/views/room.vue` 中修改默认布局:
518
+ | 布局类型 | 枚举值 | 说明 |
519
+ |---------|--------|------|
520
+ | 九宫格布局 | `RoomLayoutTemplate.GridLayout` | 默认布局 |
521
+ | 侧边栏布局 | `RoomLayoutTemplate.SidebarLayout` | 侧边栏布局 |
522
+ | 顶部栏布局 | `RoomLayoutTemplate.CinemaLayout` | 顶部栏布局 |
523
+
524
+ 导出源码后,在 `RoomKit/views/ConferenceMainView/index.vue` 中修改:
322
525
 
323
526
  ```typescript
324
- // 修改默认视频流布局为侧边栏布局
527
+ import { RoomLayoutTemplate } from 'tuikit-atomicx-vue3/room';
528
+
529
+ // 修改默认布局为侧边栏布局
325
530
  const participantViewLayout = ref(RoomLayoutTemplate.SidebarLayout);
326
531
 
327
532
  function handleLayoutUpdate(layout: RoomLayoutTemplate) {
@@ -331,23 +536,22 @@ function handleLayoutUpdate(layout: RoomLayoutTemplate) {
331
536
 
332
537
  ---
333
538
 
334
- ### 3. 自定义视频流挂件
539
+ ### 4. 自定义视频流挂件
335
540
 
336
- 如需自定义视频流挂件(如用户名显示、音视频状态图标等),可修改以下组件:
541
+ 导出源码后,修改以下组件自定义视频流挂件:
337
542
 
338
543
  ```
339
- src/components/RoomLayoutView/ParticipantViewUI/ParticipantViewUI.vue
544
+ src/components/RoomKit/components/RoomLayoutView/ParticipantViewUI/ParticipantViewUI.vue
340
545
  ```
341
546
 
342
547
  ---
343
548
 
344
- ### 4. 配置用户联系人列表
549
+ ### 5. 配置用户联系人列表
345
550
 
346
- TUIRoomKit 预定会议用户选择列表和会中呼叫用户选择列表默认展示用户关系链列表。批量导入用户关系链请参考以下步骤:
551
+ TUIRoomKit 预定会议和会中呼叫的用户选择列表默认展示用户关系链。批量导入步骤:
347
552
 
348
- **步骤 1**:使用 [账号管理 > 导入多个账号](https://cloud.tencent.com/document/product/269/4919) REST API 接口批量导入用户账号
349
-
350
- **步骤 2**:使用 [好友管理 > 导入好友](https://cloud.tencent.com/document/product/269/8301) REST API 接口批量导入用户关系链
553
+ 1. 使用 [账号管理 > 导入多个账号](https://cloud.tencent.com/document/product/269/4919) REST API 批量导入用户账号
554
+ 2. 使用 [好友管理 > 导入好友](https://cloud.tencent.com/document/product/269/8301) REST API 批量导入用户关系链
351
555
 
352
556
  ---
353
557
 
@@ -355,41 +559,39 @@ TUIRoomKit 预定会议用户选择列表和会中呼叫用户选择列表默认
355
559
 
356
560
  ```mermaid
357
561
  graph TD
358
- A[接收用户需求] --> B[克隆 TUIRoomKit GitHub 仓库]
359
- B --> C[拷贝核心源码文件到用户项目]
360
- C --> D[安装核心依赖: tuikit-atomicx-vue3 等]
361
- D --> E{检测 TypeScript 和 SCSS 支持}
362
- E -->|未安装| F[安装 typescript 和 sass]
363
- E -->|已安装| G[跳过]
364
- F --> H[配置 Vue Router 路由]
365
- G --> H
366
- H --> I[配置 App.vue: UIKitProvider + 用户登录]
367
- I --> J[配置 main.ts: 路由 + 多语言]
368
- J --> K[从 MCP 环境变量读取 SDKAppID 和 SDKSecretKey]
369
- K --> L[配置 basic-info-config.js: SDKAppID + SDKSecretKey]
370
- L --> M{用户需要自定义 UI?}
371
- M -->|是| N[提供 UI 自定义方案: 主题/布局/挂件]
372
- M -->|否| O[使用默认配置]
562
+ A[接收用户需求] --> B[安装 npm 依赖包]
563
+ B --> C{检测 TypeScript 和 SCSS 支持}
564
+ C -->|未安装| D[安装 typescript 和 sass]
565
+ C -->|已安装| E[跳过]
566
+ D --> F[创建首页 - 用户选择登录界面]
567
+ E --> F
568
+ F --> G[配置 3 个测试用户: user001/user002/user003]
569
+ G --> H[调用 get_usersig 为每个用户获取凭证]
570
+ H --> I[创建会议入口页面 - 创建/加入会议]
571
+ I --> J[创建会议室页面组件]
572
+ J --> K[配置 App.vue: UIKitProvider + 全局样式]
573
+ K --> L{用户需要深度定制 UI?}
574
+ L -->|是| M[执行源码导出脚本]
575
+ L -->|否| N[使用默认配置]
576
+ M --> O[提供 UI 自定义方案: 主题/布局/挂件]
373
577
  N --> P[record_result 记录集成结果]
374
578
  O --> P
375
579
  P --> Q[自动启动开发服务器: npm run dev]
376
- Q --> R[提示用户在浏览器中访问本地开发服务器地址]
580
+ Q --> R[提示用户在浏览器中访问并选择用户登录]
377
581
  ```
378
582
 
379
583
  ---
380
584
 
381
585
  ## ✍️ Agent 代码生成示例指令 (Prompts)
382
586
 
383
- 当 Agent 开始编写代码时,应遵循以下语义逻辑:
384
-
385
587
  **基础集成**:
386
- > "按照 TUIRoomKit (Atomicx 版本) 源码接入方式,为我生成一个 Vue 3 音视频会议应用。请从 GitHub 克隆仓库并拷贝核心源码文件,自动配置路由和多语言,并从 MCP 环境变量中读取 SDKAppID 和 SDKSecretKey 配置到 `basic-info-config.js`。启动后提示我在浏览器中访问调试地址。**请务必告知我:当前生成的代码仅适用于本地测试,正式生产环境必须在服务端生成 UserSig。**"
588
+ > "按照 TUIRoomKit (Atomicx 版本) npm 包接入方式,为我生成一个 Vue 3 音视频会议应用。首页提供 3 个测试用户(user001/user002/user003)选择界面,用户选择后点击登录,登录成功后跳转到会议入口页面,提供创建会议和加入会议功能。使用 get_usersig 工具获取每个测试用户的鉴权凭证。启动后提示我在浏览器中访问调试地址。**请务必告知我:当前生成的代码仅适用于本地测试,正式生产环境必须在服务端生成 UserSig。**"
387
589
 
388
- **自定义主题和布局**:
389
- > "按照 TUIRoomKit (Atomicx 版本) 集成,生成一个 Vue 3 会议应用。要求使用暗色主题(dark)和英文语言(en-US),默认流布局为侧边栏布局(SidebarLayout)。"
590
+ **H5 移动端会议**:
591
+ > "按照 TUIRoomKit (Atomicx 版本) 集成,生成一个同时支持 PC 端和 H5 移动端的 Vue 3 会议应用。首页提供测试用户选择和登录功能,使用 getPlatform() 检测平台,PC 端使用 ConferenceMainView,H5 端使用 ConferenceMainViewH5。"
390
592
 
391
- **自定义视频流挂件**:
392
- > "按照 TUIRoomKit (Atomicx 版本) 集成,生成一个 Vue 3 会议应用。需要自定义视频流挂件,在视频流上显示自定义的用户信息和状态图标。"
593
+ **深度定制 UI**:
594
+ > "按照 TUIRoomKit (Atomicx 版本) 集成,生成一个 Vue 3 会议应用。包含用户选择登录流程,需要执行源码导出,自定义视频流布局为侧边栏布局,并自定义视频流挂件样式。"
393
595
 
394
596
  ---
395
597
 
@@ -397,45 +599,48 @@ graph TD
397
599
 
398
600
  | 类别 | 要求 |
399
601
  |------|------|
400
- | **框架版本** | 专门针对 PC 端 Vue 3 项目(不支持 Vue 2.x 和 H5) |
401
- | **接入方式** | 源码接入(从 GitHub 克隆并拷贝核心源码文件) |
602
+ | **框架版本** | Vue 3.4.21 及以上版本 |
603
+ | **平台支持** | PC 端 + H5 移动端(响应式适配,开箱即用) |
604
+ | **接入方式** | npm 包直接安装(推荐);如需深度定制可使用源码导出 |
402
605
  | **文档优先** | 严格遵循工具返回的最新文档指令 |
403
606
  | **静默集成** | 代码编写完成后自动安装依赖并启动开发服务器 |
404
- | **凭证注入** | 从 MCP 环境变量读取凭证,配置在 `basic-info-config.js` 中 |
607
+ | **凭证获取** | 调用 `get_usersig` MCP 工具获取 SDKAppID、userId、userSig |
405
608
  | **安全提示** | ⚠️ 必须告知用户:客户端生成 UserSig 仅适合测试,生产环境必须在服务端生成 |
406
- | **依赖管理** | 自动安装核心依赖和开发环境依赖(TypeScript、SCSS) |
407
- | **路由配置** | 配置 `/home` 和 `/room` 两个核心路由 |
408
609
  | **多语言** | 支持中文(zh-CN)和英文(en-US) |
409
- | **UI 自定义** | 支持主题、布局、视频流挂件等自定义 |
610
+ | **UI 自定义** | 支持主题、布局、视频流挂件等自定义(需源码导出) |
410
611
 
411
612
  ---
412
613
 
413
614
  ## 🎯 Agent 执行检查清单
414
615
 
415
- 在完成代码生成后,Agent 必须确认以下所有项目:
416
-
417
616
  ### 项目初始化
418
- - [ ] 已克隆 TUIRoomKit GitHub 仓库(`git clone https://github.com/Tencent-RTC/TUIRoomKit.git --depth=1`)
419
- - [ ] 已拷贝核心源码文件到用户项目(assets、components、hooks、i18n、utils、config、views)
420
- - [ ] 已安装核心依赖:`tuikit-atomicx-vue3`、`@tencentcloud/uikit-base-component-vue3`、`@tencentcloud/tuiroom-engine-js`、`vue-router`
617
+ - [ ] 已安装核心依赖:`@tencentcloud/roomkit-web-vue3`、`tuikit-atomicx-vue3`、`@tencentcloud/uikit-base-component-vue3`、`@tencentcloud/universal-api`
421
618
  - [ ] 已检测并安装 TypeScript 和 SCSS 开发依赖(如果用户项目未安装)
422
619
 
423
620
  ### 代码生成
424
- - [ ] 已配置 Vue Router:`/home` 和 `/room` 路由
425
- - [ ] 已配置 `App.vue`:UIKitProvider + 用户登录逻辑
426
- - [ ] 已配置 `main.ts`:路由 + 多语言资源
621
+ - [ ] 已创建会议页面组件,使用 `getPlatform()` 检测平台
622
+ - [ ] 已配置 `App.vue`:UIKitProvider + 全局样式
427
623
  - [ ] 组件使用了 `<script setup lang="ts">` 语法
428
624
 
625
+ ### 测试用户与登录流程
626
+ - [ ] 🔴 已配置 3 个默认测试用户:user001、user002、user003
627
+ - [ ] 已创建首页用户选择界面(下拉框或按钮组选择测试用户)
628
+ - [ ] 已实现登录按钮和登录加载状态
629
+ - [ ] 登录成功后跳转到会议入口页面
630
+
631
+ ### 会议入口页面
632
+ - [ ] 已显示当前登录用户信息
633
+ - [ ] 已实现「创建会议」功能(调用 `conference.start()`)
634
+ - [ ] 已实现「加入会议」功能(调用 `conference.join()`)
635
+
429
636
  ### 凭证与登录
430
- - [ ] 🔴 已从 MCP 环境变量中读取 SDKAppID 和 SDKSecretKey
431
- - [ ] 已将 SDKAppID、SDKSecretKey 配置在 `src/config/basic-info-config.js` 中
432
- - [ ] 已在 `App.vue` 中实现 login() 和 setSelfInfo() 登录逻辑
637
+ - [ ] 🔴 已调用 `get_usersig` MCP 工具为每个测试用户获取 SDKAppID、userId、userSig
638
+ - [ ] 已在首页实现 `login()` 和 `setSelfInfo()` 登录逻辑
433
639
  - [ ] ⚠️ **已告知用户**:当前生成的代码仅适用于本地测试,正式生产环境必须在服务端生成 UserSig
434
640
 
435
641
  ### UI 配置
436
642
  - [ ] 已根据用户需求配置主题(light/dark)和语言(zh-CN/en-US)
437
- - [ ] 已根据用户需求配置流布局(九宫格/侧边栏/顶部栏)
438
- - [ ] 如果用户需要自定义视频流挂件,已提供自定义方案
643
+ - [ ] 如果用户需要深度定制,已执行源码导出脚本
439
644
 
440
645
  ### 最终检查
441
646
  - [ ] 已调用 `record_result` 记录集成结果
@@ -450,19 +655,14 @@ graph TD
450
655
 
451
656
  ### 必须使用的工具
452
657
 
453
- #### MCP 环境变量 - 读取鉴权凭证
454
- **用途**:从 MCP 环境变量中读取腾讯云应用凭证:
658
+ #### `get_usersig` - 获取鉴权凭证
659
+ **用途**:从 MCP 环境变量获取腾讯云应用凭证
455
660
  - `SDKAppID`: 应用标识
456
- - `SDKSecretKey`: 应用密钥
457
-
458
- **使用方式**:
459
- - Agent 直接从 MCP 环境变量中读取凭证
460
- - 将凭证写入 `src/config/basic-info-config.js` 文件
461
- - 禁止让用户手动填写或从外部工具获取
661
+ - `userId`: 用户 ID
662
+ - `userSig`: 用户签名
462
663
 
463
664
  **使用约束**:
464
- - ✅ 必须从 MCP 环境变量读取
465
- - ❌ 禁止让用户手动输入
665
+ - ✅ 必须调用此工具获取凭证
466
666
  - ⚠️ 必须告知用户:客户端生成 UserSig 仅适合测试,生产环境必须在服务端生成
467
667
 
468
668
  #### `record_result` - 记录集成结果
@@ -482,6 +682,52 @@ graph TD
482
682
 
483
683
  ---
484
684
 
485
- **适用框架**: Vue 3 (PC 端)
486
- **TUIRoomKit 版本**: tuikit-atomicx-vue3 (Atomicx 版本)
685
+ ## ❓ 常见问题
686
+
687
+ ### TUIRoomKit 在本地开发时正常,但部署到线上后无法采集摄像头/麦克风?
688
+
689
+ **原因分析**:浏览器出于安全和隐私保护考虑,对音视频设备采集有严格限制。只有在安全环境(https://、localhost、file://)下才允许采集。
690
+
691
+ **解决方案**:必须使用 HTTPS 协议部署网页,并确保具备有效的安全证书。
692
+
693
+ ### TUIRoomKit 是否支持使用 iframe 集成?
694
+
695
+ 支持。使用 iframe 集成时,需要配置 allow 属性授予必要权限:
696
+
697
+ ```html
698
+ <iframe allow="microphone; camera; display-capture; display; fullscreen;">
699
+ ```
700
+
701
+ ### TUIRoomKit 是否支持设置内网代理?
702
+
703
+ 支持。请在进房前设置内网代理参数:
704
+
705
+ ```typescript
706
+ import TUIRoomEngine from '@tencentcloud/tuiroom-engine-js';
707
+ import { useRoomEngine } from 'tuikit-atomicx-vue3/room';
708
+
709
+ const { roomEngine } = useRoomEngine();
710
+
711
+ TUIRoomEngine.once('ready', () => {
712
+ const trtcCloud = roomEngine.instance?.getTRTCCloud();
713
+ trtcCloud.callExperimentalAPI(JSON.stringify({
714
+ api: 'setNetworkProxy',
715
+ params: {
716
+ websocketProxy: "wss://proxy.example.com/ws/",
717
+ turnServer: [{
718
+ url: '14.3.3.3:3478',
719
+ username: 'turn',
720
+ credential: 'turn',
721
+ }],
722
+ iceTransportPolicy: 'relay',
723
+ },
724
+ }));
725
+ });
726
+ ```
727
+
728
+ ---
729
+
730
+ **适用框架**: Vue 3.4.21+
731
+ **平台支持**: PC 端 + H5 移动端
732
+ **TUIRoomKit 版本**: @tencentcloud/roomkit-web-vue3 (Atomicx 版本)
487
733
  **构建工具**: Vite (推荐)