@tencentcloud/sdk-mcp 1.3.0 → 1.3.2
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/index.js +5 -1
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/resource/doc/chatuikit/faq/web_sdk/faq.md +117 -0
- package/resource/doc/chatuikit/flutter/client_api_Flutter.md +100 -179
- package/resource/doc/chatuikit/flutter/faq.md +17 -112
- package/resource/doc/chatuikit/flutter/integrate_tuikit_Flutter.md +272 -1281
- package/resource/doc/chatuikit/react/integration.md +516 -48
- package/resource/doc/chatuikit/react/workflow.md +254 -0
- package/resource/doc/chatuikit/uniapp-app/faq.md +0 -0
- package/resource/doc/chatuikit/uniapp-app/integration.md +619 -0
- package/resource/doc/chatuikit/uniapp-app/workflow.md +576 -0
- package/resource/doc/chatuikit/vue/integration.md +511 -129
- package/resource/doc/chatuikit/vue/workflow.md +395 -0
- package/resource/doc/roomkit/vue/features/call-user-to-room.md +256 -0
- package/resource/doc/roomkit/vue/features/device-detection.md +388 -0
- package/resource/doc/roomkit/vue/features/device-state.md +480 -0
- package/resource/doc/roomkit/vue/features/free-beauty-panel.md +238 -0
- package/resource/doc/roomkit/vue/features/room-chat.md +427 -0
- package/resource/doc/roomkit/vue/features/room-participant-state.md +407 -0
- package/resource/doc/roomkit/vue/features/room-state.md +291 -0
- package/resource/doc/roomkit/vue/features/room-view.md +338 -0
- package/resource/doc/roomkit/vue/features/schedule-room.md +349 -0
- package/resource/doc/roomkit/vue/features/screen-share.md +333 -0
- package/resource/doc/roomkit/vue/features/virtual-background.md +281 -0
- package/resource/doc/roomkit/vue/features/workflow.md +553 -0
- package/resource/doc/roomkit/vue/integration.md +479 -0
- package/resource/doc/roomkit/vue/workflow.md +487 -0
- package/resource/doc/tuicallkit/react/api.md +16 -0
- package/resource/doc/tuicallkit/vue/api.md +16 -0
- package/tools/chat/get-web-chat-integration.js +31 -14
- package/tools/chat/get-web-chat-integration.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js +18 -11
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +1 -1
- package/tools/definitions/get_web_room_feature_detail_def.js +95 -0
- package/tools/definitions/get_web_room_feature_detail_def.js.map +1 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +44 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +1 -1
- package/tools/definitions/record_result_def.js +1 -1
- package/tools/definitions/record_result_def.js.map +1 -1
- package/tools/index.js +4 -4
- package/tools/index.js.map +1 -1
- package/tools/live/get-web-live-uikit-integration.js +1 -1
- package/tools/room/get-web-room-feature-detail.js +68 -0
- package/tools/room/get-web-room-feature-detail.js.map +1 -0
- package/tools/room/get-web-room-integration.js +43 -0
- package/tools/room/get-web-room-integration.js.map +1 -0
- package/utils/generate-structured-result.js +2 -2
- package/utils/generate-structured-result.js.map +1 -1
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/doc/chatuikit/react/chat_window_integration.md +0 -83
- package/resource/doc/chatuikit/vue/chat_window_integration.md +0 -131
- package/resource/doc/roomkit/vue/states/device-state.md +0 -316
- package/resource/doc/roomkit/vue/states/login-state.md +0 -51
- package/resource/doc/roomkit/vue/states/room-list-state.md +0 -287
- package/resource/doc/roomkit/vue/states/room-participant-state.md +0 -307
- package/tools/chat/get-web-chat-window-integration.js +0 -28
- package/tools/chat/get-web-chat-window-integration.js.map +0 -1
- package/tools/definitions/get_web_chat_window_integration_def.js +0 -26
- package/tools/definitions/get_web_chat_window_integration_def.js.map +0 -1
- package/tools/definitions/get_web_room_state_detail_def.js +0 -19
- package/tools/definitions/get_web_room_state_detail_def.js.map +0 -1
- package/tools/room/get-web-room-state-detail.js +0 -31
- package/tools/room/get-web-room-state-detail.js.map +0 -1
|
@@ -0,0 +1,576 @@
|
|
|
1
|
+
# Uniapp Chat TUIKit 代码生成工作流指令(打包 App)
|
|
2
|
+
|
|
3
|
+
## 📋 指令目的
|
|
4
|
+
|
|
5
|
+
为 Agent 提供实现 Uniapp Chat TUIKit **核心功能的代码生成蓝图**,并指导 Agent **优先使用工具实时获取的最新文档内容**,专门针对 Uniapp 打包 App 的特殊场景。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🛑 Agent 执行硬性限制 (Guardrails)
|
|
10
|
+
|
|
11
|
+
Agent 在生成代码时必须严格遵守以下指令:
|
|
12
|
+
|
|
13
|
+
### 1. 文档驱动集成
|
|
14
|
+
- 必须严格按照工具返回结果中的 `llm_code_generation_instructions_md` 步骤执行
|
|
15
|
+
- 严格遵循 Uniapp 开发规范和目录结构
|
|
16
|
+
|
|
17
|
+
### 2. 静默执行集成
|
|
18
|
+
- 所有代码编写完成后,最后一步自动安装依赖
|
|
19
|
+
- 提示用户使用 HBuilderX 运行项目(不能自动启动)
|
|
20
|
+
|
|
21
|
+
### 3. 零外部配置
|
|
22
|
+
- 禁止自动创建任何 `config.js` 或 `.env` 文件
|
|
23
|
+
- SDKAppID、UserID 和 UserSig 等关键凭证必须直接注入到登录页面代码变量中
|
|
24
|
+
|
|
25
|
+
### 4. 强制使用 get_usersig 工具获取测试凭证(🔴 硬性约束)
|
|
26
|
+
- **必须强制调用** `get_usersig` 工具获取完整的测试凭证(SDKAppID、UserID、UserSig)
|
|
27
|
+
- **禁止**让用户手动填写 SDKAppID 和 secretKey
|
|
28
|
+
- **禁止**引导用户从控制台获取密钥
|
|
29
|
+
- 登录页面代码中**必须注释掉**所有关于 secretKey 配置的示例代码
|
|
30
|
+
- 登录页面应直接使用 `get_usersig` 工具返回的测试账号和凭证
|
|
31
|
+
- UserID 应保持简洁(禁止拼接动态时间戳以防逻辑出错)
|
|
32
|
+
|
|
33
|
+
**正确示例**:
|
|
34
|
+
```javascript
|
|
35
|
+
// Agent 自动注入 get_usersig 工具返回的测试凭证
|
|
36
|
+
const SDKAppID = 0; // 从 get_usersig 获取
|
|
37
|
+
const userID = 'user001'; // 从 get_usersig 获取
|
|
38
|
+
const userSig = 'eJw1j...'; // 从 get_usersig 获取
|
|
39
|
+
|
|
40
|
+
// ❌ 错误:不要引导用户填写 secretKey
|
|
41
|
+
// const secretKey = '请从控制台获取您的 secretKey'; // 应注释此类代码
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 5. Uniapp 特殊配置
|
|
45
|
+
- 必须正确配置 `manifest.json` 关闭 H5 `treeShaking`
|
|
46
|
+
- Vue2 项目必须创建 `vue.config.js` 并配置 `unplugin-vue2-script-setup`
|
|
47
|
+
- 必须正确配置 `pages.json` 路由和 TabBar
|
|
48
|
+
|
|
49
|
+
### 6. 🔴 强制执行 TUIKit 源码拷贝(核心步骤,不可跳过)
|
|
50
|
+
**⚠️ 这是 Uniapp TUIKit 集成的核心步骤,遗漏将导致项目无法运行!**
|
|
51
|
+
|
|
52
|
+
#### 必须执行的拷贝操作:
|
|
53
|
+
1. **拷贝 TUIKit 组件源码**:从 `node_modules/@tencentcloud/chat-uikit-uniapp/` 到项目根目录 `./TUIKit`
|
|
54
|
+
2. **拷贝 static 静态资源**:从 `node_modules/@tencentcloud/chat-uikit-uniapp/static` 到项目根目录 `./static`
|
|
55
|
+
|
|
56
|
+
#### Agent 强制执行规则:
|
|
57
|
+
- ✅ **必须**在安装依赖后立即执行拷贝命令
|
|
58
|
+
- ✅ **必须**根据操作系统自动选择正确的拷贝命令
|
|
59
|
+
- ✅ **必须**验证拷贝是否成功(检查 `./TUIKit` 目录是否存在)
|
|
60
|
+
- ❌ **禁止**跳过此步骤,即使用户未明确要求
|
|
61
|
+
- ❌ **禁止**让用户手动执行拷贝操作
|
|
62
|
+
|
|
63
|
+
#### 拷贝命令(Agent 自动执行):
|
|
64
|
+
|
|
65
|
+
**macOS/Linux 系统:**
|
|
66
|
+
```bash
|
|
67
|
+
mkdir -p ./TUIKit && rsync -av --exclude={'node_modules','excluded-list.txt'} ./node_modules/@tencentcloud/chat-uikit-uniapp/ ./TUIKit && rsync -av ./node_modules/@tencentcloud/chat-uikit-uniapp/static ./
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Windows 系统:**
|
|
71
|
+
```bash
|
|
72
|
+
xcopy .\node_modules\@tencentcloud\chat-uikit-uniapp .\TUIKit /i /e /exclude:.\node_modules\@tencentcloud\chat-uikit-uniapp\excluded-list.txt && xcopy node_modules\@tencentcloud\chat-uikit-uniapp\static .\static /i /e
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### 拷贝后验证:
|
|
76
|
+
Agent 必须在执行拷贝后确认以下目录结构存在:
|
|
77
|
+
```
|
|
78
|
+
项目根目录/
|
|
79
|
+
├── TUIKit/
|
|
80
|
+
│ ├── components/
|
|
81
|
+
│ │ ├── TUIConversation/
|
|
82
|
+
│ │ ├── TUIChat/
|
|
83
|
+
│ │ ├── TUIContact/
|
|
84
|
+
│ │ ├── TUIGroup/
|
|
85
|
+
│ │ └── TUISearch/
|
|
86
|
+
│ ├── core/
|
|
87
|
+
│ └── debug/
|
|
88
|
+
├── static/
|
|
89
|
+
│ └── images/
|
|
90
|
+
└── ...
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 7. 集成模式支持
|
|
94
|
+
- ✅ **支持 full-featured 模式**(全量功能集成)
|
|
95
|
+
- ✅ **支持 chat-only 模式**(仅集成聊天窗口)
|
|
96
|
+
- 根据用户需求选择合适的集成模式
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 📦 TUIKit 版本与依赖自动化
|
|
101
|
+
|
|
102
|
+
Agent 生成代码后,必须自动执行以下依赖链:
|
|
103
|
+
|
|
104
|
+
### 1. 核心依赖版本推荐
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"@tencentcloud/chat-uikit-uniapp": "latest",
|
|
109
|
+
"unplugin-vue2-script-setup": "latest"
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 2. Vue2 项目额外依赖
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"@vue/composition-api": "latest"
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 3. 🔴 依赖安装后强制执行源码拷贝(核心步骤)
|
|
122
|
+
|
|
123
|
+
**⚠️ 关键约束**:依赖安装完成后,Agent **必须立即自动执行**源码拷贝命令,不得遗漏!
|
|
124
|
+
|
|
125
|
+
#### 执行流程:
|
|
126
|
+
1. 检测当前操作系统(macOS/Linux 或 Windows)
|
|
127
|
+
2. 自动选择对应的拷贝命令
|
|
128
|
+
3. 执行拷贝操作
|
|
129
|
+
4. 验证拷贝结果(确认 `./TUIKit` 和 `./static` 目录已创建)
|
|
130
|
+
5. 如果拷贝失败,必须报错并终止流程
|
|
131
|
+
|
|
132
|
+
#### 拷贝命令:
|
|
133
|
+
|
|
134
|
+
**macOS/Linux 系统(Agent 自动执行):**
|
|
135
|
+
```bash
|
|
136
|
+
mkdir -p ./TUIKit && rsync -av --exclude={'node_modules','excluded-list.txt'} ./node_modules/@tencentcloud/chat-uikit-uniapp/ ./TUIKit && rsync -av ./node_modules/@tencentcloud/chat-uikit-uniapp/static ./
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Windows 系统(Agent 自动执行):**
|
|
140
|
+
```bash
|
|
141
|
+
xcopy .\node_modules\@tencentcloud\chat-uikit-uniapp .\TUIKit /i /e /exclude:.\node_modules\@tencentcloud\chat-uikit-uniapp\excluded-list.txt && xcopy node_modules\@tencentcloud\chat-uikit-uniapp\static .\static /i /e
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### 为什么必须拷贝源码?
|
|
145
|
+
- Uniapp 需要在项目中直接引用 TUIKit 源码文件,而非 node_modules 中的包
|
|
146
|
+
- TUIKit 组件需要在编译时参与 Uniapp 的构建流程
|
|
147
|
+
- Static 资源需要被 Uniapp 正确识别和打包
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 🛠️ 集成模式分发 (Goals)
|
|
152
|
+
|
|
153
|
+
Uniapp 打包 App 支持两种集成模式,Agent 应根据用户需求选择对应的模式。
|
|
154
|
+
|
|
155
|
+
### 模式 1: 全量功能集成 (full-featured)
|
|
156
|
+
|
|
157
|
+
**目标**: 实现类似微信的完整 IM 应用
|
|
158
|
+
|
|
159
|
+
**适用场景**:
|
|
160
|
+
- 构建独立的聊天应用
|
|
161
|
+
- 需要完整的会话管理、通讯录、群组管理功能
|
|
162
|
+
- 作为 App 的核心功能模块
|
|
163
|
+
|
|
164
|
+
**核心组件**:
|
|
165
|
+
- `TUIConversation` (会话列表页)
|
|
166
|
+
- `TUIChat` (聊天页)
|
|
167
|
+
- `TUIContact` (通讯录页)
|
|
168
|
+
- `TUIGroup` (群组管理页)
|
|
169
|
+
- `TUISearch` (云端搜索页)
|
|
170
|
+
- 登录页 (`pages/index/index.vue`)
|
|
171
|
+
- 个人中心页 (`pages/profile/profile.vue`)
|
|
172
|
+
|
|
173
|
+
**TabBar 配置**:
|
|
174
|
+
- 消息 Tab → `TUIKit/components/TUIConversation/index`
|
|
175
|
+
- 通讯录 Tab → `TUIKit/components/TUIContact/index`
|
|
176
|
+
- 个人中心 Tab → `pages/profile/profile`
|
|
177
|
+
|
|
178
|
+
**执行参考**:
|
|
179
|
+
- 参考工具返回结果中实时获取的 `integration.md` 指令
|
|
180
|
+
- 严格按照 Uniapp 目录结构组织文件
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### 模式 2: 仅聊天窗口集成 (chat-only)
|
|
185
|
+
|
|
186
|
+
**目标**: 在现有应用中嵌入聊天窗口功能
|
|
187
|
+
|
|
188
|
+
**适用场景**:
|
|
189
|
+
- 客服咨询场景(用户点击咨询按钮进入聊天页面)
|
|
190
|
+
- 医疗在线问诊(患者与医生一对一沟通)
|
|
191
|
+
- 订单详情页私聊(买家与卖家沟通)
|
|
192
|
+
- 社交应用中的私信功能
|
|
193
|
+
|
|
194
|
+
**核心组件**:
|
|
195
|
+
- `TUIChat` (聊天页) - 仅集成单个聊天组件
|
|
196
|
+
- 登录页 (`pages/index/index.vue`) - 可选,根据应用已有的登录逻辑决定
|
|
197
|
+
|
|
198
|
+
**路由配置**:
|
|
199
|
+
- 仅需配置 TUIChat 聊天页路由
|
|
200
|
+
- 不需要配置 TabBar
|
|
201
|
+
- 通过页面跳转进入聊天页(携带 conversationID 参数)
|
|
202
|
+
|
|
203
|
+
**执行参考**:
|
|
204
|
+
- 参考工具返回结果中实时获取的 `integration.md` 指令
|
|
205
|
+
- TUIChat 组件作为普通页面集成,无需 TabBar 配置
|
|
206
|
+
|
|
207
|
+
**关键差异**:
|
|
208
|
+
- ❌ 不集成会话列表(TUIConversation)
|
|
209
|
+
- ❌ 不集成通讯录(TUIContact)
|
|
210
|
+
- ❌ 不配置 TabBar
|
|
211
|
+
- ✅ 仅集成 TUIChat 聊天组件
|
|
212
|
+
- ✅ 适合作为 App 某个功能页面的一部分
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 🔧 关键配置要点
|
|
218
|
+
|
|
219
|
+
Agent 在生成代码时,必须确保以下配置正确:
|
|
220
|
+
|
|
221
|
+
### 0. Vue 版本检测(🔴 核心前置步骤)
|
|
222
|
+
|
|
223
|
+
**检测方法**:
|
|
224
|
+
- 必须读取项目根目录的 `manifest.json` 文件
|
|
225
|
+
- 检查 `vueVersion` 字段的值来判断 Vue 版本
|
|
226
|
+
- `"2"` 或 `"vue2"` → Vue2 项目
|
|
227
|
+
- `"3"` 或 `"vue3"` → Vue3 项目
|
|
228
|
+
|
|
229
|
+
**manifest.json 配置示例**:
|
|
230
|
+
```json
|
|
231
|
+
{
|
|
232
|
+
"name": "my-uniapp",
|
|
233
|
+
"vueVersion": "2",
|
|
234
|
+
// ...其他配置
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**Agent 执行规则**:
|
|
239
|
+
- ✅ **必须**在生成任何配置文件前先检测 Vue 版本
|
|
240
|
+
- ✅ **必须**读取 `manifest.json` 的 `vueVersion` 字段
|
|
241
|
+
- ✅ 根据检测结果决定是否生成 `vue.config.js`
|
|
242
|
+
- ✅ 根据检测结果决定 `main.js` 中是否引入组合式 API
|
|
243
|
+
- ❌ **禁止**假设或猜测 Vue 版本
|
|
244
|
+
- ❌ **禁止**仅通过 `package.json` 的依赖判断版本
|
|
245
|
+
|
|
246
|
+
**版本差异化配置**:
|
|
247
|
+
|
|
248
|
+
| Vue 版本 | vue.config.js | main.js 组合式 API | 额外依赖 |
|
|
249
|
+
|---------|--------------|-------------------|---------|
|
|
250
|
+
| Vue2 | ✅ 必须生成 | ✅ 必须引入 | @vue/composition-api |
|
|
251
|
+
| Vue3 | ❌ 不需要 | ❌ 内置支持 | 无 |
|
|
252
|
+
|
|
253
|
+
### 1. manifest.json 必需配置
|
|
254
|
+
- 关闭 H5 treeShaking:`h5.optimization.treeShaking.enable: false`
|
|
255
|
+
|
|
256
|
+
### 2. vue.config.js(仅 Vue2 项目)
|
|
257
|
+
- 配置 `unplugin-vue2-script-setup/webpack`
|
|
258
|
+
- 关闭 `fork-ts-checker` 插件
|
|
259
|
+
|
|
260
|
+
### 3. pages.json 必需配置
|
|
261
|
+
- 包含所有 TUIKit 组件路由(TUIConversation、TUIChat、TUIContact、TUIGroup、TUISearch)
|
|
262
|
+
- 包含登录页和个人中心页路由
|
|
263
|
+
- 配置 TabBar 包含三个 Tab(消息、通讯录、个人中心)
|
|
264
|
+
- 设置 TUIChat 的 `softinputMode: "adjustResize"`(仅 app-plus)
|
|
265
|
+
|
|
266
|
+
### 4. App.vue 必需配置
|
|
267
|
+
- 引入并初始化 `TUIChatKit.init()`
|
|
268
|
+
- 设置全局样式确保页面高度和宽度 100%
|
|
269
|
+
|
|
270
|
+
### 5. main.js(仅 Vue2 项目)
|
|
271
|
+
- 引入 `@vue/composition-api`
|
|
272
|
+
- 使用 `Vue.use(VueCompositionAPI)`
|
|
273
|
+
|
|
274
|
+
### 6. 登录页面必需配置(🔴 核心约束)
|
|
275
|
+
|
|
276
|
+
#### 测试凭证注入规则:
|
|
277
|
+
- **必须**直接使用 `get_usersig` 工具返回的测试凭证(SDKAppID、UserID、UserSig)
|
|
278
|
+
- **禁止**从 `../../TUIKit/debug` 引入 `genTestUserSig`
|
|
279
|
+
- **禁止**在代码中保留 secretKey 配置变量
|
|
280
|
+
- **必须注释或删除**文档示例中所有关于用户手动填写 secretKey 的代码
|
|
281
|
+
|
|
282
|
+
#### 登录成功后必须执行的操作(根据集成模式区分):
|
|
283
|
+
|
|
284
|
+
**full-featured 模式**:
|
|
285
|
+
1. 调用 `TUIConversationService.getConversationProfile()` 创建默认会话
|
|
286
|
+
2. 跳转到会话列表页 `/TUIKit/components/TUIConversation/index`
|
|
287
|
+
|
|
288
|
+
**chat-only 模式**:
|
|
289
|
+
1. 调用 `TUIConversationService.switchConversation()` 切换到目标会话
|
|
290
|
+
2. 跳转到聊天页 `/TUIKit/components/TUIChat/index`(无需携带 conversationID 参数)
|
|
291
|
+
|
|
292
|
+
**Agent 代码生成规则**:
|
|
293
|
+
|
|
294
|
+
1. 首先调用 `get_usersig` 工具获取测试凭证
|
|
295
|
+
2. 将获取到的 SDKAppID、UserID、UserSig 直接注入到登录页代码中
|
|
296
|
+
3. 注释掉示例代码中关于 secretKey 的部分,添加注释说明禁止在客户端配置密钥
|
|
297
|
+
4. **根据集成模式添加对应的会话处理逻辑**
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
#### 创建/切换默认会话的引导(根据集成模式)
|
|
302
|
+
|
|
303
|
+
**full-featured 模式 - 创建默认会话**:
|
|
304
|
+
|
|
305
|
+
```javascript
|
|
306
|
+
import { TUIConversationService } from '@tencentcloud/chat-uikit-engine-lite';
|
|
307
|
+
|
|
308
|
+
// 在登录成功的回调中添加
|
|
309
|
+
await TUIConversationService.getConversationProfile('C2Cadministrator');
|
|
310
|
+
// 然后跳转到会话列表页
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**说明**:
|
|
314
|
+
- `getConversationProfile()` 用于获取并创建会话
|
|
315
|
+
- 用户首次登录时会话列表会显示一个默认会话,而不是空白页面
|
|
316
|
+
- 会话 ID 格式:`C2C{userID}` 表示单聊,`GROUP{groupID}` 表示群聊
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
**chat-only 模式 - 切换到目标会话**:
|
|
321
|
+
|
|
322
|
+
```javascript
|
|
323
|
+
import { TUIConversationService } from '@tencentcloud/chat-uikit-engine-lite';
|
|
324
|
+
|
|
325
|
+
// 在登录成功的回调中添加
|
|
326
|
+
await TUIConversationService.switchConversation('C2Cadministrator');
|
|
327
|
+
// 然后跳转到 TUIChat/index 页面,无需携带 conversationID 参数
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**说明**:
|
|
331
|
+
- `switchConversation()` 用于切换到指定会话
|
|
332
|
+
- 切换会话后,TUIChat 组件会自动加载该会话的聊天内容
|
|
333
|
+
- 跳转到 `/TUIKit/components/TUIChat/index` 时**无需**在 URL 中携带 conversationID
|
|
334
|
+
- 会话 ID 格式:`C2C{userID}` 表示单聊,`GROUP{groupID}` 表示群聊
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
**Agent 应将对应的逻辑集成到登录页面的登录成功处理流程中。**
|
|
339
|
+
|
|
340
|
+
### 7. 个人中心页面必需配置(仅 full-featured 模式)
|
|
341
|
+
- 显示用户头像、昵称、ID
|
|
342
|
+
- 提供退出登录功能
|
|
343
|
+
- 退出后跳转到登录页
|
|
344
|
+
- **注意**:chat-only 模式不需要个人中心页面
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 🔄 完整自动化流程总结
|
|
349
|
+
|
|
350
|
+
```mermaid
|
|
351
|
+
graph TD
|
|
352
|
+
A[接收用户需求] --> B{检测是否为 Uniapp App}
|
|
353
|
+
B -->|是| C{检查集成模式}
|
|
354
|
+
B -->|否| Z[引导使用其他框架]
|
|
355
|
+
C -->|full-featured| E1[调用 get_web_chat_uikit_integration 获取全量文档]
|
|
356
|
+
C -->|chat-only| E2[调用 get_web_chat_uikit_integration 获取 chat-only 文档]
|
|
357
|
+
E1 --> F[检测项目已存在]
|
|
358
|
+
E2 --> F
|
|
359
|
+
F --> F1[🔴 读取 manifest.json 检测 Vue 版本]
|
|
360
|
+
F1 --> G[创建 package.json 并安装依赖]
|
|
361
|
+
G --> H{🔴 检测操作系统}
|
|
362
|
+
H -->|macOS| I[🔴 强制执行 macOS 拷贝命令]
|
|
363
|
+
H -->|Windows| J[🔴 强制执行 Windows 拷贝命令]
|
|
364
|
+
I --> I1[验证 TUIKit 和 static 目录已创建]
|
|
365
|
+
J --> J1[验证 TUIKit 和 static 目录已创建]
|
|
366
|
+
I1 --> K[根据文档生成配置文件]
|
|
367
|
+
J1 --> K
|
|
368
|
+
K --> L{根据检测到的 Vue 版本}
|
|
369
|
+
L -->|Vue2| M[生成 vue.config.js 和 main.js]
|
|
370
|
+
L -->|Vue3| N[仅生成 main.js]
|
|
371
|
+
M --> O{根据集成模式生成对应页面}
|
|
372
|
+
N --> O
|
|
373
|
+
O -->|full-featured| O1[生成全量页面+TabBar配置]
|
|
374
|
+
O -->|chat-only| O2[仅生成 TUIChat 页面+登录页]
|
|
375
|
+
O1 --> P[🔴 强制调用 get_usersig 获取完整测试凭证]
|
|
376
|
+
O2 --> P
|
|
377
|
+
P --> Q[注入 SDKAppID/UserID/UserSig 到登录页 + 注释 secretKey 代码]
|
|
378
|
+
Q --> Q1{检测集成模式}
|
|
379
|
+
Q1 -->|full-featured| Q2[添加 getConversationProfile 创建默认会话]
|
|
380
|
+
Q1 -->|chat-only| Q3[添加 switchConversation 切换会话]
|
|
381
|
+
Q2 --> R[record_result 记录集成结果]
|
|
382
|
+
Q3 --> R
|
|
383
|
+
R --> S[提示用户使用 HBuilderX 运行]
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## ✍️ Agent 代码生成示例指令 (Prompts)
|
|
389
|
+
|
|
390
|
+
⚠️ **重要前提**: 用户需要提前通过 HBuilderX 手动创建 Uniapp 项目(选择 Vue2 或 Vue3 模板)。
|
|
391
|
+
|
|
392
|
+
当用户提供已创建的项目后,Agent 应根据用户需求选择集成模式:
|
|
393
|
+
|
|
394
|
+
**全量功能集成 (full-featured)**:
|
|
395
|
+
> "在现有的 Uniapp 项目中集成 Chat TUIKit,使用 `full-featured` 模式。请根据工具返回的实时文档内容生成所有必需的配置文件和页面,自动配置 TabBar,注入由 `get_usersig` 工具获取的测试凭证。如果是 Vue2 项目需要额外配置 vue.config.js 和引入组合式 API。"
|
|
396
|
+
|
|
397
|
+
**仅聊天窗口集成 (chat-only)**:
|
|
398
|
+
> "在现有的 Uniapp 项目中集成 Chat TUIKit,使用 `chat-only` 模式。请根据工具返回的实时文档内容仅集成 TUIChat 聊天组件,不配置 TabBar,注入由 `get_usersig` 工具获取的测试凭证。如果是 Vue2 项目需要额外配置 vue.config.js 和引入组合式 API。"
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## 📝 关键要点总结
|
|
403
|
+
|
|
404
|
+
| 类别 | 要求 |
|
|
405
|
+
|------|------|
|
|
406
|
+
| **文档优先** | 严格遵循工具返回的 integration.md 指令 |
|
|
407
|
+
| **平台限制** | 仅支持 Uniapp 打包 App,不支持微信小程序 |
|
|
408
|
+
| **功能模式** | 支持 full-featured(全量)和 chat-only(仅聊天) |
|
|
409
|
+
| **源码拷贝** | 🔴 强制执行拷贝命令,创建 ./TUIKit 目录(核心步骤) |
|
|
410
|
+
| **静态资源** | 🔴 强制拷贝 static 资源到项目根目录(核心步骤) |
|
|
411
|
+
| **拷贝验证** | 必须验证 TUIKit 和 static 目录已成功创建 |
|
|
412
|
+
| **路由配置** | 必须配置 pages.json 包含所有 TUIKit 页面 |
|
|
413
|
+
| **TabBar 配置** | 必须配置消息、通讯录、个人中心三个 Tab |
|
|
414
|
+
| **特殊配置** | manifest.json 关闭 treeShaking |
|
|
415
|
+
| **Vue2 配置** | vue.config.js + 引入组合式 API |
|
|
416
|
+
| **凭证获取** | 🔴 强制使用 get_usersig 工具获取测试凭证 |
|
|
417
|
+
| **凭证注入** | 注入 SDKAppID/UserID/UserSig,注释 secretKey 代码 |
|
|
418
|
+
| **运行方式** | 使用 HBuilderX 运行,不能自动启动 |
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## ⚠️ 重要安全提示
|
|
423
|
+
|
|
424
|
+
**Debug 文件的作用和安全警告:**
|
|
425
|
+
|
|
426
|
+
- `TUIKit/debug/GenerateTestUserSig.js` 用于本地生成 UserSig,**仅适合开发调试**
|
|
427
|
+
- ⚠️ **绝对不能用于生产环境**
|
|
428
|
+
- 生产环境必须在后端生成 UserSig,参考:[服务端生成 UserSig](https://cloud.tencent.com/document/product/269/32688)
|
|
429
|
+
- 密钥泄露会导致腾讯云流量被盗用
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## 📞 扩展功能:音视频通话 (TUICallKit)
|
|
434
|
+
|
|
435
|
+
### 运行平台选择
|
|
436
|
+
|
|
437
|
+
| 运行平台 | 集成方案 | 文档链接 |
|
|
438
|
+
|---------|---------|---------|
|
|
439
|
+
| 移动端应用 (App) | uni-app (客户端) TUICallKit | [音视频通话(客户端)](https://cloud.tencent.com/document/product/269/83857) |
|
|
440
|
+
|
|
441
|
+
### 集成注意事项
|
|
442
|
+
|
|
443
|
+
- TUIKit 默认不包含 TUICallKit
|
|
444
|
+
- 需要单独按照文档集成音视频通话功能
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## 🔗 相关工具参考
|
|
449
|
+
|
|
450
|
+
### 🔴 必须使用的工具
|
|
451
|
+
|
|
452
|
+
#### `get_usersig` - 获取完整测试凭证(强制调用)
|
|
453
|
+
**用途**:生成完整的测试账号和鉴权凭证,包括:
|
|
454
|
+
- `SDKAppID`: 应用标识
|
|
455
|
+
- `userID`: 测试用户 ID
|
|
456
|
+
- `userSig`: 用户签名(有效期 7 天)
|
|
457
|
+
|
|
458
|
+
**调用时机**:在生成登录页面代码之前必须调用
|
|
459
|
+
|
|
460
|
+
**使用约束**:
|
|
461
|
+
- ✅ 必须使用工具返回的完整凭证
|
|
462
|
+
- ❌ 禁止让用户手动填写 SDKAppID 和 secretKey
|
|
463
|
+
- ❌ 禁止在登录页代码中保留 secretKey 配置示例
|
|
464
|
+
|
|
465
|
+
#### `record_result` - 记录集成结果
|
|
466
|
+
**用途**:记录集成过程和结果,用于统计和分析
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
## 🎯 Agent 执行检查清单
|
|
471
|
+
|
|
472
|
+
在完成代码生成后,Agent 必须确认以下所有项目:
|
|
473
|
+
|
|
474
|
+
- [ ] 已确认用户通过 HBuilderX 创建了 Uniapp 项目
|
|
475
|
+
- [ ] 🔴 已读取 `manifest.json` 的 `vueVersion` 字段检测 Vue 版本
|
|
476
|
+
- [ ] 已创建 package.json 并安装 @tencentcloud/chat-uikit-uniapp
|
|
477
|
+
- [ ] 🔴 已强制执行拷贝命令将 TUIKit 源码复制到 ./TUIKit 目录(核心步骤)
|
|
478
|
+
- [ ] 🔴 已强制拷贝 static 资源到项目根目录(核心步骤)
|
|
479
|
+
- [ ] 🔴 已验证 ./TUIKit 和 ./static 目录成功创建并包含必要文件
|
|
480
|
+
- [ ] 已配置 manifest.json 关闭 treeShaking
|
|
481
|
+
- [ ] 如果是 Vue2,已创建 vue.config.js
|
|
482
|
+
- [ ] 如果是 Vue2,已在 main.js 引入组合式 API
|
|
483
|
+
- [ ] 已配置 pages.json 包含所有必需路由
|
|
484
|
+
- [ ] 已配置 TabBar 包含三个 Tab
|
|
485
|
+
- [ ] 已配置 App.vue 初始化 TUIChatKit
|
|
486
|
+
- [ ] 🔴 已强制调用 get_usersig 工具获取完整测试凭证
|
|
487
|
+
- [ ] 已将 SDKAppID、UserID、UserSig 注入到登录页面代码
|
|
488
|
+
- [ ] 已注释或删除登录页面中关于 secretKey 配置的示例代码
|
|
489
|
+
- [ ] 已根据集成模式添加对应的会话处理逻辑:
|
|
490
|
+
- full-featured:添加 `getConversationProfile` 创建默认会话
|
|
491
|
+
- chat-only:添加 `switchConversation` 切换到目标会话
|
|
492
|
+
- [ ] 已根据文档创建个人中心页面
|
|
493
|
+
- [ ] 已调用 record_result 记录结果
|
|
494
|
+
- [ ] 已提示用户使用 HBuilderX 运行项目
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 📚 参考信息
|
|
499
|
+
|
|
500
|
+
- [chat-uikit-uniapp GitHub 源码](https://github.com/TencentCloud/chat-uikit-uniapp)
|
|
501
|
+
- [ChatEngine API 手册](https://web.sdk.qcloud.com/im/doc/chat-engine-lite/index.html)
|
|
502
|
+
- [服务端生成 UserSig](https://cloud.tencent.com/document/product/269/32688)
|
|
503
|
+
- [uni-app 官方文档](https://uniapp.dcloud.net.cn/)
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## 💡 常见问题处理
|
|
508
|
+
|
|
509
|
+
### 1. 源码拷贝失败排查
|
|
510
|
+
|
|
511
|
+
**问题现象**:项目运行时提示找不到 TUIKit 组件
|
|
512
|
+
|
|
513
|
+
**原因**:Agent 未执行源码拷贝命令或拷贝失败
|
|
514
|
+
|
|
515
|
+
**解决方案**:
|
|
516
|
+
1. 确认 `./TUIKit` 目录是否存在
|
|
517
|
+
2. 确认 `./static/images` 目录是否存在
|
|
518
|
+
3. 如果目录不存在,手动执行拷贝命令(参见上文命令)
|
|
519
|
+
4. 如果使用 Windows 且 xcopy 失败,检查路径分隔符是否正确
|
|
520
|
+
|
|
521
|
+
### 2. 首次登录会话处理
|
|
522
|
+
|
|
523
|
+
#### full-featured 模式 - 会话列表为空
|
|
524
|
+
|
|
525
|
+
**问题现象**:用户首次登录后会话列表是空的,体验不佳
|
|
526
|
+
|
|
527
|
+
**原因**:未创建任何会话
|
|
528
|
+
|
|
529
|
+
**解决方案**:
|
|
530
|
+
在登录成功回调中添加创建默认会话的逻辑:
|
|
531
|
+
```javascript
|
|
532
|
+
import { TUIConversationService } from '@tencentcloud/chat-uikit-engine-lite';
|
|
533
|
+
|
|
534
|
+
// 登录成功后
|
|
535
|
+
await TUIConversationService.getConversationProfile('C2Cadministrator');
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
**说明**:
|
|
539
|
+
- `getConversationProfile` 用于获取并创建会话
|
|
540
|
+
- `C2Cadministrator` 表示与系统管理员 `administrator` 的单聊会话
|
|
541
|
+
- 用户首次登录就能看到一个默认会话,可以立即开始聊天
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
#### chat-only 模式 - 进入聊天页无内容
|
|
546
|
+
|
|
547
|
+
**问题现象**:登录后跳转到聊天页,但没有加载任何会话内容
|
|
548
|
+
|
|
549
|
+
**原因**:未切换到目标会话
|
|
550
|
+
|
|
551
|
+
**解决方案**:
|
|
552
|
+
在登录成功回调中添加切换会话的逻辑:
|
|
553
|
+
```javascript
|
|
554
|
+
import { TUIConversationService } from '@tencentcloud/chat-uikit-engine-lite';
|
|
555
|
+
|
|
556
|
+
// 登录成功后
|
|
557
|
+
await TUIConversationService.switchConversation('C2Cadministrator');
|
|
558
|
+
// 然后跳转到 TUIChat/index,无需携带 conversationID 参数
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
**说明**:
|
|
562
|
+
- `switchConversation` 用于切换到指定会话
|
|
563
|
+
- 切换会话后,TUIChat 组件会自动加载该会话的聊天内容
|
|
564
|
+
- 跳转到聊天页时**无需**在 URL 中携带 conversationID 参数
|
|
565
|
+
- 会话 ID 格式:`C2C{userID}` (单聊)或 `GROUP{groupID}`(群聊)
|
|
566
|
+
|
|
567
|
+
### 3. Chat 实例类型
|
|
568
|
+
即使打包为 App,Chat 实例仍是 **web 实例**,而非 native 实例。
|
|
569
|
+
|
|
570
|
+
### 4. 运行方式
|
|
571
|
+
必须使用 HBuilderX:**运行** > **运行到手机或模拟器** > **运行到"指定"基座**
|
|
572
|
+
|
|
573
|
+
---
|
|
574
|
+
|
|
575
|
+
**适用平台**: Uniapp 打包 App(iOS/Android)
|
|
576
|
+
**TUIKit 版本**: @tencentcloud/chat-uikit-uniapp ≥ 3.2.0
|