@tencent-rtc/mcp 1.6.7 → 1.7.0

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 (307) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +53 -39
  3. package/knowledge/build-index.js +31 -4
  4. package/knowledge/chunker.js +82 -14
  5. package/knowledge/chunking-policy.js +100 -0
  6. package/knowledge/content-loader.js +3 -1
  7. package/knowledge/frontmatter-meta.js +167 -0
  8. package/knowledge/path-meta.js +28 -6
  9. package/knowledge/search/exact-lookup.js +9 -227
  10. package/knowledge/search/filter-pool.js +17 -26
  11. package/knowledge/search/framework-fallback.js +22 -0
  12. package/knowledge/search/intent-router.js +13 -0
  13. package/knowledge/search/query-normalizer.js +129 -0
  14. package/knowledge/search/search-core.js +391 -0
  15. package/knowledge/search/search-knowledge.js +351 -323
  16. package/knowledge/search/search-message.js +87 -0
  17. package/knowledge/search/search-pass.js +428 -0
  18. package/knowledge/search/search-types.js +1 -0
  19. package/knowledge/search/url-row-scorer.js +258 -0
  20. package/package.json +1 -1
  21. package/resource/_schema/feature-aliases.yaml +1 -0
  22. package/resource/_schema/query-normalization.yaml +9 -0
  23. package/resource/index/manifest.json +1 -1
  24. package/resource/integration/callkit/preset/android/integration.md +3 -14
  25. package/resource/integration/callkit/preset/flutter/integration.md +1 -12
  26. package/resource/integration/callkit/preset/ios/integration.md +2 -12
  27. package/resource/integration/callkit/preset/react/integration.md +1 -14
  28. package/resource/integration/callkit/preset/vue/integration.md +1 -14
  29. package/resource/integration/chat/preset/android/integration.md +6 -13
  30. package/resource/integration/chat/preset/flutter/integration.md +1 -8
  31. package/resource/integration/chat/preset/ios/integration.md +4 -12
  32. package/resource/integration/chat/preset/react/integration.md +6 -16
  33. package/resource/integration/chat/preset/vue/integration.md +0 -9
  34. package/resource/integration/livekit/preset/live/android/live-audience-integration.md +2 -6
  35. package/resource/integration/livekit/preset/live/android/live-host-integration.md +1 -11
  36. package/resource/integration/livekit/preset/live/android/live-list-integration.md +2 -6
  37. package/resource/integration/livekit/preset/live/android/prepare-integration.md +2 -7
  38. package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +2 -7
  39. package/resource/integration/livekit/preset/live/ios/live-host-integration.md +1 -13
  40. package/resource/integration/livekit/preset/live/ios/live-list-integration.md +2 -10
  41. package/resource/integration/livekit/preset/live/ios/prepare-integration.md +3 -8
  42. package/resource/integration/livekit/preset/live/vue/live-list-integration.md +0 -4
  43. package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +1 -5
  44. package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +2 -7
  45. package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +2 -8
  46. package/resource/integration/roomkit/preset/vue/integration.md +0 -11
  47. package/resource/knowledge/callkit/best-practice/callkit-miniprogram/uniapp-shrink.md +60 -0
  48. package/resource/knowledge/callkit/best-practice/common/call-autoplay-blocked.md +77 -0
  49. package/resource/knowledge/callkit/best-practice/common/call-message-in-chat.md +78 -0
  50. package/resource/knowledge/callkit/best-practice/common/call-vs-calls.md +110 -0
  51. package/resource/knowledge/callkit/best-practice/common/callengine-call-flow.md +123 -0
  52. package/resource/knowledge/callkit/best-practice/common/callengine-log-level.md +67 -0
  53. package/resource/knowledge/callkit/best-practice/common/callkit-get-engine-instance.md +81 -0
  54. package/resource/knowledge/callkit/best-practice/common/callkit-get-roomid.md +78 -0
  55. package/resource/knowledge/callkit/best-practice/common/callkit-limitations.md +37 -0
  56. package/resource/knowledge/callkit/best-practice/common/callkit-user-register-and-kicked.md +98 -0
  57. package/resource/knowledge/callkit/core-sdk/android/answer-call.md +0 -7
  58. package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -8
  59. package/resource/knowledge/callkit/core-sdk/android/offline-push.md +1 -9
  60. package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +2 -8
  61. package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +2 -8
  62. package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -16
  63. package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -8
  64. package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -8
  65. package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -11
  66. package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +178 -200
  67. package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +195 -217
  68. package/resource/knowledge/callkit/faq/android.md +4 -14
  69. package/resource/knowledge/callkit/faq/common.md +0 -2
  70. package/resource/knowledge/callkit/faq/error-code.md +2 -4
  71. package/resource/knowledge/callkit/faq/ios.md +1 -4
  72. package/resource/knowledge/callkit/preset/android/api.md +0 -6
  73. package/resource/knowledge/callkit/preset/ios/api.md +0 -4
  74. package/resource/knowledge/callkit/preset/react/api.md +3 -4
  75. package/resource/knowledge/callkit/preset/vue/api.md +3 -4
  76. package/resource/knowledge/chat/best-practice/common/avchatroom-message-loss-diagnosis.md +65 -0
  77. package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md +62 -0
  78. package/resource/knowledge/chat/best-practice/common/image-message-url-lifecycle.md +59 -0
  79. package/resource/knowledge/chat/best-practice/common/login-repeat-2025-diagnosis.md +61 -0
  80. package/resource/knowledge/chat/best-practice/common/message-read-report-and-receipt.md +64 -0
  81. package/resource/knowledge/chat/best-practice/common/message-receive-event.md +65 -0
  82. package/resource/knowledge/chat/best-practice/common/message-risk-error-and-render.md +65 -0
  83. package/resource/knowledge/chat/best-practice/common/message-unread-count.md +71 -0
  84. package/resource/knowledge/chat/best-practice/miniprogram/audio-message-send.md +113 -0
  85. package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +63 -0
  86. package/resource/knowledge/chat/best-practice/miniprogram/media-upload-fail-diagnosis.md +64 -0
  87. package/resource/knowledge/chat/best-practice/web/audio-message-send.md +118 -0
  88. package/resource/knowledge/chat/preset/android/features/chat-setting.md +0 -5
  89. package/resource/knowledge/chat/preset/android/features/contact-list.md +0 -7
  90. package/resource/knowledge/chat/preset/android/features/conversation-list.md +0 -6
  91. package/resource/knowledge/chat/preset/android/features/language.md +0 -8
  92. package/resource/knowledge/chat/preset/android/features/message-input.md +0 -6
  93. package/resource/knowledge/chat/preset/android/features/message-list.md +0 -8
  94. package/resource/knowledge/chat/preset/android/features/search.md +0 -7
  95. package/resource/knowledge/chat/preset/android/features/theme.md +0 -4
  96. package/resource/knowledge/chat/preset/android-view/integration.md +0 -6
  97. package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +0 -4
  98. package/resource/knowledge/chat/preset/flutter/features/contact-list.md +0 -9
  99. package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -7
  100. package/resource/knowledge/chat/preset/flutter/features/language.md +0 -5
  101. package/resource/knowledge/chat/preset/flutter/features/message-input.md +0 -6
  102. package/resource/knowledge/chat/preset/flutter/features/message-list.md +0 -8
  103. package/resource/knowledge/chat/preset/flutter/features/search.md +0 -5
  104. package/resource/knowledge/chat/preset/flutter/features/theme.md +0 -4
  105. package/resource/knowledge/chat/preset/ios/features/chat-setting.md +0 -5
  106. package/resource/knowledge/chat/preset/ios/features/contact-list.md +0 -5
  107. package/resource/knowledge/chat/preset/ios/features/conversation-list.md +0 -7
  108. package/resource/knowledge/chat/preset/ios/features/language.md +1 -8
  109. package/resource/knowledge/chat/preset/ios/features/message-input.md +0 -6
  110. package/resource/knowledge/chat/preset/ios/features/message-list.md +0 -8
  111. package/resource/knowledge/chat/preset/ios/features/search.md +0 -5
  112. package/resource/knowledge/chat/preset/ios/features/theme.md +0 -4
  113. package/resource/knowledge/chat/preset/ios-uikit/integration.md +0 -6
  114. package/resource/knowledge/chat/preset/react/features/contact-list.md +0 -23
  115. package/resource/knowledge/chat/preset/react/features/conversation-actions.md +2 -11
  116. package/resource/knowledge/chat/preset/react/features/conversation-list.md +4 -26
  117. package/resource/knowledge/chat/preset/react/features/conversation-preview.md +0 -6
  118. package/resource/knowledge/chat/preset/react/features/search.md +0 -1
  119. package/resource/knowledge/chat/preset/react/features/theme.md +0 -1
  120. package/resource/knowledge/chat/preset/vue/features/contact-list.md +3 -9
  121. package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +0 -3
  122. package/resource/knowledge/chat/preset/vue/features/conversation-list.md +2 -13
  123. package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +2 -3
  124. package/resource/knowledge/chat/preset/vue/features/conversation-search.md +1 -0
  125. package/resource/knowledge/chat/preset/vue/features/search.md +4 -3
  126. package/resource/knowledge/chat/urls/sdk/web.md +1 -1
  127. package/resource/knowledge/livekit/best-practice/android/voice-room-anchor-start.md +120 -0
  128. package/resource/knowledge/livekit/best-practice/common/admin-take-seat.md +73 -0
  129. package/resource/knowledge/livekit/best-practice/common/audience-leave-live.md +81 -0
  130. package/resource/knowledge/livekit/best-practice/common/voice-room-no-audio-troubleshoot.md +100 -0
  131. package/resource/knowledge/livekit/best-practice/common/voice-room-seat-list-change.md +65 -0
  132. package/resource/knowledge/livekit/best-practice/flutter/voice-room-anchor-start.md +122 -0
  133. package/resource/knowledge/livekit/best-practice/ios/voice-room-anchor-start.md +126 -0
  134. package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
  135. package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +0 -3
  136. package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +0 -3
  137. package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
  138. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
  139. package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
  140. package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
  141. package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +0 -2
  142. package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
  143. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
  144. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
  145. package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +0 -2
  146. package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +0 -2
  147. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
  148. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +0 -3
  149. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
  150. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +0 -3
  151. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
  152. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
  153. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
  154. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +0 -2
  155. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
  156. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
  157. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
  158. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +0 -2
  159. package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
  160. package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
  161. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +0 -3
  162. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
  163. package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +0 -3
  164. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
  165. package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
  166. package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
  167. package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +0 -2
  168. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
  169. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
  170. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
  171. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +0 -2
  172. package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +0 -2
  173. package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +2 -2
  174. package/resource/knowledge/livekit/core-sdk/features/android/audio-effect.md +2 -3
  175. package/resource/knowledge/livekit/core-sdk/features/android/barrage.md +2 -2
  176. package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +2 -2
  177. package/resource/knowledge/livekit/core-sdk/features/android/gift.md +2 -7
  178. package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +3 -4
  179. package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +2 -2
  180. package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +2 -4
  181. package/resource/knowledge/livekit/core-sdk/features/flutter/barrage.md +2 -2
  182. package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
  183. package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +2 -7
  184. package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -2
  185. package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +2 -2
  186. package/resource/knowledge/livekit/core-sdk/features/ios/audio-effect.md +2 -4
  187. package/resource/knowledge/livekit/core-sdk/features/ios/barrage.md +2 -2
  188. package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +2 -2
  189. package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +2 -7
  190. package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +3 -4
  191. package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -3
  192. package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -4
  193. package/resource/knowledge/livekit/core-sdk/live/android/integration.md +1 -4
  194. package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -3
  195. package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -1
  196. package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -4
  197. package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -3
  198. package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -3
  199. package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +1 -4
  200. package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +0 -2
  201. package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +0 -5
  202. package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +1 -4
  203. package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -4
  204. package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +3 -6
  205. package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
  206. package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +0 -4
  207. package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +1 -4
  208. package/resource/knowledge/livekit/faq/error-code.md +0 -1
  209. package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +2 -3
  210. package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +3 -3
  211. package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +3 -3
  212. package/resource/knowledge/push/api-reference/android.md +0 -1
  213. package/resource/knowledge/push/api-reference/harmonyos.md +0 -2
  214. package/resource/knowledge/push/api-reference/react-native.md +3 -5
  215. package/resource/knowledge/push/api-reference/uni-app.md +3 -5
  216. package/resource/knowledge/push/api-reference/unity.md +0 -1
  217. package/resource/knowledge/push/api-reference/unreal-engine.md +0 -1
  218. package/resource/knowledge/push/config/android.md +0 -24
  219. package/resource/knowledge/push/config/harmonyos.md +0 -1
  220. package/resource/knowledge/push/config/ios.md +0 -3
  221. package/resource/knowledge/push/config/react-native.md +0 -29
  222. package/resource/knowledge/push/config/unity.md +1 -24
  223. package/resource/knowledge/push/config/unreal-engine.md +1 -24
  224. package/resource/knowledge/push/integration/android.md +0 -14
  225. package/resource/knowledge/push/integration/flutter.md +0 -19
  226. package/resource/knowledge/push/integration/harmonyos.md +0 -2
  227. package/resource/knowledge/push/integration/ios.md +0 -3
  228. package/resource/knowledge/push/integration/react-native.md +0 -24
  229. package/resource/knowledge/push/integration/uni-app.md +1 -11
  230. package/resource/knowledge/push/integration/unity.md +0 -9
  231. package/resource/knowledge/push/integration/unreal-engine.md +1 -17
  232. package/resource/knowledge/roomkit/best-practice/common/room-ghost-member.md +70 -0
  233. package/resource/knowledge/roomkit/best-practice/common/room-limit-and-multi.md +83 -0
  234. package/resource/knowledge/roomkit/best-practice/common/room-screen-share-preview.md +83 -0
  235. package/resource/knowledge/roomkit/best-practice/common/room-status-after-all-leave.md +69 -0
  236. package/resource/knowledge/roomkit/best-practice/vue/room-uikit-vs-atomicx.md +111 -0
  237. package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -4
  238. package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -4
  239. package/resource/knowledge/roomkit/core-sdk/android/room-state.md +0 -4
  240. package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +1 -5
  241. package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -4
  242. package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -4
  243. package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +0 -4
  244. package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +1 -5
  245. package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +1 -1
  246. package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -6
  247. package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
  248. package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -11
  249. package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +1 -5
  250. package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +1 -8
  251. package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -3
  252. package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +0 -3
  253. package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -5
  254. package/resource/knowledge/roomkit/preset/android/integration.md +0 -4
  255. package/resource/knowledge/roomkit/preset/flutter/integration.md +1 -13
  256. package/resource/knowledge/roomkit/preset/ios/integration.md +0 -6
  257. package/resource/knowledge/roomkit/preset/react/integration.md +0 -16
  258. package/resource/knowledge/rtcengine/web/api.md +1 -8
  259. package/resource/knowledge/rtcengine/web/faq.md +3 -5
  260. package/resource/knowledge/rtcengine/web/how_to_integrated_web_sdk.md +0 -6
  261. package/resource/knowledge/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +1 -1
  262. package/resource/knowledge/rtcengine/web/plugin/21-advanced-auto-play-policy.md +1 -1
  263. package/resource/knowledge/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +1 -1
  264. package/resource/knowledge/rtcengine/web/plugin/27-advanced-small-stream.md +1 -1
  265. package/resource/knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md +2 -0
  266. package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -3
  267. package/resource/knowledge/rtcengine/web/plugin/34-advanced-proxy.md +2 -4
  268. package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -4
  269. package/resource/knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md +1 -1
  270. package/resource/knowledge/trtc/android/TRTCCloud.md +8 -56
  271. package/resource/knowledge/trtc/android/TRTCCloudDef.md +6 -7
  272. package/resource/knowledge/trtc/android/TRTCCloudListener.md +1 -18
  273. package/resource/knowledge/trtc/android/TXAudioEffectManager.md +0 -14
  274. package/resource/knowledge/trtc/android/TXDeviceManager.md +0 -1
  275. package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -1
  276. package/resource/knowledge/trtc/c++/ITRTCCloud.md +7 -59
  277. package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +0 -14
  278. package/resource/knowledge/trtc/c++/ITXDeviceManager.md +0 -4
  279. package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1 -19
  280. package/resource/knowledge/trtc/c++/TRTCTypeDef.md +6 -7
  281. package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -1
  282. package/resource/knowledge/trtc/ios/TRTCCloud.md +9 -60
  283. package/resource/knowledge/trtc/ios/TRTCCloudDef.md +6 -7
  284. package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1 -19
  285. package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +0 -13
  286. package/resource/knowledge/trtc/ios/TXDeviceManager.md +0 -4
  287. package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -1
  288. package/server.js +27 -22
  289. package/tools/common/finalize_answer.js +9 -1
  290. package/tools/common/search_trtc_knowledge.js +3 -1
  291. package/tools/definitions/finalize_answer_def.js +2 -2
  292. package/tools/definitions/integration-boundary.js +2 -1
  293. package/tools/definitions/search_trtc_knowledge_def.js +2 -1
  294. package/utils/report-cls-client.js +3 -3
  295. package/utils/report-es-client.js +1 -1
  296. package/cursor-setting.png +0 -0
  297. package/mcp-server-prompt.png +0 -0
  298. package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +0 -80
  299. package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +0 -24
  300. package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +0 -116
  301. package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +0 -445
  302. package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +0 -465
  303. package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +0 -16
  304. package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -230
  305. package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -797
  306. package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +0 -325
  307. package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +0 -325
