@tencentcloud/sdk-mcp 1.6.8 → 1.7.1
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 +36 -0
- package/README.md +59 -35
- package/knowledge/build-index.js +28 -4
- package/knowledge/chunker.js +82 -14
- package/knowledge/chunking-policy.js +100 -0
- package/knowledge/doc-url-resolver.js +70 -19
- package/knowledge/frontmatter-meta.js +167 -0
- package/knowledge/path-meta.js +28 -6
- package/knowledge/search/exact-lookup.js +126 -125
- package/knowledge/search/filter-pool.js +12 -29
- package/knowledge/search/framework-fallback.js +22 -0
- package/knowledge/search/intent-router.js +29 -0
- package/knowledge/search/l1-enrich.js +159 -0
- package/knowledge/search/query-normalizer.js +63 -3
- package/knowledge/search/search-core.js +410 -0
- package/knowledge/search/search-knowledge.js +419 -377
- package/knowledge/search/search-message.js +88 -0
- package/knowledge/search/search-pass.js +428 -0
- package/knowledge/search/search-types.js +1 -0
- package/knowledge/search/url-row-idf.js +120 -0
- package/knowledge/search/url-row-scorer.js +337 -0
- package/package.json +3 -1
- package/resource/index/manifest.json +1 -1
- package/resource/integration/callkit/preset/flutter/integration.md +7 -3
- package/resource/integration/callkit/preset/ios/integration.md +1 -0
- package/resource/integration/chat/preset/android/integration.md +1 -0
- package/resource/integration/chat/preset/flutter/integration.md +111 -10
- package/resource/integration/chat/preset/ios/integration.md +1 -0
- package/resource/integration/chat/preset/react/integration.md +1 -0
- package/resource/integration/chat/preset/uni-app/integration.md +1 -0
- package/resource/integration/chat/preset/vue/integration.md +1 -0
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +1 -0
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +12 -10
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +14 -14
- package/resource/integration/roomkit/preset/vue/integration.md +1 -0
- package/resource/knowledge/callkit/best-practice/callkit-miniprogram/uniapp-shrink.md +64 -0
- package/resource/knowledge/callkit/best-practice/common/call-autoplay-blocked.md +81 -0
- package/resource/knowledge/callkit/best-practice/common/call-message-in-chat.md +84 -0
- package/resource/knowledge/callkit/best-practice/common/call-vs-calls.md +114 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-call-flow.md +128 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-log-level.md +72 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-engine-instance.md +87 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-roomid.md +83 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-limitations.md +37 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-user-register-and-kicked.md +103 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +1 -0
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +1 -0
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1 -0
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1 -0
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1 -0
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1 -0
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +1 -1
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +1 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1 -0
- package/resource/knowledge/callkit/faq/flutter.md +1 -0
- package/resource/knowledge/callkit/faq/uniapp-app.md +1 -0
- package/resource/knowledge/callkit/preset/react/api.md +1 -150
- package/resource/knowledge/callkit/preset/vue/api.md +1 -38
- package/resource/knowledge/chat/best-practice/common/avchatroom-message-loss-diagnosis.md +71 -0
- package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md +67 -0
- package/resource/knowledge/chat/best-practice/common/image-message-url-lifecycle.md +63 -0
- package/resource/knowledge/chat/best-practice/common/login-repeat-2025-diagnosis.md +65 -0
- package/resource/knowledge/chat/best-practice/common/message-read-report-and-receipt.md +72 -0
- package/resource/knowledge/chat/best-practice/common/message-receive-event.md +70 -0
- package/resource/knowledge/chat/best-practice/common/message-risk-error-and-render.md +69 -0
- package/resource/knowledge/chat/best-practice/common/message-unread-count.md +71 -0
- package/resource/knowledge/chat/best-practice/miniprogram/audio-message-send.md +118 -0
- package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +67 -0
- package/resource/knowledge/chat/best-practice/miniprogram/media-upload-fail-diagnosis.md +68 -0
- package/resource/knowledge/chat/best-practice/web/audio-message-send.md +123 -0
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +1 -0
- package/resource/knowledge/chat/preset/android/features/language.md +1 -0
- package/resource/knowledge/chat/preset/android/features/message-input.md +1 -0
- package/resource/knowledge/chat/preset/android/features/message-list.md +1 -0
- package/resource/knowledge/chat/preset/android-view/integration.md +1 -0
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +1 -0
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +1 -0
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +1 -0
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +1 -0
- package/resource/knowledge/chat/preset/ios/features/message-input.md +1 -0
- package/resource/knowledge/chat/preset/ios/features/message-list.md +1 -0
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +1 -0
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +1 -0
- package/resource/knowledge/chat/preset/react/features/message-input.md +61 -3
- package/resource/knowledge/chat/preset/react/features/message-list.md +7 -0
- package/resource/knowledge/chat/preset/vue/features/message-input.md +58 -5
- package/resource/knowledge/chat/preset/vue/features/message-list.md +7 -0
- package/resource/knowledge/chat/urls/product.md +8 -8
- package/resource/knowledge/chat/urls/restapi.md +3 -3
- package/resource/knowledge/chat/urls/sdk/android.md +5 -5
- package/resource/knowledge/chat/urls/sdk/flutter.md +5 -5
- package/resource/knowledge/chat/urls/sdk/ios.md +5 -5
- package/resource/knowledge/chat/urls/sdk/web.md +8 -8
- package/resource/knowledge/chat/urls/webhook.md +11 -17
- package/resource/knowledge/livekit/best-practice/android/voice-room-anchor-start.md +124 -0
- package/resource/knowledge/livekit/best-practice/common/admin-take-seat.md +73 -0
- package/resource/knowledge/livekit/best-practice/common/audience-leave-live.md +81 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-no-audio-troubleshoot.md +100 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-seat-list-change.md +65 -0
- package/resource/knowledge/livekit/best-practice/flutter/voice-room-anchor-start.md +126 -0
- package/resource/knowledge/livekit/best-practice/ios/voice-room-anchor-start.md +130 -0
- package/resource/knowledge/push/config/harmonyos.md +1 -1
- package/resource/knowledge/push/config/ios.md +2 -2
- package/resource/knowledge/push/config/react-native.md +1 -0
- package/resource/knowledge/push/config/unity.md +1 -0
- package/resource/knowledge/push/config/unreal-engine.md +1 -0
- package/resource/knowledge/push/integration/android.md +17 -16
- package/resource/knowledge/push/integration/donut.md +2 -2
- package/resource/knowledge/push/integration/flutter.md +4 -3
- package/resource/knowledge/push/integration/harmonyos.md +1 -1
- package/resource/knowledge/push/integration/ios.md +4 -3
- package/resource/knowledge/push/integration/react-native.md +1 -1
- package/resource/knowledge/push/integration/uni-app.md +1 -0
- package/resource/knowledge/push/integration/unity.md +4 -4
- package/resource/knowledge/push/integration/unreal-engine.md +37 -35
- package/resource/knowledge/roomkit/best-practice/common/room-ghost-member.md +75 -0
- package/resource/knowledge/roomkit/best-practice/common/room-limit-and-multi.md +88 -0
- package/resource/knowledge/roomkit/best-practice/common/room-screen-share-preview.md +87 -0
- package/resource/knowledge/roomkit/best-practice/common/room-status-after-all-leave.md +73 -0
- package/resource/knowledge/roomkit/best-practice/vue/room-uikit-vs-atomicx.md +115 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +1 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +1 -0
- package/resource/knowledge/roomkit/preset/react/integration.md +1 -0
- package/resource/knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md +2 -0
- package/resource/knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md +2 -0
- package/resource/knowledge/trtc/android/TRTCCloud.md +1 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +1 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +1 -0
- package/server.js +9 -4
- package/streamable-http.js +19 -54
- package/tools/common/search_trtc_knowledge.js +24 -12
- package/tools/definitions/finalize_answer_def.js +2 -2
- package/tools/definitions/integration-boundary.js +2 -1
- package/tools/definitions/search_trtc_knowledge_def.js +5 -3
- package/utils/fetch-doc-content.js +198 -0
- package/utils/preflight-route.js +197 -0
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
- package/cursor-setting.png +0 -0
- package/mcp-server-prompt.png +0 -0
- package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +0 -80
- package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +0 -20
- package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +0 -116
- package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +0 -469
- package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +0 -581
- package/resource/knowledge/callkit/preset/web/api.md +0 -79
- package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +0 -16
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
本文将介绍如何快速接入 TUICallKit 组件。您可以在 10 分钟内完成以下关键步骤,最终获得一个功能完备的音视频通话界面。
|
|
2
2
|
|
|
3
|
+
> **说明:**
|
|
4
|
+
> 您也可以使用 TRTC Agent Skill 辅助将 TUICallKit 接入现有 Flutter 项目。安装后,在项目目录中告诉 AI “帮我在当前 Flutter 项目中接入音视频通话”,AI 将分析项目结构,并协助完成依赖、工程配置、登录、通话入口接入及验证。
|
|
5
|
+
>
|
|
6
|
+
|
|
3
7
|
## 准备工作
|
|
4
8
|
|
|
5
9
|
### 环境要求
|
|
@@ -8,7 +12,7 @@ Flutter 3.24.0、Dart 3.5.0 及以上版本。
|
|
|
8
12
|
|
|
9
13
|
### 开通服务
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
在使用腾讯云提供的音视频服务前,您需要前往控制台,为应用开通音视频服务。具体步骤详情参见 开通服务。开通服务后,请记录 `SDKAppID` 和 `SDKSecretKey`,在后续的步骤(登录)中会用到。
|
|
12
16
|
|
|
13
17
|
## 快速接入
|
|
14
18
|
|
|
@@ -25,7 +29,7 @@ flutter pub add tencent_calls_uikit
|
|
|
25
29
|
【Android】
|
|
26
30
|
1. 由于 SDK 内部使用了 Java 反射机制(或特性),需要将部分 SDK 类加入不进行混淆处理的名单。
|
|
27
31
|
|
|
28
|
-
-
|
|
32
|
+
- 请在工程的 `android/app/` 目录下找到 `build.gradle.kts`(或 `build.gradle` )文件中配置并开启混淆规则:
|
|
29
33
|
|
|
30
34
|
【build.gradle.kts】
|
|
31
35
|
``` java
|
|
@@ -152,7 +156,7 @@ void login() async {
|
|
|
152
156
|
|userSig|String|一种安全保护签名,用于对用户进行登录鉴权认证,确认用户是否真实,阻止恶意攻击者盗用您的云服务使用权。|
|
|
153
157
|
|
|
154
158
|
> **说明:**
|
|
155
|
-
> - **开发环境**:如果您在本地开发调试阶段,可以采用本地 `GenerateTestUserSig.genTestSig
|
|
159
|
+
> - **开发环境**:如果您在本地开发调试阶段,可以采用本地 `GenerateTestUserSig.genTestSig` 函数生成 userSig。该方法中 secretKey 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。
|
|
156
160
|
> - **生产环境**:如果您的项目要发布上线,请采用 服务端生成 UserSig 的方式。
|
|
157
161
|
|
|
158
162
|
### 步骤4:设置昵称和头像 [可选]
|
|
@@ -2,11 +2,12 @@ TUIKit Flutter 是基于腾讯云 IM SDK 的一套 Flutter UI 组件库,提供
|
|
|
2
2
|
|
|
3
3
|
## 问卷反馈
|
|
4
4
|
|
|
5
|
+
> **说明:**
|
|
5
6
|
> **花 30 秒,帮 Flutter TUIKit 变得更好用!**
|
|
6
7
|
>
|
|
7
|
-
>
|
|
8
|
+
> 正在接入、已经跑通、还是卡住了?都欢迎您填写 [Flutter TUIKit 接入体验问卷](https://wj.qq.com/s2/27299252/ff84/)**。**
|
|
8
9
|
>
|
|
9
|
-
>
|
|
10
|
+
> **您的每一条卡点反馈和改进建议,官方都会及时跟进处理**。
|
|
10
11
|
>
|
|
11
12
|
|
|
12
13
|
## 关键概念
|
|
@@ -19,12 +20,16 @@ TUIKit 提供了一套完整的即时通信 UI 组件,向下依赖 AtomicXCore
|
|
|
19
20
|
- AtomicXCore(数据层):提供数据管理和业务逻辑,包含各种 Store 和 Manager。
|
|
20
21
|
|
|
21
22
|
## 前提条件
|
|
23
|
+
- **支持平台:**Android、iOS、HarmonyOS。
|
|
24
|
+
|
|
22
25
|
- Flutter >= 3.29.0 版本,Dart >= 3.7.0 版本,Kotlin >= 1.9版本。
|
|
23
26
|
|
|
24
27
|
- Android Studio Ladybug 2024.2.1 及以上版本,Android Gradle Plugin 7.3.1 以上版本,JDK 17 版本。
|
|
25
28
|
|
|
26
29
|
- Xcode 12.0 及以上版本。
|
|
27
30
|
|
|
31
|
+
- HarmonyOS:[Flutter-OH 3.35.7-ohos-release](https://gitcode.com/CPF-Flutter/flutter_flutter/tree/oh-3.35.7-release)、DevEco Studio 5.0+(可选)、HarmonyOS NEXT 真机 / 模拟器、hdc 命令行、ohpm。注意:标准 Flutter 不能构建鸿蒙 hap,必须使用 Flutter-OH 分支。
|
|
32
|
+
|
|
28
33
|
- 一个有效的腾讯云账号及 Chat 应用。可参考 开通服务 从控制台获取以下信息:
|
|
29
34
|
|
|
30
35
|
- SDKAppID:App 在控制台获取的 Chat 应用的 ID,为应用的唯一标识。
|
|
@@ -102,6 +107,8 @@ call/
|
|
|
102
107
|
|
|
103
108
|
### 配置项目
|
|
104
109
|
|
|
110
|
+
#### iOS
|
|
111
|
+
|
|
105
112
|
在 iOS 端添加必要的权限配置。请打开 ios/Podfile ,在文件末尾新增如下权限代码:
|
|
106
113
|
``` objectivec
|
|
107
114
|
post_install do |installer|
|
|
@@ -124,7 +131,9 @@ post_install do |installer|
|
|
|
124
131
|
end
|
|
125
132
|
|
|
126
133
|
```
|
|
127
|
-
|
|
134
|
+
|
|
135
|
+
#### Android
|
|
136
|
+
- **清理 Gradle 全局配置:**如果您本地存在 `~/.gradle/init.gradle`,运行如下命令:
|
|
128
137
|
|
|
129
138
|
``` bash
|
|
130
139
|
# 或者直接删除:rm -f ~/.gradle/init.gradle
|
|
@@ -136,13 +145,104 @@ end
|
|
|
136
145
|
> 如果您本地不存在 Gradle 全局配置文件 `~/.gradle/init.gradle`,请忽略。如果存在,并且该文件里配置有 `allprojects.repositories`,可以删除 `allprojects.repositories` 相关内容,或者删除 `~/.gradle/init.gradle`(建议备份文件),以免引起运行报错。
|
|
137
146
|
>
|
|
138
147
|
|
|
139
|
-
- **配置 JDK 17
|
|
148
|
+
- **配置 JDK 17:**在项目例如 `chat/demo` 目录下的 `gradle.properties` 里增加一条 `org.gradle.java.home`,用来配置 JDK 17 路径,请替换成您实际的 JDK 17 的完整路径。参考如下:
|
|
140
149
|
|
|
141
150
|
``` bash
|
|
142
151
|
# 请替换为您本地 JDK 17 的真实完整路径
|
|
143
152
|
org.gradle.java.home=xx/Java/JavaVirtualMachines/jdk-17.0.6.jdk/Contents/Home
|
|
144
153
|
```
|
|
145
154
|
|
|
155
|
+
#### HarmonyOS
|
|
156
|
+
- 参考 [鸿蒙 Flutter 仓库文档](https://gitcode.com/CPF-Flutter/flutter_flutter/tree/oh-3.35.7-release) 的开发指南搭建环境。
|
|
157
|
+
|
|
158
|
+
- 在您项目的 `pubspec.yaml` 文件中依赖重写(dependency_overrides)鸿蒙适配的第三方库,参考 `chat/demo/pubspec.yaml` 文件:
|
|
159
|
+
|
|
160
|
+
``` javascript
|
|
161
|
+
dependency_overrides:
|
|
162
|
+
# ... 已有的 override 保持不变 ...
|
|
163
|
+
# HarmonyOS 专用(仅在使用 Flutter-OH 构建时启用,构建 Android/iOS 时请注释掉)
|
|
164
|
+
|
|
165
|
+
path_provider:
|
|
166
|
+
git:
|
|
167
|
+
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
|
|
168
|
+
path: "packages/path_provider/path_provider"
|
|
169
|
+
ref: "provider-v2.1.5-ohos-1.0.0"
|
|
170
|
+
shared_preferences:
|
|
171
|
+
git:
|
|
172
|
+
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
|
|
173
|
+
path: "packages/shared_preferences/shared_preferences"
|
|
174
|
+
ref: "shared_preferences-v2.5.4-ohos-1.0.0"
|
|
175
|
+
url_launcher:
|
|
176
|
+
git:
|
|
177
|
+
url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
|
|
178
|
+
path: "packages/url_launcher/url_launcher"
|
|
179
|
+
ref: "url_launcher_v6.3.2-ohos-1.0.0"
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
- 声明 HarmonyOS 权限,参考 `chat/demo/ohos/entry/src/main/module.json5` 在 `requestPermissions` 数组中加入所需权限。
|
|
183
|
+
|
|
184
|
+
``` java
|
|
185
|
+
{
|
|
186
|
+
"module": {
|
|
187
|
+
"requestPermissions": [
|
|
188
|
+
// ===== system_grant(声明即得) =====
|
|
189
|
+
{ "name": "ohos.permission.INTERNET" },
|
|
190
|
+
{ "name": "ohos.permission.GET_NETWORK_INFO" },
|
|
191
|
+
{ "name": "ohos.permission.VIBRATE" },
|
|
192
|
+
// ===== user_grant(需运行时申请,必须提供 reason 和 usedScene) =====
|
|
193
|
+
{
|
|
194
|
+
"name": "ohos.permission.CAMERA",
|
|
195
|
+
"reason": "$string:permission_reason_camera",
|
|
196
|
+
"usedScene": {
|
|
197
|
+
"abilities": [ "EntryAbility" ],
|
|
198
|
+
"when": "inuse"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "ohos.permission.MICROPHONE",
|
|
203
|
+
"reason": "$string:permission_reason_microphone",
|
|
204
|
+
"usedScene": {
|
|
205
|
+
"abilities": [ "EntryAbility" ],
|
|
206
|
+
"when": "inuse"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "ohos.permission.WRITE_IMAGEVIDEO",
|
|
211
|
+
"reason": "$string:permission_reason_write_media",
|
|
212
|
+
"usedScene": {
|
|
213
|
+
"abilities": [ "EntryAbility" ],
|
|
214
|
+
"when": "inuse"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"name": "ohos.permission.READ_PASTEBOARD",
|
|
219
|
+
"reason": "$string:permission_reason_read_pasteboard",
|
|
220
|
+
"usedScene": {
|
|
221
|
+
"abilities": [ "EntryAbility" ],
|
|
222
|
+
"when": "inuse"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
- 在项目根目录 `ohos/build-profile.json5` 里启用 `useNormalizedOHMUrl`,否则会报“Bytecode HARs not supported when useNormalizedOHMUrl is not true”的错误。
|
|
231
|
+
|
|
232
|
+
``` java
|
|
233
|
+
{
|
|
234
|
+
"app": {
|
|
235
|
+
"products": [{
|
|
236
|
+
"name": "default",
|
|
237
|
+
"buildOption": {
|
|
238
|
+
"arkOptions": { "useNormalizedOHMUrl": true }
|
|
239
|
+
}
|
|
240
|
+
}]
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
|
|
146
246
|
## 接入步骤
|
|
147
247
|
|
|
148
248
|
### 步骤1:配置用户鉴权
|
|
@@ -385,16 +485,16 @@ import 'package:tencentcloud_ai_desk_customer/tencentcloud_ai_desk_customer.dart
|
|
|
385
485
|
// 上述sdkAppID、userID和userSig三个参数, 可以同您登录腾讯云 IM 的保持一致, 也可以使用不同的应用和用户
|
|
386
486
|
|
|
387
487
|
TencentCloudAIDeskCustomer.init(
|
|
388
|
-
sdkAppID: SDKAppID
|
|
389
|
-
userID: userID
|
|
390
|
-
userSig: userSig
|
|
488
|
+
sdkAppID: SDKAppID, // 开通了智能客服 Desk 的应用 ID
|
|
489
|
+
userID: userID, // 详情可参见腾讯云 IM 登录鉴权
|
|
490
|
+
userSig: userSig, // 详情可参见腾讯云 IM 登录鉴权
|
|
391
491
|
);
|
|
392
492
|
|
|
393
493
|
// 打开智能客服会话页面
|
|
394
494
|
TencentCloudAIDeskCustomer.navigate(
|
|
395
|
-
context: context
|
|
396
|
-
customerServiceID: "@customer_service_account"
|
|
397
|
-
config: TencentCloudCustomerConfig()
|
|
495
|
+
context: context, // BuildContext
|
|
496
|
+
customerServiceID: "@customer_service_account", // 可选, 如不配置多客服号或修改默认的客服号 UserID, 可无需传入. 客服号 UserID 可从智能客服管理端查看: https://desk.qcloud.com/
|
|
497
|
+
config: TencentCloudCustomerConfig(), // 可选针对该客服会话的特殊配置,具体参数及使用方式可查看该类注释. 此处仅需手动指定相比全局配置的增项和修改项即可,其余配置来自全局默认配置.
|
|
398
498
|
);
|
|
399
499
|
```
|
|
400
500
|
|
|
@@ -407,3 +507,4 @@ TencentCloudAIDeskCustomer.navigate(
|
|
|
407
507
|
### **登录失败,提示签名错误怎么办?**
|
|
408
508
|
|
|
409
509
|
请检查 SDKAppID 和 UserSig 是否正确,UserSig 是否已过期。可以参考上文 配置用户鉴权 重新生成 UserSig。
|
|
510
|
+
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
### 前提条件
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
请您先阅读 准备工作,请确保集成对应组件并实现登录。
|
|
16
16
|
|
|
17
17
|
### 集成观众观看页面
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
新建 `live-player.vue`,作为观看页面的入口,负责播放直播画面、切换分辨率、画中画等,您根据指引按需引入观看端的各功能模块。将以下代码复制到该文件即可:
|
|
20
20
|
``` typescript
|
|
21
21
|
<template>
|
|
22
22
|
<UIKitProvider language="zh-CN" theme="dark">
|
|
@@ -92,18 +92,20 @@ onMounted(async () => {
|
|
|
92
92
|
|
|
93
93
|
### 启动并运行示例
|
|
94
94
|
|
|
95
|
-
执行 `npm run dev`
|
|
95
|
+
执行 `npm run dev` 成功后,在浏览器地址栏输入本地访问地址(例如 `https://localhost:5173/live-player`,具体端口号可能因项目配置不同而有所差异),即可看到观看页面,输入对应的房间号(**liveId**),即可观看对应的直播间画面。
|
|
96
96
|
``` bash
|
|
97
97
|
npm run dev
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
>
|
|
100
|
+
> **开启直播的两种方式:**
|
|
101
101
|
>
|
|
102
|
-
>
|
|
102
|
+
> 集成观看页面成功后,可通过以下任一方式体验开播效果:
|
|
103
103
|
>
|
|
104
104
|
> - 在线开播网站:打开[在线开播网站](https://web.sdk.qcloud.com/trtc/livekit/pusher/index.html#/),输入对应 **sdkAppId** 等信息,点击直播列表右上角的**开始直播**按钮进入开播页面,开始一场直播。
|
|
105
105
|
> - 集成开播页面:在您的项目中接入 主播开播(Web 桌面浏览器)组件进行开播。
|
|
106
|
-
|
|
106
|
+
|
|
107
|
+
> **注意:**
|
|
108
|
+
> 观看请使用与开播端不同的用户 ID,否则先登录的设备会被强制下线。
|
|
107
109
|
>
|
|
108
110
|
|
|
109
111
|
## UI 自由定制
|
|
@@ -129,9 +131,9 @@ import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
|
129
131
|
我们支持您根据项目需求对观众观看页面进行 UI 定制——除页面布局调整外,还可对**颜色主题、字体、圆角、输入框、弹框**等内容进行增删改;若需新增或替换按钮(Button)、图标(Icon)等控件,也可找到对应控件的指定位置源码,直接进行增加、删除、替换等操作,满足您的 UI 定制需要。
|
|
130
132
|
| <strong>类别</strong> | <strong>功能</strong> | <strong>描述</strong> | <strong>组件详细定制指引</strong> |
|
|
131
133
|
| --- | --- | --- | --- |
|
|
132
|
-
| <strong
|
|
133
|
-
| <strong>在线观众</strong> | 自定义观众信息展示 | <strong>支持:</strong><br>- <strong
|
|
134
|
-
| <strong>消息列表</strong> | 自定义消息弹幕区域展示 | <strong>支持:</strong><br>- <strong
|
|
134
|
+
| <strong>直播视频</strong> | 自定义直播视频区域展示 | <strong>支持:</strong><br>- <strong>调整展示 Icon 的大小、颜色或对 Icon 进行替换。</strong><br>- <strong>自定义视频挂件。</strong> | 直播视频组件 |
|
|
135
|
+
| <strong>在线观众</strong> | 自定义观众信息展示 | <strong>支持:</strong><br>- <strong>展示或隐藏观众等级。</strong><br>- <strong>观众信息字体、颜色 UI 自定义设置。</strong><br>- <strong>替换为您需要的 Icon 风格。</strong> | 观众列表 |
|
|
136
|
+
| <strong>消息列表</strong> | 自定义消息弹幕区域展示 | <strong>支持:</strong><br>- <strong>展示或隐藏聊天输入区域。</strong><br>- <strong>支持 UI 定制聊天气泡风格、定制观众等级等内容。</strong> | <a href="https://cloud.tencent.com/document/product/647/123836">聊天弹幕组件</a> |
|
|
135
137
|
|
|
136
138
|
## 常见问题
|
|
137
139
|
|
|
@@ -141,7 +143,7 @@ import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
|
141
143
|
|
|
142
144
|
#### 自动播放失败表现
|
|
143
145
|
|
|
144
|
-
当用户对该站点的媒体互动指数 (MEI, Media Engagement Index) 未达到阈值时,企图自动播放有声视频会失败。在 SDK
|
|
146
|
+
当用户对该站点的媒体互动指数 (MEI, Media Engagement Index) 未达到阈值时,企图自动播放有声视频会失败。在 SDK 默认情况下,当检测到自动播放失败时,会弹窗引导用户与页面产生交互(例如点击**确认**按钮)。产生交互后,浏览器策略即被满足,有声视频即可正常播放。
|
|
145
147
|
|
|
146
148
|
#### 解决方案:自定义处理自动播放失败
|
|
147
149
|
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
### 前提条件
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
请您先阅读 准备工作,请确保集成对应组件并实现登录。
|
|
16
16
|
|
|
17
17
|
### 集成主播开播页面
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
新建 `live-pusher.vue`,作为开播页面的入口,负责**整体布局**、**开播 / 停播**、**登录初始化**,并按需引入底部控制栏的各功能模块。将以下代码复制到该文件即可:
|
|
20
20
|
``` typescript
|
|
21
21
|
<template>
|
|
22
22
|
<UIKitProvider language="zh-CN" theme="dark">
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
</div>
|
|
45
45
|
<div class="live-controls">
|
|
46
46
|
<div class="bottom-panel">
|
|
47
|
-
<!-- <MediaDeviceSetting />//
|
|
48
|
-
<CoGuestButton /> //
|
|
49
|
-
<OrientationSwitch /> //
|
|
50
|
-
<LayoutSwitch /> //
|
|
47
|
+
<!-- <MediaDeviceSetting />// 媒体设置能力请参考本文功能模块集成部分
|
|
48
|
+
<CoGuestButton /> // 连麦观众能力请参考本文功能模块集成部分
|
|
49
|
+
<OrientationSwitch /> // 布局设置请参考本文功能模块集成部分
|
|
50
|
+
<LayoutSwitch /> // 横竖屏推流能力请参考本文功能模块集成部分 -->
|
|
51
51
|
</div>
|
|
52
52
|
<TUIButton type="primary" v-if="!currentLive?.liveId" @click="handleStartLive">开始直播</TUIButton>
|
|
53
53
|
<TUIButton color="red" v-else @click="handleStopLive">停止直播</TUIButton>
|
|
@@ -128,7 +128,7 @@ onMounted(async () => {
|
|
|
128
128
|
|
|
129
129
|
### 启动并运行示例
|
|
130
130
|
|
|
131
|
-
执行 `npm run dev`
|
|
131
|
+
执行 `npm run dev` 成功后,在浏览器地址栏输入本地访问地址(例如 `https://localhost:5173/live-pusher`,具体端口号可能因项目配置不同而有所差异),即可看到开播页面,添加媒体源素材点击开始直播即可开启您的直播。
|
|
132
132
|
``` bash
|
|
133
133
|
npm run dev
|
|
134
134
|
```
|
|
@@ -139,12 +139,14 @@ npm run dev
|
|
|
139
139
|
>
|
|
140
140
|
> - 在线观看网站:打开[在线观看网站](https://web.sdk.qcloud.com/trtc/livekit/player/index.html#/),输入对应 **sdkAppId** 等信息,在直播列表中找到并进入你的直播间。
|
|
141
141
|
> - 集成观看页面:在您的项目中接入 观众观看(Web 桌面浏览器)或者 观众观看(H5 移动端浏览器)组件观看。
|
|
142
|
-
|
|
142
|
+
|
|
143
|
+
> **注意:**
|
|
144
|
+
> 观看请使用与开播端不同的用户 ID,否则先登录的设备会被强制下线。
|
|
143
145
|
>
|
|
144
146
|
|
|
145
147
|
## 功能模块
|
|
146
148
|
|
|
147
|
-
|
|
149
|
+
以下模块均为可独立复制的组件,需要先通过 集成主播开播页面,然后根据您的业务需求将下列各个模块的代码直接粘贴进对应的注释部分去即可。
|
|
148
150
|
|
|
149
151
|
### 支持媒体设置能力
|
|
150
152
|
|
|
@@ -658,9 +660,9 @@ import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
|
658
660
|
我们支持您根据项目需求对观众观看页面进行 UI 定制——除页面布局调整外,还可对**颜色主题、字体、圆角、输入框、弹框**等内容进行增删改;若需新增或替换按钮(Button)、图标(Icon)等控件,也可找到对应控件的指定位置源码,直接进行增加、删除、替换等操作,满足您的 UI 定制需要。
|
|
659
661
|
| <strong>类别</strong> | <strong>功能</strong> | <strong>描述</strong> | <strong>组件详细定制指引</strong> |
|
|
660
662
|
| --- | --- | --- | --- |
|
|
661
|
-
| <strong
|
|
662
|
-
| <strong>在线观众</strong> | 自定义观众信息展示 | <strong>支持:</strong><br>- <strong
|
|
663
|
-
| <strong>消息列表</strong> | 自定义消息弹幕区域展示 | <strong>支持:</strong><br>- <strong
|
|
663
|
+
| <strong>直播视频</strong> | 自定义直播视频区域展示 | <strong>支持:</strong><br>- <strong>调整展示 Icon 的大小、颜色或对 Icon 进行替换。</strong><br>- <strong>自定义视频挂件。</strong> | 直播视频组件 |
|
|
664
|
+
| <strong>在线观众</strong> | 自定义观众信息展示 | <strong>支持:</strong><br>- <strong>展示或隐藏观众等级。</strong><br>- <strong>观众信息字体、颜色 UI 自定义设置。</strong><br>- <strong>替换为您需要的 Icon 风格。</strong> | 观众列表 |
|
|
665
|
+
| <strong>消息列表</strong> | 自定义消息弹幕区域展示 | <strong>支持:</strong><br>- <strong>展示或隐藏聊天输入区域。</strong><br>- <strong>支持 UI 定制聊天气泡风格、定制观众等级等内容。</strong> | <a href="https://cloud.tencent.com/document/product/647/123836">聊天弹幕组件</a> |
|
|
664
666
|
|
|
665
667
|
## 下一步
|
|
666
668
|
|
|
@@ -669,5 +671,3 @@ import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
|
669
671
|
| --- | --- | --- |
|
|
670
672
|
| <strong>观众观看</strong> | 实现观众进入主播的直播间后观看直播,实现观众连麦 、直播间信息、在线观众、弹幕显示等功能。 | 观众观看 |
|
|
671
673
|
| <strong>直播列表</strong> | 展示直播列表界面和功能,包含直播列表,房间信息展示功能。 | 直播列表 |
|
|
672
|
-
|
|
673
|
-
###
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: uniapp 打包微信小程序 TUICallKit 体积裁剪方案
|
|
3
|
+
product: call
|
|
4
|
+
frameworks: [miniprogram]
|
|
5
|
+
scope: platform_specific
|
|
6
|
+
tags: [TUICallKit, uniapp, 小程序, 体积裁剪, 插件裁剪, 瘦身, 移除插件, GroupCallView]
|
|
7
|
+
version_range: ">=4.0.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# uniapp 打包微信小程序 TUICallKit 体积裁剪方案
|
|
11
|
+
|
|
12
|
+
## 1. 核心结论
|
|
13
|
+
|
|
14
|
+
- TUICallKit 默认包含完整插件,核心通话引擎(375 KB)和 1v1 通话(111 KB)为必选模块,不可裁剪。
|
|
15
|
+
- 铃声插件(23 KB)和多人通话插件(27 KB)可按需移除,移除后不影响单人通话功能。
|
|
16
|
+
- 通过删除插件注册代码和对应 pages 配置实现裁剪。
|
|
17
|
+
|
|
18
|
+
## 2. 字段语义对照
|
|
19
|
+
|
|
20
|
+
| 模块 | 大小 | 是否必选 | 移除方式 |
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| 核心通话引擎 | 375 KB | 必选 | — |
|
|
23
|
+
| 1v1 单人通话 | 111 KB | 必选 | — |
|
|
24
|
+
| 铃声插件 | 23 KB | 可裁剪 | 删除 `this.registerPlugin(useRingPlugin())` |
|
|
25
|
+
| 多人通话插件 | 27 KB | 可裁剪 | 删除 `this.registerPlugin(useGroupCallPlugin())` + pages.json 中 `GroupCallView` 页面 |
|
|
26
|
+
|
|
27
|
+
## 3. 机制/时序
|
|
28
|
+
|
|
29
|
+
TUICallKit 初始化时通过 `registerPlugin` 注册各功能插件 -> 插件被注册后打包进小程序代码 -> 删除对应注册代码后,该插件不会打包 -> 小程序包体积相应减小。
|
|
30
|
+
|
|
31
|
+
## 4. 标准用法
|
|
32
|
+
|
|
33
|
+
1. 在 TUICallKit 初始化代码中找到插件注册部分。
|
|
34
|
+
2. 删除 `this.registerPlugin(useRingPlugin())` 移除铃声插件。
|
|
35
|
+
3. 删除 `this.registerPlugin(useGroupCallPlugin())` 移除多人通话插件,同步删除 `pages.json` 中的 `GroupCallView` 页面配置。
|
|
36
|
+
|
|
37
|
+
## 5. 结果判定
|
|
38
|
+
|
|
39
|
+
- 铃声插件移除后,通话中不再播放铃声提示,但通话功能不受影响。
|
|
40
|
+
- 多人通话插件移除后,无法发起和参与多人通话,单人通话正常。
|
|
41
|
+
- 小程序打包后体积减少约 50 KB。
|
|
42
|
+
- 功能正常:单人通话(发起、接听、挂断)完整可用。
|
|
43
|
+
|
|
44
|
+
## 6. 常见误区
|
|
45
|
+
|
|
46
|
+
- 误区 1:试图移除核心通话引擎或 1v1 模块(必选,移除后无法通话)。
|
|
47
|
+
- 误区 2:只删除插件注册代码,忘记同步删除 `pages.json` 中的 `GroupCallView` 页面配置,导致编译报错。
|
|
48
|
+
- 误区 3:认为裁剪后还能使用多人通话功能(移除多人通话插件后只能使用单人通话)。
|
|
49
|
+
|
|
50
|
+
## 7. 问题定义(检索辅助,极简)
|
|
51
|
+
|
|
52
|
+
uniapp 打包微信小程序时,TUICallKit 默认插件过多导致包体积大,希望按需移除不必要的功能模块。
|
|
53
|
+
|
|
54
|
+
## 8. 同义问法覆盖(检索召回,极简)
|
|
55
|
+
|
|
56
|
+
- TUICallKit 小程序怎么瘦身?
|
|
57
|
+
- uniapp TUICallKit 如何移除铃声插件?
|
|
58
|
+
- TUICallKit 多人通话怎么裁剪?
|
|
59
|
+
- 微信小程序 TUICallKit 包太大怎么优化?
|
|
60
|
+
- 删除 `GroupCallView` 后多人通话还能用吗?
|
|
61
|
+
|
|
62
|
+
## 9. 参考来源(可选)
|
|
63
|
+
|
|
64
|
+
- 微信小程序 TUICallKit(uniapp)文档:`https://cloud.tencent.com/document/product/647/78912#802b0c00-0ea7-4ca3-8892-62f47f06c92d`
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Web TUICallKit 弹出"恢复播放"弹窗的原因与处理
|
|
3
|
+
product: call
|
|
4
|
+
frameworks: [react, vue, web]
|
|
5
|
+
scope: platform_common
|
|
6
|
+
tags: [TUICallKit, 恢复播放, 自动播放, webview, autoplay, enableAutoPlayDialog, callExperimentalAPI, 无声, vue2.6, vue2.7, vue3]
|
|
7
|
+
version_range: ">=4.0.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Web TUICallKit 弹出"恢复播放"弹窗的原因与处理
|
|
11
|
+
|
|
12
|
+
## 1. 核心结论
|
|
13
|
+
|
|
14
|
+
- 浏览器限制自动播放:在用户与网页产生交互前禁止播放带声音的媒体,Web TUICallKit 检测到播放失败后弹出"恢复播放"弹窗,需用户点击"恢复"。
|
|
15
|
+
- 此问题多出现在 webview 中(如 App 内嵌 H5)。
|
|
16
|
+
- 不推荐关闭该弹窗,关闭后可能出现无声问题。如需关闭可通过 `callExperimentalAPI` 设置 `enableAutoPlayDialog: 0`。
|
|
17
|
+
|
|
18
|
+
## 2. 字段语义对照
|
|
19
|
+
|
|
20
|
+
| 字段/能力 | 作用 | 说明 |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `enableAutoPlayDialog` | 自动播放弹窗开关 | `1` 开启(默认),`0` 关闭 |
|
|
23
|
+
| `callExperimentalAPI` | 调用实验性 API | 通过 TRTC 实例调用,用于设置 `enableAutoPlayDialog` |
|
|
24
|
+
| `getTUICallEngineInstance()` | 获取 TUICallEngine 实例 | 从 `TUICallKitAPI` 获取底层引擎 |
|
|
25
|
+
| `getTRTCCloudInstance()` | 获取 TRTC 实例 | 从 TUICallEngine 获取 TRTC 云实例 |
|
|
26
|
+
|
|
27
|
+
## 3. 机制/时序
|
|
28
|
+
|
|
29
|
+
用户进入通话页面 -> TUICallKit 尝试自动播放音频 -> 浏览器拦截自动播放 -> 播放失败 -> TUICallKit 弹出"恢复播放"弹窗 -> 用户点击"恢复" -> 音频正常播放。
|
|
30
|
+
|
|
31
|
+
webview 场景下,因宿主 App 对自动播放的限制更严格,此问题更容易出现。
|
|
32
|
+
|
|
33
|
+
## 4. 标准用法
|
|
34
|
+
|
|
35
|
+
不推荐关闭该弹窗。如业务场景确定需要关闭:
|
|
36
|
+
|
|
37
|
+
1. 从 `TUICallKitAPI` 获取 TUICallEngine 实例。
|
|
38
|
+
2. 从 TUICallEngine 获取 TRTC 云实例。
|
|
39
|
+
3. 通过 TRTC 实例的 `callExperimentalAPI` 设置 `enableAutoPlayDialog: 0`。
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
// React: @trtc/calls-uikit-react
|
|
43
|
+
// Vue 3: @trtc/calls-uikit-vue
|
|
44
|
+
// Vue 2.7: @trtc/calls-uikit-vue2
|
|
45
|
+
// Vue 2.6: @trtc/calls-uikit-vue2.6 (API 一致,仅包名不同)
|
|
46
|
+
import { TUICallKitAPI } from "@trtc/calls-uikit-react";
|
|
47
|
+
|
|
48
|
+
const trtcCloudInstance = TUICallKitAPI?.getTUICallEngineInstance()?.getTRTCCloudInstance();
|
|
49
|
+
const params = {
|
|
50
|
+
api: 'enableAutoPlayDialog',
|
|
51
|
+
params: { enable: 0 },
|
|
52
|
+
};
|
|
53
|
+
trtcCloudInstance?.callExperimentalAPI(JSON.stringify(params));
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 5. 结果判定
|
|
57
|
+
|
|
58
|
+
- 不关闭弹窗:通话时弹出"恢复播放"提示,用户点击后音频正常播放。
|
|
59
|
+
- 关闭弹窗:通话时不再弹出提示,音频在浏览器允许后自动播放(若仍被拦截则无声)。
|
|
60
|
+
|
|
61
|
+
## 6. 常见误区
|
|
62
|
+
|
|
63
|
+
- 误区 1:认为弹窗是 TUICallKit 的 bug(实际是浏览器自动播放限制策略)。
|
|
64
|
+
- 误区 2:直接关闭弹窗后期望所有场景都能正常播放(关闭弹窗不解除自动播放限制,无声问题仍可能发生)。
|
|
65
|
+
- 误区 3:在 TUICallKit 初始化前调用 `enableAutoPlayDialog`(需在获取到 TRTC 实例后调用)。
|
|
66
|
+
|
|
67
|
+
## 7. 问题定义(检索辅助,极简)
|
|
68
|
+
|
|
69
|
+
Web TUICallKit 通话时弹出"恢复播放"弹窗,用户需点击才能听到声音,如何解决及是否可关闭弹窗。
|
|
70
|
+
|
|
71
|
+
## 8. 同义问法覆盖(检索召回,极简)
|
|
72
|
+
|
|
73
|
+
- TUICallKit 通话没有声音怎么办?
|
|
74
|
+
- 为什么 TUICallKit 会弹出"恢复播放"提示?
|
|
75
|
+
- 如何关闭 TUICallKit 的自动播放弹窗?
|
|
76
|
+
- webview 中 TUICallKit 无声怎么处理?
|
|
77
|
+
- `enableAutoPlayDialog` 怎么设置?
|
|
78
|
+
|
|
79
|
+
## 9. 参考来源(可选)
|
|
80
|
+
|
|
81
|
+
- TUICallKit Web 自动播放说明:`https://cloud.tencent.com/document/product/647/78769#066739b9-fb33-4f11-a21c-66edd91be64a`
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 在无 UI Chat SDK 项目中集成 TUICallKit 时如何显示音视频通话消息
|
|
3
|
+
product: call
|
|
4
|
+
frameworks: [react, vue, miniprogram, android, ios, flutter, uni-app, web]
|
|
5
|
+
scope: platform_common
|
|
6
|
+
tags: [TUICallKit, call-message, custom message, actionType, cmd, call_end, 通话消息渲染]
|
|
7
|
+
version_range: ">=2.0.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# 在无 UI Chat SDK 项目中集成 TUICallKit 时如何显示音视频通话消息
|
|
11
|
+
|
|
12
|
+
## 1. 核心结论
|
|
13
|
+
|
|
14
|
+
- 通话消息是 TUICallKit 通话过程中由后台通过 Chat REST API 补发的自定义消息,各平台可通过 Chat SDK 的消息接收事件或拉取历史消息获取。
|
|
15
|
+
- 通话过程中的实时状态(振铃、接听、挂断)由 TUICallKit 的事件监听处理,不依赖 Chat 消息。
|
|
16
|
+
- 通过 `actionType` 判断通话结果类型(挂断/取消/拒绝/超时),通过 `cmd` 区分语音/视频/忙线。
|
|
17
|
+
- 通话时长从 `call_end` 字段获取,单位秒。
|
|
18
|
+
|
|
19
|
+
## 2. 字段语义对照
|
|
20
|
+
|
|
21
|
+
| 字段/能力 | 作用 | 说明 |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `actionType` | 通话事件类型 | 1=发起/挂断,2=取消,3=接听,4=拒绝,5=超时未接听 |
|
|
24
|
+
| `cmd` | 通话指令细分 | `videoCall` 视频通话、`audioCall` 语音通话、`hangup` 挂断、`line_busy` 忙线 |
|
|
25
|
+
| `call_end` | 通话时长 | `actionType=1` 且 `cmd=hangup` 时存在,单位秒 |
|
|
26
|
+
| `MESSAGE_RECEIVED` | 消息接收事件 | Chat SDK 统一事件,含通话自定义消息 |
|
|
27
|
+
| `getMessageList` | 拉取历史消息 | 进入会话后拉取,通话消息也在返回列表中 |
|
|
28
|
+
|
|
29
|
+
### actionType 与 cmd 对照表
|
|
30
|
+
|
|
31
|
+
| 场景 | actionType | cmd | 备注 |
|
|
32
|
+
|---|---|---|---|
|
|
33
|
+
| 发起通话 | 1 | `videoCall` 或 `audioCall` | 主叫发出 |
|
|
34
|
+
| 已接听 | 3 | — | 被叫接听后触发 |
|
|
35
|
+
| 通话已结束 | 1 | `hangup` | 有一方挂断;`call_end` 含通话时长 |
|
|
36
|
+
| 取消通话 | 2 | — | 主叫在接听前取消 |
|
|
37
|
+
| 拒绝通话 | 4 | — | 被叫主动拒绝 |
|
|
38
|
+
| 对端忙线 | 4 | `line_busy` | 被叫正在通话中 |
|
|
39
|
+
| 超时未接听 | 5 | — | 被叫在规定时间内未接听 |
|
|
40
|
+
|
|
41
|
+
## 3. 机制/时序
|
|
42
|
+
|
|
43
|
+
主叫发起通话 -> TUICallKit 通过信令通道(非 Chat 消息)建立通话连接 -> 通话过程中,每发生一次状态变化(取消/接听/拒绝/超时/挂断),TUICallKit 后台都会通过 REST API 向 Chat SDK 补发一条自定义消息 -> 双方通过 `MESSAGE_RECEIVED` 收到补发消息 -> 按 `actionType` 和 `cmd` 区分事件类型并更新 UI。
|
|
44
|
+
|
|
45
|
+
通话过程本身(发起、接听、取消、拒绝、超时)不依赖 Chat 自定义消息通知;Chat 消息仅用于通话结束后在会话中展示通话记录。
|
|
46
|
+
|
|
47
|
+
## 4. 标准用法
|
|
48
|
+
|
|
49
|
+
1. 通过 Chat SDK 获取补发的通话自定义消息(监听消息接收事件或拉取历史消息,接口名因平台而异,但语义一致)。
|
|
50
|
+
2. 读取 `message.actionType` 和 `message.cmd` 判断通话事件类型。
|
|
51
|
+
3. 通话挂断消息(`actionType=1, cmd=hangup`)读取 `message.call_end` 显示通话时长。
|
|
52
|
+
4. 其他 `actionType` 值用于判断通话未接通的原因(取消/拒绝/忙线/超时),更新 UI 展示。
|
|
53
|
+
|
|
54
|
+
## 5. 结果判定
|
|
55
|
+
|
|
56
|
+
- 通话各状态变化后,能通过 Chat SDK 收到补发的通话自定义消息。
|
|
57
|
+
- `actionType` 与 `cmd` 能正确反映通话状态变化。
|
|
58
|
+
- `call_end` 值准确反映通话实际时长。
|
|
59
|
+
- `actionType` 与 `cmd` 能正确反映通话状态变化。
|
|
60
|
+
- `call_end` 值准确反映通话实际时长。
|
|
61
|
+
|
|
62
|
+
## 6. 常见误区
|
|
63
|
+
|
|
64
|
+
- 误区 1:将通话消息当作普通自定义消息处理,没有读取 `actionType` 做状态区分。
|
|
65
|
+
- 误区 2:只处理 `MESSAGE_RECEIVED`,不处理 `getMessageList` 拉取的离线通话消息。
|
|
66
|
+
- 误区 3:通话时长从消息的 `timestamp` 差值计算(应直接从 `call_end` 字段读取)。
|
|
67
|
+
- 误区 4:未处理 `line_busy` 场景,导致忙线被当作普通拒绝。
|
|
68
|
+
|
|
69
|
+
## 7. 问题定义(检索辅助,极简)
|
|
70
|
+
|
|
71
|
+
在无 UI Chat SDK 项目中集成 TUICallKit,如何通过 Chat SDK 获取并渲染音视频通话消息(发起/接听/挂断/取消/拒绝/超时/忙线)。
|
|
72
|
+
|
|
73
|
+
## 8. 同义问法覆盖(检索召回,极简)
|
|
74
|
+
|
|
75
|
+
- TUICallKit 通话消息怎么解析?
|
|
76
|
+
- `actionType` 各值代表什么意思?
|
|
77
|
+
- 通话结束后怎么拿到通话时长?
|
|
78
|
+
- `MESSAGE_RECEIVED` 收到通话消息怎么区分是发起还是挂断?
|
|
79
|
+
- 如何判断被叫忙线?
|
|
80
|
+
- 小程序中通话消息和 Web 端解析方式一样吗?
|
|
81
|
+
|
|
82
|
+
## 9. 参考来源(可选)
|
|
83
|
+
|
|
84
|
+
- 音视频通话信令字段说明:`https://cloud.tencent.com/document/product/647/84363`
|