@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.
Files changed (158) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +59 -35
  3. package/knowledge/build-index.js +28 -4
  4. package/knowledge/chunker.js +82 -14
  5. package/knowledge/chunking-policy.js +100 -0
  6. package/knowledge/doc-url-resolver.js +70 -19
  7. package/knowledge/frontmatter-meta.js +167 -0
  8. package/knowledge/path-meta.js +28 -6
  9. package/knowledge/search/exact-lookup.js +126 -125
  10. package/knowledge/search/filter-pool.js +12 -29
  11. package/knowledge/search/framework-fallback.js +22 -0
  12. package/knowledge/search/intent-router.js +29 -0
  13. package/knowledge/search/l1-enrich.js +159 -0
  14. package/knowledge/search/query-normalizer.js +63 -3
  15. package/knowledge/search/search-core.js +410 -0
  16. package/knowledge/search/search-knowledge.js +419 -377
  17. package/knowledge/search/search-message.js +88 -0
  18. package/knowledge/search/search-pass.js +428 -0
  19. package/knowledge/search/search-types.js +1 -0
  20. package/knowledge/search/url-row-idf.js +120 -0
  21. package/knowledge/search/url-row-scorer.js +337 -0
  22. package/package.json +3 -1
  23. package/resource/index/manifest.json +1 -1
  24. package/resource/integration/callkit/preset/flutter/integration.md +7 -3
  25. package/resource/integration/callkit/preset/ios/integration.md +1 -0
  26. package/resource/integration/chat/preset/android/integration.md +1 -0
  27. package/resource/integration/chat/preset/flutter/integration.md +111 -10
  28. package/resource/integration/chat/preset/ios/integration.md +1 -0
  29. package/resource/integration/chat/preset/react/integration.md +1 -0
  30. package/resource/integration/chat/preset/uni-app/integration.md +1 -0
  31. package/resource/integration/chat/preset/vue/integration.md +1 -0
  32. package/resource/integration/livekit/preset/live/android/prepare-integration.md +1 -0
  33. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +12 -10
  34. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +14 -14
  35. package/resource/integration/roomkit/preset/vue/integration.md +1 -0
  36. package/resource/knowledge/callkit/best-practice/callkit-miniprogram/uniapp-shrink.md +64 -0
  37. package/resource/knowledge/callkit/best-practice/common/call-autoplay-blocked.md +81 -0
  38. package/resource/knowledge/callkit/best-practice/common/call-message-in-chat.md +84 -0
  39. package/resource/knowledge/callkit/best-practice/common/call-vs-calls.md +114 -0
  40. package/resource/knowledge/callkit/best-practice/common/callengine-call-flow.md +128 -0
  41. package/resource/knowledge/callkit/best-practice/common/callengine-log-level.md +72 -0
  42. package/resource/knowledge/callkit/best-practice/common/callkit-get-engine-instance.md +87 -0
  43. package/resource/knowledge/callkit/best-practice/common/callkit-get-roomid.md +83 -0
  44. package/resource/knowledge/callkit/best-practice/common/callkit-limitations.md +37 -0
  45. package/resource/knowledge/callkit/best-practice/common/callkit-user-register-and-kicked.md +103 -0
  46. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +1 -0
  47. package/resource/knowledge/callkit/core-sdk/android/make-call.md +1 -0
  48. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1 -0
  49. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1 -0
  50. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1 -0
  51. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1 -0
  52. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +1 -1
  53. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +1 -0
  54. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1 -0
  55. package/resource/knowledge/callkit/faq/flutter.md +1 -0
  56. package/resource/knowledge/callkit/faq/uniapp-app.md +1 -0
  57. package/resource/knowledge/callkit/preset/react/api.md +1 -150
  58. package/resource/knowledge/callkit/preset/vue/api.md +1 -38
  59. package/resource/knowledge/chat/best-practice/common/avchatroom-message-loss-diagnosis.md +71 -0
  60. package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md +67 -0
  61. package/resource/knowledge/chat/best-practice/common/image-message-url-lifecycle.md +63 -0
  62. package/resource/knowledge/chat/best-practice/common/login-repeat-2025-diagnosis.md +65 -0
  63. package/resource/knowledge/chat/best-practice/common/message-read-report-and-receipt.md +72 -0
  64. package/resource/knowledge/chat/best-practice/common/message-receive-event.md +70 -0
  65. package/resource/knowledge/chat/best-practice/common/message-risk-error-and-render.md +69 -0
  66. package/resource/knowledge/chat/best-practice/common/message-unread-count.md +71 -0
  67. package/resource/knowledge/chat/best-practice/miniprogram/audio-message-send.md +118 -0
  68. package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +67 -0
  69. package/resource/knowledge/chat/best-practice/miniprogram/media-upload-fail-diagnosis.md +68 -0
  70. package/resource/knowledge/chat/best-practice/web/audio-message-send.md +123 -0
  71. package/resource/knowledge/chat/preset/android/features/conversation-list.md +1 -0
  72. package/resource/knowledge/chat/preset/android/features/language.md +1 -0
  73. package/resource/knowledge/chat/preset/android/features/message-input.md +1 -0
  74. package/resource/knowledge/chat/preset/android/features/message-list.md +1 -0
  75. package/resource/knowledge/chat/preset/android-view/integration.md +1 -0
  76. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +1 -0
  77. package/resource/knowledge/chat/preset/flutter/features/message-input.md +1 -0
  78. package/resource/knowledge/chat/preset/flutter/features/message-list.md +1 -0
  79. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +1 -0
  80. package/resource/knowledge/chat/preset/ios/features/message-input.md +1 -0
  81. package/resource/knowledge/chat/preset/ios/features/message-list.md +1 -0
  82. package/resource/knowledge/chat/preset/ios-uikit/integration.md +1 -0
  83. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +1 -0
  84. package/resource/knowledge/chat/preset/react/features/message-input.md +61 -3
  85. package/resource/knowledge/chat/preset/react/features/message-list.md +7 -0
  86. package/resource/knowledge/chat/preset/vue/features/message-input.md +58 -5
  87. package/resource/knowledge/chat/preset/vue/features/message-list.md +7 -0
  88. package/resource/knowledge/chat/urls/product.md +8 -8
  89. package/resource/knowledge/chat/urls/restapi.md +3 -3
  90. package/resource/knowledge/chat/urls/sdk/android.md +5 -5
  91. package/resource/knowledge/chat/urls/sdk/flutter.md +5 -5
  92. package/resource/knowledge/chat/urls/sdk/ios.md +5 -5
  93. package/resource/knowledge/chat/urls/sdk/web.md +8 -8
  94. package/resource/knowledge/chat/urls/webhook.md +11 -17
  95. package/resource/knowledge/livekit/best-practice/android/voice-room-anchor-start.md +124 -0
  96. package/resource/knowledge/livekit/best-practice/common/admin-take-seat.md +73 -0
  97. package/resource/knowledge/livekit/best-practice/common/audience-leave-live.md +81 -0
  98. package/resource/knowledge/livekit/best-practice/common/voice-room-no-audio-troubleshoot.md +100 -0
  99. package/resource/knowledge/livekit/best-practice/common/voice-room-seat-list-change.md +65 -0
  100. package/resource/knowledge/livekit/best-practice/flutter/voice-room-anchor-start.md +126 -0
  101. package/resource/knowledge/livekit/best-practice/ios/voice-room-anchor-start.md +130 -0
  102. package/resource/knowledge/push/config/harmonyos.md +1 -1
  103. package/resource/knowledge/push/config/ios.md +2 -2
  104. package/resource/knowledge/push/config/react-native.md +1 -0
  105. package/resource/knowledge/push/config/unity.md +1 -0
  106. package/resource/knowledge/push/config/unreal-engine.md +1 -0
  107. package/resource/knowledge/push/integration/android.md +17 -16
  108. package/resource/knowledge/push/integration/donut.md +2 -2
  109. package/resource/knowledge/push/integration/flutter.md +4 -3
  110. package/resource/knowledge/push/integration/harmonyos.md +1 -1
  111. package/resource/knowledge/push/integration/ios.md +4 -3
  112. package/resource/knowledge/push/integration/react-native.md +1 -1
  113. package/resource/knowledge/push/integration/uni-app.md +1 -0
  114. package/resource/knowledge/push/integration/unity.md +4 -4
  115. package/resource/knowledge/push/integration/unreal-engine.md +37 -35
  116. package/resource/knowledge/roomkit/best-practice/common/room-ghost-member.md +75 -0
  117. package/resource/knowledge/roomkit/best-practice/common/room-limit-and-multi.md +88 -0
  118. package/resource/knowledge/roomkit/best-practice/common/room-screen-share-preview.md +87 -0
  119. package/resource/knowledge/roomkit/best-practice/common/room-status-after-all-leave.md +73 -0
  120. package/resource/knowledge/roomkit/best-practice/vue/room-uikit-vs-atomicx.md +115 -0
  121. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +1 -0
  122. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +1 -0
  123. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +1 -0
  124. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +1 -0
  125. package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +1 -0
  126. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +1 -0
  127. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +1 -0
  128. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +1 -0
  129. package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +1 -0
  130. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +1 -0
  131. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +1 -0
  132. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +1 -0
  133. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +1 -0
  134. package/resource/knowledge/roomkit/preset/react/integration.md +1 -0
  135. package/resource/knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md +2 -0
  136. package/resource/knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md +2 -0
  137. package/resource/knowledge/trtc/android/TRTCCloud.md +1 -0
  138. package/resource/knowledge/trtc/c++/ITRTCCloud.md +1 -0
  139. package/resource/knowledge/trtc/ios/TRTCCloud.md +1 -0
  140. package/server.js +9 -4
  141. package/streamable-http.js +19 -54
  142. package/tools/common/search_trtc_knowledge.js +24 -12
  143. package/tools/definitions/finalize_answer_def.js +2 -2
  144. package/tools/definitions/integration-boundary.js +2 -1
  145. package/tools/definitions/search_trtc_knowledge_def.js +5 -3
  146. package/utils/fetch-doc-content.js +198 -0
  147. package/utils/preflight-route.js +197 -0
  148. package/utils/report-cls-client.js +1 -1
  149. package/utils/report-es-client.js +1 -1
  150. package/cursor-setting.png +0 -0
  151. package/mcp-server-prompt.png +0 -0
  152. package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +0 -80
  153. package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +0 -20
  154. package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +0 -116
  155. package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +0 -469
  156. package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +0 -581
  157. package/resource/knowledge/callkit/preset/web/api.md +0 -79
  158. package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +0 -16