@@ -1,19 +1,19 @@
1
1
  ### The error message "The package you purchased does not support this ability"?
2
2
 
3
- If you encounter the above error message, it is because the audio and video call capability package of your current application has expired or has not been activated. You can refer to the service activation guide to claim or activate the audio and video call capability, and then continue to use the TUICallKit component.
3
+ If you encounter the above error message, it is because the audio and video call capability package of your current application has expired or has not been activated. You can .
4
4
 
5
5
  ### When the application is offline, Will it can pop up the call view?
6
6
 
7
7
  During a one-to-one call, if you come online within the timeout period, an incoming call view will be triggered; For group calls, if you come online within the timeout period, the last 20 unprocessed group messages will be pulled up, and if a call invitation exists, it will trigger an incoming call. The display strategy for incoming calls see: Incoming call display policy for the callee.
8
8
 
9
9
  ### When the application is in the background, Will it can pop up the call view?
10
- 1. TUICallKit has two different display policy for the callee, see below: Incoming call display policy for the callee.
10
+ 1. TUICallKit has two different display policy for the callee.
11
11
 
12
12
  2. Before version 2.3 of TUICallKit, to automatically bring the application from the background to the foreground, it was necessary to check whether the app had enabled the "Background self-start" or "Floating window" permission.
13
13
 
14
14
  Different manufacturers, or even the same manufacturer with different Android versions, offer varying permissions and permission names for applications. For instance, Xiaomi 6 requires only the "Background pop-ups" permissions , while Redmi needs both the "Background pop-ups" and "Display over other applications" permissions.
15
15
 
16
- How to enable permissions, see below: Relevant permissions enabled.
16
+ How to enable permissions.
17
17
 
18
18
  3. If you encounter the following scenarios where the call interface cannot be pulled up, the reason is that changes in the application's launch stack caused the CallKitActivity interface to be obscured or removed.
19
19
 
@@ -23,7 +23,7 @@ During a one-to-one call, if you come online within the timeout period, an incom
23
23
 
24
24
  Scenario Three: When the app is in the background and an offline push notification is received, not clicking the push notification but entering the app via the desktop icon will either fail to bring up the CallKitActivity or cause the CallKitActivityto flash momentarily.
25
25
 
26
- In the above scenarios, you need to add the following code to the default Activity of your app. Each app's default Activity may differ. Refer to the AndroidManifest.xml configuration for more details. Taking the launch page SplashActivity for most applications as an example:
26
+ In the above scenarios, you need to add the following code to the default Activity of your app. Each app's default Activity may differ. .xml configuration for more details. Taking the launch page SplashActivity for most applications as an example:
27
27
 
28
28
  【Code】
29
29
  ``` java
@@ -40,10 +40,6 @@ if (!isTaskRoot() && getIntent() != null && getIntent().hasCategory(Intent.CATEG
40
40
 
41
41
  To make TUICallKit adaptable to different business needs, add product features, and improve user experience, TUICallKit **version 2.3 and above** (Release Log) optimized the call page display pop-up strategy after receiving a call, as detailed below:
42
42
 
43
- |Full screen display of incoming call|Banner display of incoming call|
44
- |---------|---------|
45
- |||
46
-
47
43
  1. If you want the callee to pull up the full-screen call view when receiving a call, you can integrate the [tuicallkit-kt](https://github.com/Tencent-RTC/TUICallKit/tree/main/Android/tuicallkit-kt) code. By default, the incoming call display strategy for the callee is as follows:
48
44
 
49
45
  2. If you prefer to show a banner when receiving a call and then pull up the full-screen as needed, you can enable this feature by calling the following interface.
@@ -52,8 +48,6 @@ To make TUICallKit adaptable to different business needs, add product features,
52
48
  TUICallKit.createInstance(context).enableIncomingBanner(true);
53
49
  ```
54
50
 
55
- Once enabled, the callee's incoming call strategy is as shown below, as long as the **floating window permission** is enabled, the call banner will be displayed as much as possible.
56
-
57
51
  > **Note:**
58
52
  >
59
53
  > For information on how to enable related permissions, see below: Relevant permissions enabled.
@@ -69,10 +63,6 @@ To ensure a good calling experience, it is recommended to enable "notification"
69
63
 
70
64
  After the application is installed, you can long-press the application Icon, select "Application Information", then enable "notification" permission, "Display over other applications" and "Background pop-ups" permissions. Alternatively, you can go to `Mobile Phone > System Settings > Application Management > Application` to manually enable these permissions.
71
65
 
72
- |Pixel 4a|VIVO|
73
- |---------|---------|
74
- |||
75
-
76
66
  【Code guidance】