@@ -0,0 +1,114 @@
1
+ ---
2
+ title: TUICallKit React/Vue 发起音视频通话:calls 与 call/groupCall 的区别与用法
3
+ product: call
4
+ frameworks: [react, vue, web]
5
+ scope: platform_common
6
+ tags: [call, calls, groupCall, userIDList, TUICallKit, init, v4.x, calls-uikit, vue2, vue2.6, vue2.7, vue3, call和calls区别, callMediaType, 参数1和2, 数字字面量, 通话类型, 枚举常量, 发起通话]
7
+ version_range: ">=4.0.0"
8
+ ---
9
+
10
+ # TUICallKit React/Vue 发起音视频通话:calls 与 call/groupCall 的区别与用法
11
+
12
+ ## 1. 核心结论
13
+
14
+ - TUICallKit React / Vue **v4.x 必须使用 `calls`** 发起单聊/多人通话。
15
+ - `call`、`groupCall` 在 v4.0.0 起已废弃。
16
+ - 发起通话前必须先完成 `init`,否则会出现调用失败或状态异常。
17
+ - `type` 推荐使用 `CallMediaType` 枚举常量,不建议继续使用数字字面量(1/2)作为主写法。
18
+ - `userIDList` 必须传数组(单聊也是传数组);需要和 Chat 群联动时再传 `chatGroupID`。
19
+
20
+ ## 2. 字段语义对照
21
+
22
+ | 字段/能力 | 作用 | 说明 |
23
+ |---|---|---|
24
+ | `TUICallKitAPI` | v4.x 入口对象 | 从 `@trtc/calls-uikit-{react\|vue}` 引入,替代旧版 `TUICallKitServer` |
25
+ | `calls` | 发起通话(v4.x) | 单聊/多人通话统一入口,
26
+ | `call` / `groupCall` | 发起通话(旧版) | v4.0.0 前使用,v4.x 已废弃 |
27
+ | `CallMediaType` | 通话媒体类型枚举 | `AUDIO` 语音、`VIDEO` 视频 |
28
+ | `roomID` / `strRoomID` | 房间号 | 互斥,两者选一;不要混用 |
29
+
30
+ ## 3. 机制/时序
31
+
32
+ 初始化 -> 登录 -> 调用 `calls` 发起通话 -> 等待被叫接听 -> 通话建立 -> 通话结束。
33
+
34
+ v4.x 新项目直接从 `calls` 开始;旧项目迁移时需将 `call`/`groupCall` 替换为 `calls`,并将 `TUICallKitServer` 替换为 `TUICallKitAPI`。
35
+
36
+ ## 4. 标准用法
37
+
38
+ 1. 从对应平台的包引入 `TUICallKitAPI`。
39
+ 2. 调用 `TUICallKitAPI.init({ SDKAppID, userID, userSig })` 完成初始化。
40
+ 3. 调用 `TUICallKitAPI.calls({ userIDList, type })` 发起通话。
41
+ 4. 在 `catch` 分支处理通话发起失败的情况。
42
+
43
+ ```javascript
44
+ // React: @trtc/calls-uikit-react
45
+ // Vue 3: @trtc/calls-uikit-vue
46
+ // Vue 2.7: @trtc/calls-uikit-vue2
47
+ // Vue 2.6: @trtc/calls-uikit-vue2.6 (API 一致,仅包名不同)
48
+ import { TUICallKitAPI } from "@trtc/calls-uikit-react";
49
+
50
+ // 1. 初始化
51
+ TUICallKitAPI.init({ SDKAppID, userID, userSig });
52
+
53
+ // 2. 发起通话(单聊或多人)
54
+ try {
55
+ await TUICallKitAPI.calls({
56
+ userIDList: ['jack', 'tom'],
57
+ type: CallMediaType.VIDEO_CALL
58
+ });
59
+ } catch (error: any) {
60
+ console.error(`[TUICallKit] Failed to call. Reason:${error}`);
61
+ }
62
+ ```
63
+
64
+ `calls` 参数说明:
65
+
66
+ | 参数 | 类型 | 是否必填 | 含义 |
67
+ |---|---|---|---|
68
+ | userIDList | Array\<String\> | 是 | 被呼叫的用户列表 |
69
+ | type | CallMediaType | 是 | 通话的媒体类型(`AUDIO`/`VIDEO`) |
70
+ | chatGroupID | String | 否 | Chat 群组 ID |
71
+ | roomID | Number | 否 | 数字房间号,范围 [1, 2147483647] |
72
+ | strRoomID | String | 否 | 字符串房间号。与 roomID 互斥,两者都填时优先 roomID |
73
+ | timeout | Number | 否 | 通话超时时间,默认 30s,范围 10s-600s |
74
+ | userData | String | 否 | 自定义扩展字段,被叫可在 `ON_CALL_RECEIVED` 中获取 |
75
+ | offlinePushInfo | Object | 否 | 自定义离线消息推送参数 |
76
+
77
+ CallMediaType 取值:
78
+
79
+ | CallMediaType 类型 | 常量值 | 描述 |
80
+ |---|---|---|
81
+ | `CallMediaType.AUDIO` | 1 | 语音通话 |
82
+ | `CallMediaType.VIDEO` | 2 | 视频通话 |
83
+
84
+ ## 5. 结果判定
85
+
86
+ - `TUICallKitAPI.calls` 调用成功后,被叫用户能收到通话邀请。
87
+ - 被叫接听后通话建立,双方可正常音视频通话。
88
+ - 通话超时或被叫拒绝时,`catch` 分支能收到明确错误信息。
89
+
90
+ ## 6. 常见误区
91
+
92
+ - 误区 1:在 v4.x 里继续调用 `call` / `groupCall`(已废弃,不会报错但功能不完整)。
93
+ - 误区 2:把单聊写成 `userID` 字段而不是 `userIDList`(v4.x 不再支持单字符串传参)。
94
+ - 误区 3:`roomID` 与 `strRoomID` 混用(两者互斥且不互通)。
95
+ - 误区 4:`type` 长期使用数字字面量(1/2)而非 `CallMediaType` 枚举常量。
96
+
97
+ ## 7. 问题定义(检索辅助,极简)
98
+
99
+ TUICallKit React/Vue v4.x 用户询问如何发起音视频通话,以及 `calls` 与旧版 `call`/`groupCall` 的区别与迁移方式。
100
+
101
+ ## 8. 同义问法覆盖(检索召回,极简)
102
+
103
+ - TUICallKit React/Vue 怎么发起通话?
104
+ - `calls` 和 `call` 有什么区别?
105
+ - v4.x 的 `userIDList` 参数怎么传?
106
+ - `CallMediaType` 和数字 1/2 可以混用吗?
107
+ - 旧项目从 `TUICallKitServer.call` 迁移到 `TUICallKitAPI.calls` 要注意什么?
108
+ - `call` 传入的 `type` 参数 1 和 2 分别代表什么?
109
+ - `callMediaType` 参数 1 和 2 代表语音还是视频?
110
+ - TUICallKit 通话类型数字 1 和 2 是什么意思?
111
+
112
+ ## 9. 参考来源(可选)
113
+
114
+ - TUICallKit React/Vue:`https://cloud.tencent.com/document/product/647/81015`
@@ -0,0 +1,128 @@
1
+ ---
2
+ title: TUICallEngine 通话邀请接收与发起流程
3
+ product: call
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [TUICallEngine, ON_CALL_RECEIVED, calls, accept, reject, 通话邀请, call-engine-lite, userData, callMediaType]
7
+ version_range: ">=4.0.0"
8
+ ---
9
+
10
+ # TUICallEngine 通话邀请接收与发起流程
11
+
12
+ ## 1. 核心结论
13
+
14
+ - 接收通话邀请只监听 `TUICallEvent.ON_CALL_RECEIVED`,**不要监听 Chat SDK 的 `MESSAGE_RECEIVED` 自行解析通话邀请**。
15
+ - 发起通话使用 `TUICallEngine.calls()`,参数中 `userIDList` 传数组、`type` 传媒体类型。
16
+ - 收到邀请后用 `accept()` 接听或 `reject()` 拒绝,扩展信息通过 `userData` 字符串传递。
17
+ - Web 与小程序接口一致,仅包名不同(Web: `@trtc/call-engine-lite-js`,小程序: `@trtc/call-engine-lite-wx`)。
18
+
19
+ ## 2. 字段语义对照
20
+
21
+ | 字段/能力 | 作用 | 说明 |
22
+ |---|---|---|
23
+ | `TUICallEvent.ON_CALL_RECEIVED` | 接收通话邀请事件 | 被叫收到来电时触发,不要从 Chat 自定义消息解析 |
24
+ | `calls({userIDList, type, ...})` | 发起通话 | 主叫调用,单聊/多人通话统一入口 |
25
+ | `accept()` | 接听通话 | 被叫在收到邀请后调用 |
26
+ | `reject()` | 拒绝通话 | 被叫在收到邀请后调用 |
27
+ | `userData` | 自定义扩展信息 | 主叫传入的字符串,被叫从 `ON_CALL_RECEIVED` 事件中读取 |
28
+ | `callMediaType` | 通话媒体类型 | `ON_CALL_RECEIVED` 事件中携带,1=语音、2=视频 |
29
+ | `inviteID` | 邀请 ID | 标识一次通话邀请,用于关联后续事件 |
30
+ | `callId` | 通话 ID | 本次通话的唯一标识 |
31
+ | `callRole` | 角色 | 主叫(`call`)/ 被叫(`called`) |
32
+
33
+ ### ON_CALL_RECEIVED 事件字段
34
+
35
+ | 参数 | 类型 | 含义 |
36
+ |---|---|---|
37
+ | callerId | String | 邀请者 |
38
+ | calleeIdList | Array\<String\> | 同时还被邀请的人 |
39
+ | isFromGroup | Boolean | 是否是群组通话 |
40
+ | inviteData | Object | 呼叫数据 |
41
+ | inviteID | String | 邀请 ID |
42
+ | userData | String | 扩展字段,主叫传入的自定义信息 |
43
+ | callId | String | 本次通话的唯一 ID |
44
+ | roomID | Number | 音视频房间 ID |
45
+ | callMediaType | Number | 通话媒体类型(1=语音,2=视频) |
46
+ | callRole | String | 角色:主叫/被叫 |
47
+
48
+ ### calls 参数说明
49
+
50
+ | 参数 | 类型 | 是否必填 | 含义 |
51
+ |---|---|---|---|
52
+ | userIDList | Array\<String\> | 是 | 被呼叫的用户列表 |
53
+ | type | Number | 是 | 1=语音,2=视频(`CallMediaType`) |
54
+ | userData | String | 否 | 自定义扩展信息,被叫可从 `ON_CALL_RECEIVED` 读取 |
55
+ | timeout | Number | 否 | 超时时间(秒),默认 30 |
56
+ | roomID | Number | 否 | 数字房间号,范围 [1, 2147483647] |
57
+ | strRoomID | String | 否 | 字符串房间号,与 roomID 互斥 |
58
+ | chatGroupID | String | 否 | Chat 群组 ID,群聊中多人通话时填写 |
59
+ | offlinePushInfo | Object | 否 | 自定义离线消息推送参数 |
60
+
61
+ ## 3. 机制/时序
62
+
63
+ 主叫调用 `calls()` 发起邀请 -> SDK 通过信令通道发送邀请 -> 被叫触发 `ON_CALL_RECEIVED` -> 被叫调用 `accept()` 接听或 `reject()` 拒绝 -> 通话建立/结束。
64
+
65
+ 通话过程中的实时状态变化通过 TUICallEngine 的事件监听处理,不依赖 Chat 消息。
66
+
67
+ ## 4. 标准用法
68
+
69
+ 1. 创建 `TUICallEngine` 实例并登录。
70
+ 2. 主叫调用 `calls()` 发起通话邀请。
71
+ 3. 被叫监听 `ON_CALL_RECEIVED` 事件,收到后调用 `accept()` 或 `reject()`。
72
+ 4. 扩展信息通过 `userData` 字符串传递,被叫从事件中读取。
73
+
74
+ ```javascript
75
+ // Web: @trtc/call-engine-lite-js
76
+ // 小程序: @trtc/call-engine-lite-wx (API 一致,仅包名不同)
77
+ import { TUICallEngine, TUICallEvent } from '@trtc/call-engine-lite-js';
78
+
79
+ // 创建实例并登录
80
+ const tuiCallEngine = TUICallEngine.createInstance({ SDKAppID: xxx, tim: timInstance });
81
+ await tuiCallEngine.login({ userID, userSig });
82
+
83
+ // 主叫:发起通话邀请
84
+ await tuiCallEngine.calls({
85
+ userIDList: ['user_bob'],
86
+ type: 2, // 1=语音 2=视频
87
+ userData: '{"ext":"info"}',
88
+ timeout: 30,
89
+ });
90
+
91
+ // 被叫:监听通话邀请
92
+ tuiCallEngine.on(TUICallEvent.ON_CALL_RECEIVED, (event) => {
93
+ console.log('来电', event);
94
+ // 展示接听 UI,随后调用 accept() 或 reject()
95
+ tuiCallEngine.accept({ inviteID: event.inviteID, roomID: event.roomID });
96
+ });
97
+ ```
98
+
99
+ ## 5. 结果判定
100
+
101
+ - 主叫调用 `calls()` 后,被叫能收到 `ON_CALL_RECEIVED` 事件。
102
+ - 被叫调用 `accept()` 后通话建立,`reject()` 后通话被拒绝。
103
+ - `userData` 在主叫传入后,被叫能从事件中正确读取。
104
+ - 通话过程中的其他事件(接听、挂断、超时等)通过 TUICallEngine 的事件机制正常触发。
105
+
106
+ ## 6. 常见误区
107
+
108
+ - 误区 1:监听 `MESSAGE_RECEIVED` 自行解析通话邀请(应使用 `ON_CALL_RECEIVED`)。
109
+ - 误区 2:使用 `businessID` / 底层 payload 格式等 SDK 内部字段(无官方公开文档,不要编造)。
110
+ - 误区 3:认为 `customData` 字段存在(v4.x 使用 `userData` 字符串传递自定义信息)。
111
+
112
+ ## 7. 问题定义(检索辅助,极简)
113
+
114
+ TUICallEngine Web/小程序用户需要了解如何接收通话邀请、发起通话以及传递自定义扩展信息。
115
+
116
+ ## 8. 同义问法覆盖(检索召回,极简)
117
+
118
+ - TUICallEngine 怎么接收通话邀请?
119
+ - TUICallEngine 怎么发起通话?
120
+ - `ON_CALL_RECEIVED` 各字段含义是什么?
121
+ - `calls` API 参数怎么填?
122
+ - TUICallEngine 如何传递自定义扩展信息?
123
+ - 小程序 TUICallEngine 通话邀请处理和 Web 端一样吗?
124
+
125
+ ## 9. 参考来源(可选)
126
+
127
+ - Web TUICallEngine:`https://cloud.tencent.com/document/product/647/78757`
128
+ - 小程序 TUICallEngine:`https://cloud.tencent.com/document/product/647/78761`
@@ -0,0 +1,72 @@
1
+ ---
2
+ title: TUICallEngine 设置日志输出级别
3
+ product: call
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [TUICallEngine, setLogLevel, 日志级别, log level, 控制台日志, 关闭日志]
7
+ version_range: ">=4.0.0"
8
+ ---
9
+
10
+ # TUICallEngine 设置日志输出级别
11
+
12
+ ## 1. 核心结论
13
+
14
+ - TUICallEngine 提供 `setLogLevel` 接口控制日志输出级别,创建实例后即可调用。
15
+ - 接入阶段建议设为级别 0(全量日志),正式上线后设为级别 1(默认,关键信息)或更高。
16
+ - 需要关闭日志时设为级别 4。
17
+
18
+ ## 2. 字段语义对照
19
+
20
+ | 级别 | 值 | 说明 |
21
+ |---|---|---|
22
+ | 普通级别 | 0 | 日志量较多,接入调试时建议使用 |
23
+ | 主要级别 | 1 | SDK 输出关键信息,**默认日志等级** |
24
+ | 告警级别 | 2 | SDK 只输出告警和错误级别的日志 |
25
+ | 错误级别 | 3 | SDK 只输出错误级别的日志 |
26
+ | 无日志级别 | 4 | SDK 将不打印任何日志 |
27
+
28
+ ## 3. 机制/时序
29
+
30
+ 创建 `TUICallEngine` 实例 -> 调用 `setLogLevel` 设置日志级别 -> 后续 SDK 按指定级别输出日志。调用一次全局生效,无需重复设置。
31
+
32
+ ## 4. 标准用法
33
+
34
+ 1. 通过 `TUICallEngine.createInstance(options)` 创建引擎实例。
35
+ 2. 调用 `tuiCallEngine.setLogLevel(level)` 设置日志级别。
36
+ 3. 接入调试时使用级别 0,正式上线后根据需要调整为级别 1-4。
37
+
38
+ ```javascript
39
+ import TUICallEngine from '@trtc/call-engine-lite-js'; // Web
40
+ // import TUICallEngine from '@trtc/call-engine-lite-wx'; // 小程序
41
+
42
+ const tuiCallEngine = TUICallEngine.createInstance({ SDKAppID: 0 });
43
+ tuiCallEngine.setLogLevel(0); // 接入调试:全量日志
44
+ ```
45
+
46
+ ## 5. 结果判定
47
+
48
+ - 调用 `setLogLevel` 后,控制台日志量按目标级别输出。
49
+ - 级别 4 下 SDK 不再输出任何日志。
50
+ - 无需重启或重新初始化即可生效。
51
+
52
+ ## 6. 常见误区
53
+
54
+ - 误区 1:认为 `setLogLevel` 需要在 `init` 之后才能调用(实际上创建实例后即可调用)。
55
+ - 误区 2:使用级别 4 后期望还能收到关键告警(级别 4 关闭所有日志)。
56
+
57
+ ## 7. 问题定义(检索辅助,极简)
58
+
59
+ TUICallEngine 用户希望控制 SDK 日志输出量:接入时查看完整日志、上线后减少日志、或完全关闭日志输出。
60
+
61
+ ## 8. 同义问法覆盖(检索召回,极简)
62
+
63
+ - TUICallEngine 怎么关闭日志?
64
+ - TUICallEngine 日志级别怎么设置?
65
+ - `setLogLevel` 各取值含义是什么?
66
+ - 接入阶段怎么查看 TUICallEngine 完整日志?
67
+ - 小程序 TUICallEngine 日志级别和 Web 端一样吗?
68
+
69
+ ## 9. 参考来源(可选)
70
+
71
+ - Web `setLogLevel` 文档:`https://web.sdk.qcloud.com/component/trtccalling/doc/TUICallEngine/web/zh-cn/TUICallEngine.html#setLogLevel`
72
+ - 小程序 `setLogLevel` 文档:`https://cloud.tencent.com/document/product/647/78761#setLogLevel`
@@ -0,0 +1,87 @@
1
+ ---
2
+ title: Web TUICallKit 如何获取 TUICallEngine 实例
3
+ product: call
4
+ frameworks: [react, vue, miniprogram, web]
5
+ scope: platform_common
6
+ tags: [TUICallKit, getTUICallEngineInstance, 引擎实例, 底层引擎, 微信原生小程序, uniapp 小程序]
7
+ version_range: ">=4.0.0"
8
+ ---
9
+
10
+ # Web TUICallKit 如何获取 TUICallEngine 实例
11
+
12
+ ## 1. 核心结论
13
+
14
+ - 通过 `TUICallKitAPI.getTUICallEngineInstance()` 获取 TUICallEngine 底层引擎实例。
15
+ - 获取引擎实例后,可通过 `.on()` 监听通话事件(如 `ON_CALL_BEGIN`、`ON_CALL_RECEIVED` 等)。
16
+
17
+ ## 2. 字段语义对照
18
+
19
+ | 字段/能力 | 作用 | 说明 |
20
+ |---|---|---|
21
+ | `TUICallKitAPI` | TUICallKit API 入口 | 从对应平台的包引入,提供 `getTUICallEngineInstance()` |
22
+ | `getTUICallEngineInstance()` | 获取 TUICallEngine 实例 | 返回引擎实例,用于监听事件和调用底层 API |
23
+ | `TUICallEngine` | 引擎实例 | 通过该方法获取,用于注册事件回调 |
24
+
25
+ ## 3. 机制/时序
26
+
27
+ TUICallKit 初始化完成后 -> 调用 `TUICallKitAPI.getTUICallEngineInstance()` 获取引擎实例 -> 使用引擎实例注册事件监听或调用底层 API。
28
+
29
+ 需确保 TUICallKit 初始化完成后调用,否则可能返回 `undefined`。
30
+
31
+ ## 4. 标准用法
32
+
33
+ 1. 从对应平台的包引入 `TUICallKitAPI`。
34
+ 2. 调用 `TUICallKitAPI.getTUICallEngineInstance()` 获取引擎实例。
35
+ 3. 使用引擎实例注册事件监听或调用其他底层方法。
36
+
37
+ ```javascript
38
+ // React: @trtc/calls-uikit-react
39
+ // Vue 3: @trtc/calls-uikit-vue
40
+ // Vue 2.7: @trtc/calls-uikit-vue2
41
+ // Vue 2.6: @trtc/calls-uikit-vue2.6
42
+ // uniapp 小程序: @trtc/calls-uikit-wx-uniapp
43
+ // 微信原生小程序: @trtc/calls-uikit-wx (API 一致,仅包名不同)
44
+ import { TUICallKitAPI } from "@trtc/calls-uikit-react";
45
+
46
+ const tuiCallEngine = TUICallKitAPI.getTUICallEngineInstance();
47
+
48
+ if (tuiCallEngine) {
49
+ // 获取成功,可监听事件或调用底层 API
50
+ tuiCallEngine.on(TUICallEvent.ON_CALL_BEGIN, (event) => {
51
+ console.log('通话建立', event);
52
+ });
53
+ } else {
54
+ console.warn('TUICallEngine 实例未就绪,请确认 TUICallKit 已完成初始化');
55
+ }
56
+ ```
57
+
58
+ ## 5. 结果判定
59
+
60
+ - `getTUICallEngineInstance()` 返回非 `undefined` 的引擎实例,可正常使用。
61
+ - 通过引擎实例注册的事件回调能正常触发。
62
+ - 多次调用返回同一个引擎实例(单例)。
63
+
64
+ ## 6. 常见误区
65
+
66
+ - 误区 1:在 TUICallKit 初始化完成前调用 `getTUICallEngineInstance()`(返回 `undefined`)。
67
+ - 误区 2:认为每次调用 `getTUICallEngineInstance()` 都会创建新的引擎实例(实际为单例,多次调用返回同一实例)。
68
+ - 误区 3:从小程序的引擎包直接创建实例(应通过 `TUICallKitAPI.getTUICallEngineInstance()` 获取,而非自行创建)。
69
+
70
+ ## 7. 问题定义(检索辅助,极简)
71
+
72
+ TUICallKit 用户需要获取底层 TUICallEngine 实例,用于监听通话事件或调用底层 API。
73
+
74
+ ## 8. 同义问法覆盖(检索召回,极简)
75
+
76
+ - TUICallKit 怎么获取 TUICallEngine 实例?
77
+ - `getTUICallEngineInstance` 怎么用?
78
+ - TUICallKit Vue 如何获取 TUICallEngine 实例?
79
+ - TUICallKit React 怎么监听底层 TUICallEngine 事件?
80
+ - 小程序 TUICallKit 能获取 TUICallEngine 吗?
81
+ - TUICallKit 获取引擎实例后能做什么?
82
+
83
+ ## 9. 参考来源(可选)
84
+
85
+ - React `getTUICallEngineInstance`:`https://cloud.tencent.com/document/product/647/81015#getTUICallEngineInstance`
86
+ - Vue `getTUICallEngineInstance`:`https://cloud.tencent.com/document/product/647/81015#getTUICallEngineInstance`
87
+ - 小程序 `getTUICallEngineInstance`:`https://cloud.tencent.com/document/product/647/78760#getTUICallEngineInstance`
@@ -0,0 +1,83 @@
1
+ ---
2
+ title: 如何获取通话的房间号
3
+ product: call
4
+ frameworks: [react, vue, miniprogram, web]
5
+ scope: platform_common
6
+ tags: [TUICallKit, roomID, 房间号, ON_CALL_BEGIN, ON_CALL_END, callengine, 获取房间号, 通话房间号, Roomid, onCallBegin]
7
+ version_range: ">=4.0.0"
8
+ ---
9
+
10
+ # TUICallKit 如何获取通话的房间号
11
+
12
+ ## 1. 核心结论
13
+
14
+ - 获取通话房间号的方式:通过监听 TUICallEngine 的事件(`ON_CALL_BEGIN`、`ON_CALL_END` 等)即可获取,`event.roomID` 即为当前通话的房间号。
15
+ - 需要先通过 `TUICallKitAPI.getTUICallEngineInstance()` 获取 TUICallEngine 实例,再调用 `on()` 监听事件。
16
+ - React、Vue、小程序接口一致,仅包名不同。
17
+
18
+ ## 2. 字段语义对照
19
+
20
+ | 字段/能力 | 作用 | 说明 |
21
+ |---|---|---|
22
+ | `TUICallEvent.ON_CALL_BEGIN` | 通话建立事件 | 通话接通时触发,事件中携带 `roomID` |
23
+ | `TUICallEvent.ON_CALL_END` | 通话结束事件 | 通话结束时触发,事件中携带 `roomID` |
24
+ | `TUICallKitAPI.getTUICallEngineInstance()` | 获取 TUICallEngine 实例 | 从 TUICallKit 获取底层引擎实例 |
25
+ | `engine.on(event, handler)` | 监听引擎事件 | 通过引擎实例注册事件回调 |
26
+ | `event.roomID` | 通话房间号 | 事件参数中的房间号字段 |
27
+
28
+ ## 3. 机制/时序
29
+
30
+ TUICallKit 初始化 -> 通话接通(`ON_CALL_BEGIN`)-> 通话进行中 -> 通话结束(`ON_CALL_END`)。`ON_CALL_BEGIN` 和 `ON_CALL_END` 等通话相关事件均携带 `roomID`,在回调中读取即可。
31
+
32
+ ## 4. 标准用法
33
+
34
+ 1. 通过 `TUICallKitAPI.getTUICallEngineInstance()` 获取 TUICallEngine 实例。
35
+ 2. 调用 `engine.on()` 监听 `TUICallEvent.ON_CALL_BEGIN` 或 `ON_CALL_END` 事件。
36
+ 3. 在回调中读取 `event.roomID` 获取房间号。
37
+
38
+ ```javascript
39
+ // Web: @trtc/call-engine-lite-js
40
+ // 小程序: @trtc/call-engine-lite-wx (API 一致,仅包名不同)
41
+ import { TUICallEvent } from "@trtc/call-engine-lite-js";
42
+
43
+ const handleOnCallBegin = function(event) {
44
+ // event.roomID 即为当前通话的房间号
45
+ console.log('通话建立,房间号:', event.roomID);
46
+ };
47
+
48
+ TUICallKitAPI.getTUICallEngineInstance().on(
49
+ TUICallEvent.ON_CALL_BEGIN,
50
+ handleOnCallBegin
51
+ );
52
+ ```
53
+
54
+ ## 5. 结果判定
55
+
56
+ - 通话建立后,`ON_CALL_BEGIN` 回调触发,`event.roomID` 返回有效的房间号。
57
+ - 通话结束后,`ON_CALL_END` 回调触发,也可读取 `event.roomID`。
58
+ - `roomID` 值在通话期间保持不变。
59
+
60
+ ## 6. 常见误区
61
+
62
+ - 误区 1:在 TUICallKit 初始化完成前调用 `getTUICallEngineInstance()` 获取实例(需确保初始化完成后再获取)。
63
+ - 误区 2:认为 `roomID` 在通话过程中会变化(同一通话的房间号是固定的)。
64
+
65
+ ## 7. 问题定义(检索辅助,极简)
66
+
67
+ Web TUICallKit React/Vue/小程序用户需要获取当前通话的房间号,用于日志记录或与其他服务关联。
68
+
69
+ ## 8. 同义问法覆盖(检索召回,极简)
70
+
71
+ - TUICallKit 怎么获取房间号?
72
+ - 通话建立时如何拿到 roomID?
73
+ - `ON_CALL_BEGIN` 事件怎么监听?
74
+ - TUICallKit React 获取通话房间号的方法是什么?
75
+ - 小程序 TUICallKit 怎么拿 roomID?
76
+ - 如何获取通话的房间号 Roomid?
77
+ - Web TUICallKit 如何获取通话的房间号?
78
+ - 通话房间号怎么拿?
79
+
80
+ ## 9. 参考来源(可选)
81
+
82
+ - Web `ON_CALL_BEGIN` 文档:`https://cloud.tencent.com/document/product/647/78758#ON_CALL_BEGIN`
83
+ - 小程序 `ON_CALL_BEGIN` 文档:`https://cloud.tencent.com/document/product/647/81012#ON_CALL_BEGIN`
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: TUICallKit 限制说明
3
+ product: call
4
+ frameworks: [react, vue, miniprogram, web]
5
+ scope: platform_common
6
+ tags: [TUICallKit, 限制, 不支持, 离线推送, 支付宝, 头条小程序, 企业微信, 桌面端, 兼容性]
7
+ version_range: ">=2.0.0"
8
+ ---
9
+
10
+ # TUICallKit 限制说明
11
+
12
+ ## 1. 核心结论
13
+
14
+ | 问题 | 结论 |
15
+ |---|---|
16
+ | Web TUICallKit 能否接收离线推送消息? | Web TUICallKit 不支持接收离线推送消息 |
17
+ | 微信小程序 TUICallKit 能否运行到支付宝、头条小程序? | 不能,仅支持运行到微信小程序 |
18
+ | 微信小程序 TUICallKit 能否运行到企业微信里? | 不能,仅支持运行到微信小程序 |
19
+ | 微信小程序 TUICallKit 能否运行到 PC 桌面端微信里? | 不能,仅支持运行到微信小程序 |
20
+ | 微信小程序 TUICallKit 能否接收离线推送消息? | 微信小程序 TUICallKit 不支持接收离线推送消息 |
21
+
22
+ ## 3. 机制/时序
23
+
24
+ TUICallKit 各平台的能力边界由底层平台限制决定。微信小程序依赖微信原生能力,无法跨平台运行;Web 端受浏览器自动播放策略和离线推送机制的限制。
25
+
26
+ ## 7. 问题定义(检索辅助,极简)
27
+
28
+ 用户咨询 TUICallKit 在不同平台/场景下的能力边界,确认是否支持离线推送、跨平台运行等。
29
+
30
+ ## 8. 同义问法覆盖(检索召回,极简)
31
+
32
+ - TUICallKit 支持离线推送吗?
33
+ - 微信小程序 TUICallKit 能在支付宝上用吗?
34
+ - TUICallKit 小程序能在企业微信里用吗?
35
+ - TUICallKit 微信小程序支持 PC 端微信吗?
36
+ - TUICallKit Web 端有没有离线消息通知?
37
+ - TUICallKit 小程序只支持微信吗?
@@ -0,0 +1,103 @@
1
+ ---
2
+ title: TUICallKit 用户注册与多实例被踢问题说明
3
+ product: call
4
+ frameworks: [react, vue, miniprogram, web]
5
+ scope: platform_common
6
+ tags: [TUICallKit, 用户注册, init, userSig, 自动创建用户, 多实例登录, 被踢, KICKED_OUT, 排查, 同一浏览器, 多实例, web多实例]
7
+ version_range: ">=4.0.0"
8
+ ---
9
+
10
+ # TUICallKit 用户注册与多实例被踢问题说明
11
+
12
+ ## 1. 核心结论
13
+
14
+ ### 用户注册
15
+
16
+ - TUICallKit **没有独立的前端注册接口**。用户注册通过 `init` 接口完成:传入 `userID` 和 `userSig` 即可完成鉴权和登录。
17
+ - 首次使用后端签发的 `userID` 和 `userSig` 登录 TUICallKit 后,如果该 `userID` 在腾讯云 IM 中不存在,系统会自动创建该用户。
18
+ - 也可以在 IM 控制台批量导入用户,然后使用已导入的 `userID` 和对应的 `userSig` 登录。
19
+
20
+ ### 多实例被踢
21
+
22
+ - 同一 `userID` 在不同浏览器标签页或不同设备上同时登录时,默认会被踢下线(`KICKED_OUT`),原因是 Chat SDK Web 端默认只允许一个实例在线。
23
+ - 在 Chat 控制台开启 **Web 多实例登录** 后,同一 `userID` 可在多个标签页或设备上同时在线,不会被踢。
24
+ - 不同 `userID` 在同一浏览器登录不受此限制影响,不会互相踢下线。
25
+
26
+ ## 2. 字段语义对照
27
+
28
+ | 字段/能力 | 作用 | 说明 |
29
+ |---|---|---|
30
+ | `init` | 初始化并注册用户 | 传入 `SDKAppID`、`userID`、`userSig` 完成鉴权 |
31
+ | `userID` | 用户标识 | 由业务后端签发或自定义,首次登录时自动创建用户 |
32
+ | `userSig` | 用户签名 | 由业务后端签发,用于鉴权 |
33
+ | `KICKED_OUT` | 被踢下线事件 | 同一账号/多实例登录时触发 |
34
+ | Web 多实例登录 | 控制台配置项 | 开启后同一浏览器可同时登录多个账号 |
35
+
36
+ ## 3. 机制/时序
37
+
38
+ ### 用户注册流程
39
+
40
+ 后端生成 `userID` + `userSig` -> 前端调用 `init({ SDKAppID, userID, userSig })` -> TUICallKit 使用 Chat SDK 登录 -> 若用户不存在则自动创建 -> 登录成功。
41
+
42
+ ### 多实例被踢机制
43
+
44
+ 同一 `userID` 在标签页 A 登录 -> 同一浏览器新开标签页 B 登录同一 `userID` -> Chat 后台检测到同多实例登录 -> 踢掉标签页 A -> 标签页 A 收到 `KICKED_OUT` 事件。
45
+
46
+ ## 4. 标准用法
47
+
48
+ ### 用户注册与初始化
49
+
50
+ ```javascript
51
+ // React: @trtc/calls-uikit-react
52
+ // Vue 3: @trtc/calls-uikit-vue
53
+ // Vue 2.7: @trtc/calls-uikit-vue2
54
+ // Vue 2.6: @trtc/calls-uikit-vue2.6
55
+ // uniapp 小程序: @trtc/calls-uikit-wx-uniapp
56
+ // 微信原生小程序: @trtc/calls-uikit-wx (API 一致,仅包名不同)
57
+ import { TUICallKitAPI } from "@trtc/calls-uikit-react";
58
+
59
+ TUICallKitAPI.init({
60
+ SDKAppID: 0, // 控制台获取的 SDKAppID
61
+ userID: 'user_xxx', // 业务后端签发的用户 ID
62
+ userSig: 'xxx', // 业务后端签发的用户签名
63
+ });
64
+ ```
65
+
66
+ ### 开启 Web 多实例登录(解决被踢)
67
+
68
+ 1. 登录腾讯云 IM 控制台。
69
+ 2. 进入目标应用的功能配置页面。
70
+ 3. 开启 **Web 多实例登录** 开关。
71
+ 4. 保存后生效,无需重启客户端。
72
+
73
+ ## 5. 结果判定
74
+
75
+ - 调用 `init` 后登录成功,无报错。
76
+ - 控制台开启 Web 多实例后,同一 `userID` 可在多个标签页或设备上同时在线。
77
+ - 未开启时,同一 `userID` 在新标签页登录后旧标签页收到 `KICKED_OUT` 事件。
78
+
79
+ ## 6. 常见误区
80
+
81
+ - 误区 1:认为 TUICallKit 有独立的前端注册 API(实际通过 `init` 完成注册+登录)。
82
+ - 误区 2:被踢后认为是 TUICallKit 的 bug(实际是 Chat SDK 的多端登录限制)。
83
+ - 误区 3:不同 origin 也会被踢(不同 origin 视为不同实例,不受影响)。
84
+ - 误区 4:不同 `userID` 在同一浏览器登录也会被踢(实际多实例限制针对同一 `userID`,不同 `userID` 互不影响)。
85
+ - 误区 4:认为 `KICKED_OUT` 只能通过关闭其他登录来解决(开启 Web 多实例登录即可避免)。
86
+
87
+ ## 7. 问题定义(检索辅助,极简)
88
+
89
+ 用户咨询 TUICallKit Web 端用户注册方式(是否有独立注册接口、是否自动创建用户),以及同一浏览器多账号被踢的原因与解决方案。
90
+
91
+ ## 8. 同义问法覆盖(检索召回,极简)
92
+
93
+ - TUICallKit 用户注册接口是什么?
94
+ - 首次登录会不会自动创建用户?
95
+ - 同一浏览器两个账号同时登录被踢怎么办?
96
+ - `KICKED_OUT` 怎么排查?
97
+ - 不同域名登录会被踢吗?
98
+ - 怎么让多个用户同时登录同一个页面?
99
+
100
+ ## 9. 参考来源(可选)
101
+
102
+ - TUICallKit `init` 接口:`https://cloud.tencent.com/document/product/647/81015#init`
103
+ - IM 控制台 Web 多实例配置:`https://console.cloud.tencent.com/im`
@@ -827,3 +827,4 @@ class CallActivity : AppCompatActivity() {
827
827
  ### 在通话邀请超时时间内,被邀请者如果离线再上线,能否收到来电事件?
828
828
 
829
829
  单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的20条群消息,如果存在通话邀请,则触发来电邀请事件。
830
+
@@ -912,3 +912,4 @@ MainScope().launch {
912
912
  ### 在通话邀请超时时间内,被邀请者如果离线再上线,能否收到来电事件?
913
913
 
914
914
  单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的20条群消息,如果存在通话邀请,则触发来电邀请事件。
915
+
@@ -1122,3 +1122,4 @@ iOS 端支持通过底层 TRTC 引擎实现应用外画中画功能。当应用
1122
1122
  ### 在通话邀请超时时间内,被邀请者如果离线再上线,能否收到来电事件?
1123
1123
 
1124
1124
  单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的20条群消息,如果存在通话邀请,则触发来电邀请事件。
1125
+
@@ -1195,3 +1195,4 @@ CallStore.shared.state.selfInfo.addListener(() {
1195
1195
  ### 在通话邀请超时时间内,被邀请者如果离线再上线,能否收到来电事件?
1196
1196
 
1197
1197
  单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的20条群消息,如果存在通话邀请,则触发来电邀请事件。
1198
+
@@ -1171,3 +1171,4 @@ class CallViewController: UIViewController {
1171
1171
  ### 在通话邀请超时时间内,被邀请者如果离线再上线,能否收到来电事件?
1172
1172
 
1173
1173
  单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的20条群消息,如果存在通话邀请,则触发来电邀请事件。
1174
+
@@ -1272,3 +1272,4 @@ private func observeSelfCallStatus() {
1272
1272
  ### 在通话邀请超时时间内,被邀请者如果离线再上线,能否收到来电事件?
1273
1273
 
1274
1274
  单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的20条群消息,如果存在通话邀请,则触发来电邀请事件。
1275
+
@@ -1,4 +1,4 @@
1
- 本文档将指导您如何基于 TIMPush 服务实现 VoIP 推送功能,适用于使用 AtomicXCore 进行无 UI 集成的场景。
1
+ 本文档将指导您如何基于 [TIMPush](https://cloud.tencent.com/document/product/269/133003) 服务实现 VoIP 推送功能,适用于使用 AtomicXCore 进行无 UI 集成的场景。
2
2
 
3
3
  > **注意:**
4
4
  > - 使用 **VoIP** 推送功能首先需要 开通 TIMPush 服务。