77
67
  - **Notification permissions**: For showcasing push notifications: please refer to [Notification runtime permissions](https://developer.android.com/develop/ui/views/notifications/notification-permission) and [Request runtime permissions](https://developer.android.com/training/permissions/requesting#request-permission) and implement according to business needs.
78
68
 
@@ -16,8 +16,6 @@ After the call is connected, you can obtain the call room number (RoomId) throug
16
16
 
17
17
  ### Encounter error code "-3301" with the message "Services are not available in your region" after entering the room
18
18
 
19
- If you receive this error code, [contact us](https://trtc.io/contact) for support.
20
-
21
19
  ### In the TUIChat + TUICallKit Integrated Scenarios, after Upgrading the TUICallKit Version, New Version Calls Old Version and Old Version Is Unable to Receive Call Issues
22
20
 
23
21
  Starting from TUICallKit version 3.1, in the TUIChat + TUICallKit integrated scenarios, initiating a call through the call button in TUIChat by default uses the new calls API. Therefore, if your business has already gone live, you can use the advanced API to switch the call interface to call or groupCall to maintain interconnectivity with users of the online edition.
@@ -28,7 +28,6 @@ Video and audio calls use Tencent Cloud's Chat SDK as the basic service for comm
28
28
  |8010|The signaling request ID is invalid or has been processed.|
29
29
 
30
30
  > **Note:**
31
- >
32
31
  > More Chat SDK error codes are available at:[Chat Error Code](https://www.tencentcloud.com/document/product/1047/34348)
33
32
  >
34
33
 
@@ -46,10 +45,9 @@ Video and audio calls use Tencent Cloud's Chat SDK as the basic service for call
46
45
  |ERR_MIC_NOT_AUTHORIZED|-1317|No permission to access to the mic. This usually occurs on mobile devices and may be because the user denied access.|
47
46
  |ERR_MIC_SET_PARAM_FAIL|-1318|Failed to set mic parameters.|
48
47
  |ERR_MIC_OCCUPY|-1319|The mic is being used. The mic cannot be turned on when, for example, the user is having a call on the mobile device.|
49
- |ERR_TRTC_ENTER_ROOM_FAILED|-3301|Failed to enter the room. For the reason, refer to the error message for -3301.|
48
+ |ERR_TRTC_ENTER_ROOM_FAILED|-3301|Failed to enter the room. For the reason.|
50
49
 
51
50
  > **Note:**
52
- >
53
51
  > More TRTC SDK error codes are available at:[TRTC Error Code](https://www.tencentcloud.com/document/product/647/35130)
54
52
  >
55
53
 
@@ -60,6 +58,6 @@ New version of CallKit REST API error codes, for example, when retrieving call s
60
58
  |Error Code|Description|
61
59
  |---------|---------|
62
60
  |101001|Internal server error, please try again.|
63
- |101002|Invalid parameter, check if parameters meet requirements. Refer to error message for specific invalid field.|
61
+ |101002|Invalid parameter, check if parameters meet requirements. .|
64
62
  |101004|Call does not exist or has already ended.|
65
63
  |101050|Call record does not exist.|
@@ -1,6 +1,6 @@
1
1
  ### The error message "The package you purchased does not support this ability"?
2
2
 
3
- If you encounter the above error message, it is because the audio and video call capability package of your current application has expired or has not been activated. You can refer to the service activation guide to claim or activate the audio and video call capability, and then continue to use the TUICallKit component.
3
+ If you encounter the above error message, it is because the audio and video call capability package of your current application has expired or has not been activated. You can .
4
4
 
5
5
  ### How to modify TUICallKit source code?
6
6
 
@@ -88,8 +88,6 @@ Tencent Cloud's audio and video libraries cannot be integrated at the same time,
88
88
 
89
89
  ### Does TUICallKit support background operation?
90
90
 
91
- Yes, if you need to continue running related functions in the background, you can select the current project, and in the Background Modes section under Capabilities, check **Audio, AirPlay, and Picture in Picture**, as shown in the following image:
92
-
93
91
  ### How to view TRTC logs?
94
92
 
95
93
  TRTC logs are compressed and encrypted by default, with the extension .xlog. Whether the log is encrypted can be controlled by setLogCompressEnabled. The file name containing C(compressed) is encrypted and compressed, and the file name containing R(raw) is plaintext.
@@ -97,6 +95,5 @@ TRTC logs are compressed and encrypted by default, with the extension .xlog. Whe
97
95
  iOS:Sandbox's `Documents/log`
98
96
 
99
97
  > **Note:**
100
- >
101
98
  > - To view the .xlog file, you need to download the [decryption tool](https://dldir1.qq.com/hudongzhibo/log_tool/decode_mars_log_file.py) and run it directly in the Python 2.7 environment with the xlog file in the same directory using python decode_mars_log_file.py.
102
99
  > - To view the .clog file (new log format after version 9.6), you need to download the [decryption tool](http://dldir1.qq.com/hudongzhibo/log_tool/decompress_clog.py) and run it directly in the Python 2.7 environment with the clog file in the same directory using python decompress_clog.py.
@@ -241,7 +241,6 @@ fun enableVirtualBackground(enable: Boolean);
241
241
  This API is used to make a (one-to-one) call.
242
242
 
243
243
  > **Note:**
244
- >
245
244
  > **It is recommended to use the** [calls](https://liteav.sdk.cloudcachetci.com/doc/product/tuikit/atomic-x/android/en/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.call/-call-store/calls.html) **API.**
246
245
  >
247
246
 
@@ -267,7 +266,6 @@ The parameters are described below:
267
266
  This API is used to make a (one-to-one) call, Support for custom room ID, call timeout, offline push content, etc.
268
267
 
269
268
  > **Note:**
270
- >
271
269
  > **It is recommended to use the** [calls](https://liteav.sdk.cloudcachetci.com/doc/product/tuikit/atomic-x/android/en/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.call/-call-store/calls.html) **API.**
272
270
  >
273
271
 
@@ -298,7 +296,6 @@ The parameters are described below:
298
296
  This API is used to make a group call.
299
297
 
300
298
  > **Note:**
301
- >
302
299
  > - It is recommended to use the [calls](https://liteav.sdk.cloudcachetci.com/doc/product/tuikit/atomic-x/android/en/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.call/-call-store/calls.html) API.
303
300
  > - Before making a group call, you need to create an Chat group first.
304
301
  > - For details about how to create a group, see [Chat Group Management](https://www.tencentcloud.com/zh/document/product/1047/48466#.E5.88.9B.E5.BB.BA.E7.BE.A4.E7.BB.84), or you can use [Chat UIKit](https://www.tencentcloud.com/en/document/product/1047/50057) to integrate chat, call and other scenarios.
@@ -326,7 +323,6 @@ The parameters are described below:
326
323
  This API is used to make a group call, Support for custom room ID, call timeout, offline push content, etc.
327
324
 
328
325
  > **Note:**
329
- >
330
326
  > - It is recommended to use the [calls](https://liteav.sdk.cloudcachetci.com/doc/product/tuikit/atomic-x/android/en/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.call/-call-store/calls.html) API.
331
327
  > - Before making a group call, you need to create an Chat group first.
332
328
  > - For details about how to create a group, see [Chat Group Management](https://www.tencentcloud.com/zh/document/product/1047/48466#.E5.88.9B.E5.BB.BA.E7.BE.A4.E7.BB.84), or you can use [Chat UIKit](https://www.tencentcloud.com/en/document/product/1047/50057) to integrate chat, call and other scenarios.
@@ -360,7 +356,6 @@ The parameters are described below:
360
356
  This API is used to join a group call.
361
357
 
362
358
  > **Note:**
363
- >
364
359
  > - It is recommended to use the [join](https://liteav.sdk.cloudcachetci.com/doc/product/tuikit/atomic-x/android/en/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.call/-call-store/join.html) API.
365
360
  > - Before joining a group call, you need to create or join an Chat group in advance, and there are already users in the group who are in the call.
366
361
  > - For details about how to create a group, see [Chat Group Management](https://www.tencentcloud.com/zh/document/product/1047/48466#.E5.88.9B.E5.BB.BA.E7.BE.A4.E7.BB.84), or you can use [Chat UIKit](https://www.tencentcloud.com/en/document/product/1047/50057) to integrate chat, call and other scenarios.
@@ -388,7 +383,6 @@ The parameters are described below:
388
383
  Hide the specified button.
389
384
 
390
385
  > **Note:**
391
- >
392
386
  > - Currently supports hiding the following buttons:
393
387
  > Camera, Microphone, Audio Device, Switch Camera, Invite User
394
388
  >
@@ -136,7 +136,6 @@ public func setScreenOrientation(orientation: Int, completion: CompletionClosure
136
136
  This API is used to make a (one-to-one) call.
137
137
 
138
138
  > **Note:**
139
- >
140
139
  > It is recommended to use the [calls](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/callstore/calls(participantids:callmediatype:params:completion:)) API
141
140
  >
142
141
 
@@ -154,7 +153,6 @@ public func call(userId: String, callMediaType: TUICallMediaType)
154
153
  This API is used to make a (one-to-one) call, support for custom room ID, call timeout, offline push content, etc.
155
154
 
156
155
  > **Note:**
157
- >
158
156
  > It is recommended to use the [calls](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/callstore/calls(participantids:callmediatype:params:completion:)) API
159
157
  >
160
158
 
@@ -174,7 +172,6 @@ public func call(userId: String, callMediaType: TUICallMediaType, params: TUICal
174
172
  This API is used to make a group call.
175
173
 
176
174
  > **Note:**
177
- >
178
175
  > - It is recommended to use the [calls](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/callstore/calls(participantids:callmediatype:params:completion:)) API
179
176
  > - Before making a group call, you need to create a Chat group first.
180
177
  > - For details about how to create a group, see [Chat Group Management](https://www.tencentcloud.com/en/document/product/1047/48466#.E5.88.9B.E5.BB.BA.E7.BE.A4.E7.BB.84), or you can use [Chat UIKit](https://www.tencentcloud.com/document/product/1047/50056) to integrate chat, call and other scenarios.
@@ -194,7 +191,6 @@ public func groupCall(groupId: String, userIdList: [String], callMediaType: TUIC
194
191
  This API is used to make a group call, support for custom room ID, call timeout, offline push content, etc.
195
192
 
196
193
  > **Note:**
197
- >
198
194
  > - It is recommended to use the [calls](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/callstore/calls(participantids:callmediatype:params:completion:)) API.
199
195
  > - Before making a group call, you need to create a Chat group first.
200
196
  > - For details about how to create a group, see [Chat Group Management](https://www.tencentcloud.com/en/document/product/1047/48466#.E5.88.9B.E5.BB.BA.E7.BE.A4.E7.BB.84), or you can use [Chat UIKit](https://www.tencentcloud.com/document/product/1047/50056) to integrate chat, call and other scenarios.
@@ -36,7 +36,7 @@ The TUICallKit API is the **audio and video call component that includes a UI in
36
36
  |afterCalling|This function will be executed after the termination of the call|function()|No|-|√|√|
37
37
  |onMinimized|This function will be executed when the component switches to a minimized state. The explanation for the STATUS value is|function(oldStatus, newStatus)|No|-|√|√|
38
38
  |kickedOut|The events thrown by the component occur when the current logged-in user is ejected. The call will also automatically terminate|function()|No|-|√|×|
39
- |statusChanged|Event thrown by the component; this event is triggered when the call status changes. For detailed types of call status, refer to STATUS value description|function({oldStatus, newStatus})|No|-|√|×|
39
+ |statusChanged|Event thrown by the component; this event is triggered when the call status changes. For detailed types of call status,
40
40
 
41
41
  ### Sample code
42
42
 
@@ -83,9 +83,9 @@ try {
83
83
  The parameters are described below:
84
84
  | Parameter | Type | Required | Meaning |
85
85
  | --- | --- | --- | --- |
86
- | SDKAppID | Number | Yes | The SDKAppID of your app, you can find your SDKAppID in the Live Audio and Video console. For details, see Activating Services |
86
+ | SDKAppID | Number | Yes | The SDKAppID of your app, you can find your SDKAppID in the Live Audio and Video console.
87
87
  | userID | String | Yes | The current user's ID is of string type, only allowing for the inclusion of English letters (a-z and A-Z), digits (0-9), hyphens (-) and underscores (_) |
88
- | userSig | String | Yes | Use SDKSecretKey to encrypt SDKAppID, UserID and other information to obtain userSig.<br>It is an authentication ticket used by Tencent Cloud to identify whether the current user can use TRTC services. For how to obtain it, please refer to How to Calculate UserSig |
88
+ | userSig | String | Yes | Use SDKSecretKey to encrypt SDKAppID, UserID and other information to obtain userSig.<br>It is an authentication ticket used by Tencent Cloud to identify whether the current user can use TRTC services. For how to obtain it, please
89
89
  | tim | TencentCloudChat | No | tim is an instance of <a href="https://www.npmjs.com/package/@tencentcloud/chat">TencentCloudChat</a> SDK. |
90
90
 
91
91
  ### calls
@@ -151,7 +151,6 @@ The parameters are described below:
151
151
  Set your own nickname and avatar.
152
152
 
153
153
  > **Note:**
154
- >
155
154
  > **If you use this interface to modify user information during a call, the UI will not be updated immediately, and you will need to wait until the next call to see the changes.**
156
155
  >
157
156
 
@@ -36,7 +36,7 @@ The TUICallKit API is the **audio and video call component that includes a UI in
36
36
  |afterCalling|This function will be executed after the termination of the call|function()|No|-|√|√|
37
37
  |onMinimized|This function will be executed when the component switches to a minimized state. The explanation for the STATUS value is|function(oldStatus, newStatus)|No|-|√|√|
38
38
  |kickedOut|The events thrown by the component occur when the current logged-in user is ejected. The call will also automatically terminate|function()|No|-|√|×|
39
- |statusChanged|Event thrown by the component; this event is triggered when the call status changes. For detailed types of call status, refer to STATUS value description|function({oldStatus, newStatus})|No|-|√|×|
39
+ |statusChanged|Event thrown by the component; this event is triggered when the call status changes. For detailed types of call status,
40
40
 
41
41
  ### Sample code
42
42
 
@@ -103,9 +103,9 @@ try {
103
103
  The parameters are described below:
104
104
  | Parameter | Type | Required | Meaning |
105
105
  | --- | --- | --- | --- |
106
- | SDKAppID | Number | Yes | The SDKAppID of your app, you can find your SDKAppID in the Live Audio and Video console. For details, see Activating Services |
106
+ | SDKAppID | Number | Yes | The SDKAppID of your app, you can find your SDKAppID in the Live Audio and Video console.
107
107
  | userID | String | Yes | The current user's ID is of string type, only allowing for the inclusion of English letters (a-z and A-Z), digits (0-9), hyphens (-) and underscores (_) |
108
- | userSig | String | Yes | Use SDKSecretKey to encrypt SDKAppID, UserID and other information to obtain userSig.<br>It is an authentication ticket used by Tencent Cloud to identify whether the current user can use TRTC services. For how to obtain it, please refer to How to Calculate UserSig |
108
+ | userSig | String | Yes | Use SDKSecretKey to encrypt SDKAppID, UserID and other information to obtain userSig.<br>It is an authentication ticket used by Tencent Cloud to identify whether the current user can use TRTC services. For how to obtain it, please
109
109
  | tim | TencentCloudChat | No | tim is an instance of <a href="https://www.npmjs.com/package/@tencentcloud/chat">TencentCloudChat</a> SDK. |
110
110
 
111
111
  ### calls
@@ -171,7 +171,6 @@ The parameters are described below:
171
171
  Set your own nickname and avatar.
172
172
 
173
173
  > **Note:**
174
- >
175
174
  > **If you use this interface to modify user information during a call, the UI will not be updated immediately, and you will need to wait until the next call to see the changes.**
176
175
  >
177
176
 
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: "Web/Mini Program Chat SDK: AVChatRoom Message Loss Diagnosis and Mitigation(直播群消息丢失)"
3
+ product: chat
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [AVChatRoom, message loss, avchatroom, MESSAGE_RECEIVED, long polling, MsgPriority, priority, restapi, rate limit, 40 messages per second]
7
+ version_range: ">=3.0.0"
8
+ ---
9
+
10
+ # Web/Mini Program Chat SDK: AVChatRoom Message Loss Diagnosis and Mitigation
11
+
12
+ ## 1. Key Takeaways
13
+
14
+ - Scenario 1 (messages lost during batch sending): The root cause is incorrect consumption logic of the `MESSAGE_RECEIVED` callback on the business side. This callback may return multiple messages at once; you must read the full list `event.data`.
15
+ - Scenario 2 (important messages not received during high-frequency chat): The root cause is triggering the backend group message rate limit. The default is `40` messages/second per group; messages exceeding this limit are discarded. You can increase the retention probability of important messages by setting message priority.
16
+ - Scenario 3 (messages lost after unstable network or long background period): This is expected behavior for avchatroom. When the app resumes after more than `2` minutes in the background, it cannot pull historical messages beyond the cache window.
17
+ - Avchatroom messages are not stored in roaming. The backend caches messages for only `2` minutes with a maximum of `2000` messages by default; messages beyond the window or limit cannot be recovered via long polling.
18
+
19
+ ## 2. Field / API Reference
20
+
21
+ | Field / Capability | Purpose | Description |
22
+ |---|---|---|
23
+ | `EVENT.MESSAGE_RECEIVED` | Message receive callback | A single callback may return multiple messages; the business must iterate over all items in `event.data` |
24
+ | `priority` (SDK) | SDK message sending priority | Can be set in `createXXXMessage`; higher priority messages are less likely to be discarded when the rate limit is exceeded |
25
+ | `MsgPriority` (REST API) | REST API message sending priority | Set priority in the message body to ensure critical notifications in high-concurrency scenarios |
26
+ | Group rate limit (default `40` msg/s) | Backend flow control threshold | Messages exceeding the threshold are discarded; long polling cannot retrieve discarded messages |
27
+ | avchatroom cache window (`2` min / `2000` msgs) | Temporary cache boundary | Messages beyond the time or count limit are purged from the cache |
28
+
29
+ ## 3. Mechanism & Sequence
30
+
31
+ Business sends message (SDK/REST API) -> AVChatRoom backend applies group rate limit (default `40` msg/s) -> Client receives messages via long polling and triggers `MESSAGE_RECEIVED` -> Business consumes the callback list.
32
+ When the app resumes after a long background period (over `2` minutes): WebSocket reconnects -> long polling resumes -> only messages within the cache window (`2` minutes and at most `2000` messages) can be pulled.
33
+
34
+ ## 4. Standard Usage
35
+
36
+ 1. **Fix receive logic (Scenario 1)**: Iterate over all items in `event.data` within the `MESSAGE_RECEIVED` callback. Never process only `event.data[0]`.
37
+ 2. **Ensure important message delivery (Scenario 2)**: Set high priority for critical messages such as lottery draws or product listing/delisting notifications.
38
+ - SDK sending: Set `priority` in `createXXXMessage`.
39
+ - REST API sending: Set `MsgPriority` in the message body.
40
+ 3. **Control sending rate (Scenario 2)**: Implement rate limiting or message merging on the business side to avoid continuously exceeding `40` messages/second per group.
41
+ 4. **Handle background recovery expectations (Scenario 3)**: Treat "possible loss of avchatroom history after a long background period" as an expected product behavior, and use business-level fallback mechanisms (e.g., critical state re-pull API) to recover.
42
+
43
+ ## 5. Expected Results
44
+
45
+ - During batch message stress testing, every item in `event.data` from the `MESSAGE_RECEIVED` callback is consumed, with no "only first message received" issue.
46
+ - When the sending rate exceeds `40` msg/s, low-priority messages are discarded first, and the delivery rate of high-priority critical notifications increases.
47
+ - Both REST API and SDK sending paths have the priority field (`MsgPriority` / `priority`) configured.
48
+ - After the app resumes from more than `2` minutes in the background, the business side can recover critical state through fallback mechanisms.
49
+
50
+ ## 6. Common Pitfalls
51
+
52
+ - Pitfall 1: Treating `MESSAGE_RECEIVED` as a single-message callback and only processing `event.data[0]`.
53
+ - Pitfall 2: Not setting message priority in high-concurrency avchatroom, causing critical messages to compete at the same level as spam messages.
54
+ - Pitfall 3: Using a avchatroom as if it were a roaming group, expecting all historical messages to be available after a long background period.
55
+
56
+ ## 7. Problem Definition (retrieval hint)
57
+
58
+ In the Web Chat SDK AVChatRoom scenario, "message loss" is observed. The business wants to ensure that important messages such as lottery draws and product listing/delisting notifications are not lost.
59
+
60
+ ## 8. Alternative Queries (retrieval recall)
61
+
62
+ - Why does AVChatRoom lose messages?
63
+ - How to ensure product delisting messages are always delivered during high-frequency chat in a avchatroom?
64
+ - How to handle multiple messages returned in a single `MESSAGE_RECEIVED` callback?
65
+ - Why can't previously sent messages be pulled after reconnecting from a long background period in a avchatroom?
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: "Web/Mini Program Chat SDK: Removing Residual Conversations After Leaving or Dismissing a Group(退群 / 群组解散 / 被踢出群 / 删除会话列表中已退出的群组)"
3
+ product: chat
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [quitGroup, dismissGroup, deleteConversation, TIMGroupSystemNoticeElem, operationType, conversation list, leave group, dismiss group]
7
+ version_range: ">=3.0.0"
8
+ ---
9
+
10
+ # Web/Mini Program Chat SDK: Removing Residual Conversations After Leaving or Dismissing a Group
11
+
12
+ ## 1. Key Takeaways
13
+
14
+ - The conversation remaining after `quitGroup` / `dismissGroup` is an intentional SDK UX design: while the login session is valid, the group conversation is retained so users can still view message history.
15
+ - To completely remove it from the conversation list, you must actively call `deleteConversation` after receiving the group system notice (`TIMGroupSystemNoticeElem`).
16
+ - The deletion trigger condition is determined by `message.payload.operationType`: `4` (kicked from group), `5` (group dismissed), `8` (user actively left group).
17
+ - Relying solely on the return result of `quitGroup` / `dismissGroup` does not automatically delete the conversation list entry.
18
+
19
+ ## 2. Field / API Reference
20
+
21
+ | Field / Capability | Purpose | Description |
22
+ |---|---|---|
23
+ | `TIMGroupSystemNoticeElem` | Group system notice type | Identifies system events such as member changes, dismissal, and leaving |
24
+ | `message.payload.operationType` | Notice action code | `4` kicked out, `5` group dismissed, `8` actively left |
25
+ | `deleteConversation` | Delete conversation API | Called when the trigger condition is met to remove the corresponding group conversation from the conversation list |
26
+ | `quitGroup` / `dismissGroup` | Group management actions | Perform leave/dismiss; they do not handle conversation list cleanup |
27
+
28
+ ## 3. Mechanism & Sequence
29
+
30
+ Business calls `quitGroup` or `dismissGroup` -> SDK retains the corresponding group conversation (while login session is valid) -> Receives `TIMGroupSystemNoticeElem` -> Business checks `operationType` to determine whether to trigger deletion -> When matching `4/5/8`, calls `deleteConversation` -> Conversation list removes the group conversation.
31
+
32
+ ## 4. Standard Usage
33
+
34
+ 1. Without UI integration: Listen to `MESSAGE_RECEIVED` directly via `chat.on` and handle group system notices in the callback.
35
+ 2. With UI integration: First obtain the `chat` instance from `TUILogin.getContext()`, then listen to `MESSAGE_RECEIVED` via `chat.on` to receive system notices.
36
+ 3. Filter messages of type `TIMGroupSystemNoticeElem` in the callback.
37
+ 4. Read `message.payload.operationType`; only enter the deletion branch for values `4`, `5`, or `8`.
38
+ 5. Call `deleteConversation` with the group conversation ID, and refresh the conversation list state after success to avoid local cache residuals.
39
+
40
+ ## 5. Expected Results
41
+
42
+ - After calling `quitGroup`, the `operationType=8` notice is received and `deleteConversation` is triggered successfully.
43
+ - After calling `dismissGroup`, the `operationType=5` notice is received and the group conversation is removed successfully.
44
+ - When kicked by an admin, the `operationType=4` notice triggers automatic conversation cleanup.
45
+ - After refreshing the conversation list, the target group conversation no longer appears and is not re-displayed due to system notice echoing.
46
+
47
+ ## 6. Common Pitfalls
48
+
49
+ - Pitfall 1: Assuming `quitGroup` / `dismissGroup` automatically deletes the conversation list entry.
50
+ - Pitfall 2: Ignoring the group system notice without reading `operationType`.
51
+ - Pitfall 3: Only performing local UI deletion without calling `deleteConversation`, causing the conversation to reappear.
52
+
53
+ ## 7. Problem Definition (retrieval hint)
54
+
55
+ After calling `quitGroup` or `dismissGroup` in the Web Chat SDK, the group conversation still exists in the conversation list; after receiving the system message "You have left this group", the conversation reappears in the list. The business needs to completely remove the group conversation after leaving or dismissing the group.
56
+
57
+ ## 8. Alternative Queries (retrieval recall)
58
+
59
+ - Why is the group conversation still in the conversation list after calling `quitGroup`?
60
+ - Why does the conversation reappear after `dismissGroup`?
61
+ - How to delete the conversation after receiving "You have left this group"?
62
+ - How to link group system notices with `deleteConversation`?
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: "Chat SDK: Image Message URL Lifecycle (blob vs. imageUrl)(图片消息 blob 地址 / 服务端 url 更新时机 / imageInfoArray / 图片消息 url)"
3
+ product: chat
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [sendMessage, createImageMessage, imageInfoArray, imageUrl, url, blob, https, image message, upload progress, lifecycle]
7
+ version_range: ">=3.0.0"
8
+ ---
9
+
10
+ # Chat SDK: Image Message URL Lifecycle (blob vs. imageUrl)
11
+
12
+ ## 1. Key Takeaways
13
+
14
+ - `imageInfoArray[x].url` is primarily used for local preview; it remains a `blob:` in-memory URL even after the message is sent successfully.
15
+ - When you need a cloud-accessible URL, read `imageInfoArray[x].imageUrl` from the successfully sent message.
16
+ - After refreshing and re-logging in, when pulling roaming messages, `imageInfoArray[x].url` is the server-side URL.
17
+ - To get upload progress, pass an `onProgress` callback when calling `createImageMessage`.
18
+
19
+ ## 2. Field / API Reference
20
+
21
+ | Field / Capability | Phase | Semantics |
22
+ |---|---|---|
23
+ | `imageInfoArray[x].url` | During/after sending | Local preview address; may be `blob:`; not guaranteed to auto-update to a cloud URL |
24
+ | `imageInfoArray[x].imageUrl` | After successful send | Server-accessible address; use as the externally accessible URL |
25
+ | `onProgress` | During upload | File upload progress callback for displaying upload progress |
26
+
27
+ ## 3. Mechanism & Sequence
28
+
29
+ `createImageMessage` -> `sendMessage` -> Internal upload flow -> Upload succeeds and message is sent to IM backend -> Read `imageInfoArray[x].imageUrl` from the returned message -> After refreshing and re-logging in, pulling roaming messages yields `imageInfoArray[x].url` as the server-side URL.
30
+
31
+ ## 4. Standard Usage
32
+
33
+ 1. Call `createImageMessage` to create an image message (pass `onProgress` if progress is needed).
34
+ 2. Call `sendMessage` to send the message.
35
+ 3. After successful sending, read `imageInfoArray[x].imageUrl` from the returned message as the cloud URL.
36
+ 4. Correct approach for rendering images on the frontend: read `imageInfoArray[x].url` when rendering the message; using the `blob` address during sending enables faster image rendering.
37
+
38
+ ## 5. Expected Results
39
+
40
+ - After sending, inspect the same message:
41
+ - `imageInfoArray[x].url` is still `blob:`;
42
+ - `imageInfoArray[x].imageUrl` is a server-accessible address.
43
+ - After refreshing and re-logging in, pulling history messages yields `imageInfoArray[x].url` as the server-side URL.
44
+
45
+ ## 6. Common Pitfalls
46
+
47
+ - Pitfall 1: Assuming that `url` will automatically change to a cloud link after upload.
48
+
49
+ ## 7. Problem Definition (retrieval hint)
50
+
51
+ After sending an image message, the user observes that `imageInfoArray[x].url` is still a `blob:` local URL and expects it to automatically become a Tencent Cloud `https` URL. The user also wants to know which field to read as the final accessible address after upload is complete.
52
+
53
+ ## 8. Alternative Queries (retrieval recall)
54
+
55
+ - Why is `url` still `blob:` after sending an image message?
56
+ - Which field should I use to get the cloud `https` image URL?
57
+ - How to get the final image URL after `sendMessage` succeeds?
58
+ - What is the difference between `imageInfoArray[x].url` and `imageInfoArray[x].imageUrl`?
59
+ - Why does the image URL in history messages change after refreshing?
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: "Web Chat SDK: login Returns 2025 (Repeat Login) Diagnosis and Fix(重复登录 / repeatLogin)"
3
+ product: chat
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [login, 2025, repeat login, repeatLogin, web, miniprogram, concurrent calls, debounce]
7
+ version_range: ">=3.0.0"
8
+ ---
9
+
10
+ # Web Chat SDK: login Returns 2025 (Repeat Login) Diagnosis and Fix
11
+
12
+ ## 1. Key Takeaways
13
+
14
+ - The direct cause of `2025` is that the business side calls `login` consecutively in a short time while the SDK has not yet received the backend response for the first login request.
15
+ - Within approximately `15s` after the first `login` is initiated, if the previous login has not received a response, the SDK directly blocks subsequent `login` calls and returns `2025`.
16
+ - If the SDK has already received the login response and the same `userID` calls `login` again, it does not trigger the `2025` blocking branch; instead it returns `imResponse.data.repeatLogin = true` in `login.then`.
17
+ - The solution is to fix the `login` call logic on the business side: ensure only one in-flight `login` request exists for the same session.
18
+
19
+ ## 2. Field / API Reference
20
+
21
+ | Field / Capability | Purpose | Description |
22
+ |---|---|---|
23
+ | Error code `2025` | Repeat login blocking signal | When a previous `login` has not received a response, subsequent calls within a short period are directly blocked by the SDK |
24
+ | `imResponse.data.repeatLogin` | Repeat login flag | When the SDK has received a response and the same `userID` logs in again, this returns `true` in `then` |
25
+ | `login` in-flight state | Key state for concurrency control | The business side must ensure only one `login` is executing at a time |
26
+
27
+ ## 3. Mechanism & Sequence
28
+
29
+ First `login` call -> SDK sends login request -> Backend response not yet received -> Business side calls `login` again within ~`15s` -> SDK directly blocks and returns `2025`.
30
+ First `login` call -> SDK has received backend response -> Business side calls `login` again with the same `userID` -> `imResponse.data.repeatLogin = true` is returned in `login.then`.
31
+
32
+ ## 4. Standard Usage
33
+
34
+ 1. Implement single-flight login on the business side: for the same `userID`, prohibit duplicate calls before the previous `login` completes.
35
+ 2. Add a state machine (`idle`/`logging_in`/`logged_in`) or Promise reuse for `login`, reusing the in-flight login result.
36
+ 3. Upon receiving `2025`, do not retry immediately; wait for the current in-flight login to complete, then decide the next action based on the result.
37
+ 4. Check `imResponse.data.repeatLogin` in `login.then` and handle it as an "already logged in" branch without re-initializing the session.
38
+
39
+ ## 5. Expected Results
40
+
41
+ - When login is triggered consecutively for the same `userID`, the business side only sends one real `login` request.
42
+ - Under stress testing with rapid login button clicks, `2025` no longer occurs.
43
+ - When `login` is called again after a response has been received, `repeatLogin` is consistently observed in `then` and the expected branch is followed.
44
+ - Login state initialization logic executes only once, with no duplicate conversation pulls or duplicate listeners.
45
+
46
+ ## 6. Common Pitfalls
47
+
48
+ - Pitfall 1: Immediately calling `login` again upon receiving `2025`, creating a blocking loop.
49
+ - Pitfall 2: Treating `2025` and `repeatLogin=true` as the same-phase error.
50
+ - Pitfall 3: Not implementing idempotency protection in `onShow`, route changes, or reconnection callbacks, leading to concurrent login calls.
51
+
52
+ ## 7. Problem Definition (retrieval hint)
53
+
54
+ When calling `login` in the Web Chat SDK, triggering the login request repeatedly in a short time returns `2025`. The business side needs to understand: under what conditions `2025` is triggered, and how it differs from `imResponse.data.repeatLogin = true`.
55
+
56
+ ## 8. Alternative Queries (retrieval recall)
57
+
58
+ - Why does the Web IM SDK `login` return 2025?
59
+ - What does `login` returning 2025 mean?
60
+ - Under what circumstances does the repeat login error code 2025 occur?
61
+ - What is the difference between `repeatLogin=true` and `2025`?
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: "Web Chat SDK: Conversation Read Report and Message Read Receipt (setMessageRead vs. sendMessageReadReceipt)(已读上报 setMessageRead / 已读回执 sendMessageReadReceipt)"
3
+ product: chat
4
+ frameworks: [web, miniprogram]
5
+ scope: platform_common
6
+ tags: [setMessageRead, sendMessageReadReceipt, read receipt, MESSAGE_READ_BY_PEER, MESSAGE_READ_RECEIPT_RECEIVED, needReadReceipt, group message read]
7
+ version_range: ">=3.0.0"
8
+ ---
9
+
10
+ # Web Chat SDK: Conversation Read Report and Message Read Receipt (setMessageRead vs. sendMessageReadReceipt)
11
+
12
+ ## 1. Key Takeaways
13
+
14
+ - The recommended flow for automatically sending message-level read receipts upon entering a conversation is: first pull roaming messages via `getMessageList`, then call `sendMessageReadReceipt` to report the corresponding messages as read.
15
+ - `setMessageRead` is a conversation-level read report: a successful call clears the unread count of the current conversation; in one-to-one chat scenarios, the peer can update message read status via `MESSAGE_READ_BY_PEER`.
16
+ - `sendMessageReadReceipt` is a message-level read receipt: it does not affect the conversation unread count, only the read/unread status of individual messages; for group messages, this capability is required to implement message-level read status.
17
+ - The message read receipt capability has usage restrictions: not available on Trial/Standard plans; `needReadReceipt=true` must be set when creating the message; group read receipts require a group size limit of `200` and the group message read receipt switch must be enabled in the console (Console > Feature Configuration > Group Configuration > Group Message Read Receipt).
18
+
19
+ ## 2. Field / API Reference
20
+
21
+ | Field / Capability | Purpose | Description |
22
+ |---|---|---|
23
+ | `setMessageRead` | Conversation-level read report | Clears the current conversation's unread count; in one-to-one chat, can trigger `MESSAGE_READ_BY_PEER` on the peer side |
24
+ | `sendMessageReadReceipt` | Message-level read receipt | Does not clear conversation unread count; only updates message read/unread status |
25
+ | `needReadReceipt` | Message read receipt switch | Must be set to `true` when creating a message to enable message-level receipts |
26
+ | `MESSAGE_READ_BY_PEER` | One-to-one chat peer read event | Used to update one-to-one chat message read status |
27
+ | `MESSAGE_READ_RECEIPT_RECEIVED` | Message receipt received event | Used to process received message read receipt updates |
28
+
29
+ ## 3. Mechanism & Sequence
30
+
31
+ Enter conversation -> Call `getMessageList` to pull roaming messages -> Pass the message list to `sendMessageReadReceipt` (SDK internally filters and processes) -> SDK dispatches read receipt event (e.g., `MESSAGE_READ_RECEIPT_RECEIVED`) -> Business updates message read/unread display.
32
+ If `setMessageRead` is called: conversation unread count is cleared; in one-to-one chat, the peer can receive `MESSAGE_READ_BY_PEER`.
33
+
34
+ ## 4. Standard Usage
35
+
36
+ 1. Upon entering a conversation, first call `getMessageList` to pull the message list.
37
+ 2. Pass the message list returned by `getMessageList` directly to `sendMessageReadReceipt`; the SDK internally filters and completes message-level read reporting.
38
+ 3. Only call `setMessageRead` when you need to handle conversation unread count; do not use it as a substitute for group message read receipts.
39
+ 4. Set `needReadReceipt = true` when creating messages that require receipts.
40
+ 5. Subscribe to and handle `MESSAGE_READ_BY_PEER` and `MESSAGE_READ_RECEIPT_RECEIVED` to synchronously update message read status.
41
+
42
+ ## 5. Expected Results
43
+
44
+ - After entering a group chat, pulled messages successfully trigger `sendMessageReadReceipt`.
45
+ - After calling `sendMessageReadReceipt`, the conversation unread count is not cleared, but message read status is updated.
46
+ - After calling `setMessageRead`, the conversation unread count is cleared, and the one-to-one chat peer can observe `MESSAGE_READ_BY_PEER`.
47
+ - In the group read scenario, the correct plan is activated, the console switch is enabled, and the group size does not exceed `200`.
48
+
49
+ ## 6. Common Pitfalls
50
+
51
+ - Pitfall 1: Using `setMessageRead` instead of `sendMessageReadReceipt` to implement group message read status.
52
+ - Pitfall 2: Expecting to receive message-level read receipts without setting `needReadReceipt=true`.
53
+ - Pitfall 3: Going live with group read capability without activating the Premium plan or enabling the group message read receipt switch.
54
+
55
+ ## 7. Problem Definition (retrieval hint)
56
+
57
+ After entering a group chat conversation on the Web, how to automatically send read receipts to message senders? What is the difference between `setMessageRead` and `sendMessageReadReceipt`?
58
+
59
+ ## 8. Alternative Queries (retrieval recall)
60
+
61
+ - How to automatically report read status after entering a conversation?
62
+ - Which API should be used for group chat read/unread display?
63
+ - What is the difference between `setMessageRead` and `sendMessageReadReceipt`?
64
+ - Why does message read status not change as expected after calling `setMessageRead`?