@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.
- package/CHANGELOG.md +25 -0
- package/README.md +53 -39
- package/knowledge/build-index.js +31 -4
- package/knowledge/chunker.js +82 -14
- package/knowledge/chunking-policy.js +100 -0
- package/knowledge/content-loader.js +3 -1
- package/knowledge/frontmatter-meta.js +167 -0
- package/knowledge/path-meta.js +28 -6
- package/knowledge/search/exact-lookup.js +9 -227
- package/knowledge/search/filter-pool.js +17 -26
- package/knowledge/search/framework-fallback.js +22 -0
- package/knowledge/search/intent-router.js +13 -0
- package/knowledge/search/query-normalizer.js +129 -0
- package/knowledge/search/search-core.js +391 -0
- package/knowledge/search/search-knowledge.js +351 -323
- package/knowledge/search/search-message.js +87 -0
- package/knowledge/search/search-pass.js +428 -0
- package/knowledge/search/search-types.js +1 -0
- package/knowledge/search/url-row-scorer.js +258 -0
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +1 -0
- package/resource/_schema/query-normalization.yaml +9 -0
- package/resource/index/manifest.json +1 -1
- package/resource/integration/callkit/preset/android/integration.md +3 -14
- package/resource/integration/callkit/preset/flutter/integration.md +1 -12
- package/resource/integration/callkit/preset/ios/integration.md +2 -12
- package/resource/integration/callkit/preset/react/integration.md +1 -14
- package/resource/integration/callkit/preset/vue/integration.md +1 -14
- package/resource/integration/chat/preset/android/integration.md +6 -13
- package/resource/integration/chat/preset/flutter/integration.md +1 -8
- package/resource/integration/chat/preset/ios/integration.md +4 -12
- package/resource/integration/chat/preset/react/integration.md +6 -16
- package/resource/integration/chat/preset/vue/integration.md +0 -9
- package/resource/integration/livekit/preset/live/android/live-audience-integration.md +2 -6
- package/resource/integration/livekit/preset/live/android/live-host-integration.md +1 -11
- package/resource/integration/livekit/preset/live/android/live-list-integration.md +2 -6
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +2 -7
- package/resource/integration/livekit/preset/live/ios/live-audience-integration.md +2 -7
- package/resource/integration/livekit/preset/live/ios/live-host-integration.md +1 -13
- package/resource/integration/livekit/preset/live/ios/live-list-integration.md +2 -10
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +3 -8
- package/resource/integration/livekit/preset/live/vue/live-list-integration.md +0 -4
- package/resource/integration/livekit/preset/live/vue/live-player-desk-integration.md +1 -5
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +2 -7
- package/resource/integration/livekit/preset/live/vue/live-pusher-integration.md +2 -8
- package/resource/integration/roomkit/preset/vue/integration.md +0 -11
- package/resource/knowledge/callkit/best-practice/callkit-miniprogram/uniapp-shrink.md +60 -0
- package/resource/knowledge/callkit/best-practice/common/call-autoplay-blocked.md +77 -0
- package/resource/knowledge/callkit/best-practice/common/call-message-in-chat.md +78 -0
- package/resource/knowledge/callkit/best-practice/common/call-vs-calls.md +110 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-call-flow.md +123 -0
- package/resource/knowledge/callkit/best-practice/common/callengine-log-level.md +67 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-engine-instance.md +81 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-get-roomid.md +78 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-limitations.md +37 -0
- package/resource/knowledge/callkit/best-practice/common/callkit-user-register-and-kicked.md +98 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +0 -7
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -8
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +1 -9
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +2 -8
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +2 -8
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +1 -16
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -8
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -8
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -11
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +178 -200
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +195 -217
- package/resource/knowledge/callkit/faq/android.md +4 -14
- package/resource/knowledge/callkit/faq/common.md +0 -2
- package/resource/knowledge/callkit/faq/error-code.md +2 -4
- package/resource/knowledge/callkit/faq/ios.md +1 -4
- package/resource/knowledge/callkit/preset/android/api.md +0 -6
- package/resource/knowledge/callkit/preset/ios/api.md +0 -4
- package/resource/knowledge/callkit/preset/react/api.md +3 -4
- package/resource/knowledge/callkit/preset/vue/api.md +3 -4
- package/resource/knowledge/chat/best-practice/common/avchatroom-message-loss-diagnosis.md +65 -0
- package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md +62 -0
- package/resource/knowledge/chat/best-practice/common/image-message-url-lifecycle.md +59 -0
- package/resource/knowledge/chat/best-practice/common/login-repeat-2025-diagnosis.md +61 -0
- package/resource/knowledge/chat/best-practice/common/message-read-report-and-receipt.md +64 -0
- package/resource/knowledge/chat/best-practice/common/message-receive-event.md +65 -0
- package/resource/knowledge/chat/best-practice/common/message-risk-error-and-render.md +65 -0
- package/resource/knowledge/chat/best-practice/common/message-unread-count.md +71 -0
- package/resource/knowledge/chat/best-practice/miniprogram/audio-message-send.md +113 -0
- package/resource/knowledge/chat/best-practice/miniprogram/login-timeout-2801-diagnosis.md +63 -0
- package/resource/knowledge/chat/best-practice/miniprogram/media-upload-fail-diagnosis.md +64 -0
- package/resource/knowledge/chat/best-practice/web/audio-message-send.md +118 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +0 -5
- package/resource/knowledge/chat/preset/android/features/contact-list.md +0 -7
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +0 -6
- package/resource/knowledge/chat/preset/android/features/language.md +0 -8
- package/resource/knowledge/chat/preset/android/features/message-input.md +0 -6
- package/resource/knowledge/chat/preset/android/features/message-list.md +0 -8
- package/resource/knowledge/chat/preset/android/features/search.md +0 -7
- package/resource/knowledge/chat/preset/android/features/theme.md +0 -4
- package/resource/knowledge/chat/preset/android-view/integration.md +0 -6
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +0 -4
- package/resource/knowledge/chat/preset/flutter/features/contact-list.md +0 -9
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +0 -7
- package/resource/knowledge/chat/preset/flutter/features/language.md +0 -5
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +0 -6
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +0 -8
- package/resource/knowledge/chat/preset/flutter/features/search.md +0 -5
- package/resource/knowledge/chat/preset/flutter/features/theme.md +0 -4
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +0 -5
- package/resource/knowledge/chat/preset/ios/features/contact-list.md +0 -5
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +0 -7
- package/resource/knowledge/chat/preset/ios/features/language.md +1 -8
- package/resource/knowledge/chat/preset/ios/features/message-input.md +0 -6
- package/resource/knowledge/chat/preset/ios/features/message-list.md +0 -8
- package/resource/knowledge/chat/preset/ios/features/search.md +0 -5
- package/resource/knowledge/chat/preset/ios/features/theme.md +0 -4
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +0 -6
- package/resource/knowledge/chat/preset/react/features/contact-list.md +0 -23
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +2 -11
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +4 -26
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +0 -6
- package/resource/knowledge/chat/preset/react/features/search.md +0 -1
- package/resource/knowledge/chat/preset/react/features/theme.md +0 -1
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +3 -9
- package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +0 -3
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +2 -13
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +2 -3
- package/resource/knowledge/chat/preset/vue/features/conversation-search.md +1 -0
- package/resource/knowledge/chat/preset/vue/features/search.md +4 -3
- package/resource/knowledge/chat/urls/sdk/web.md +1 -1
- package/resource/knowledge/livekit/best-practice/android/voice-room-anchor-start.md +120 -0
- package/resource/knowledge/livekit/best-practice/common/admin-take-seat.md +73 -0
- package/resource/knowledge/livekit/best-practice/common/audience-leave-live.md +81 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-no-audio-troubleshoot.md +100 -0
- package/resource/knowledge/livekit/best-practice/common/voice-room-seat-list-change.md +65 -0
- package/resource/knowledge/livekit/best-practice/flutter/voice-room-anchor-start.md +122 -0
- package/resource/knowledge/livekit/best-practice/ios/voice-room-anchor-start.md +126 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +1 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +0 -7
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +0 -5
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +0 -3
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +0 -1
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/android/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/audio-effect.md +2 -3
- package/resource/knowledge/livekit/core-sdk/features/android/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/android/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +3 -4
- package/resource/knowledge/livekit/core-sdk/features/flutter/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +2 -4
- package/resource/knowledge/livekit/core-sdk/features/flutter/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/flutter/live-list.md +3 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/audience-list.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/audio-effect.md +2 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/barrage.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +2 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +2 -7
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +3 -4
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +1 -3
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -1
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -3
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +0 -5
- package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +1 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/co-guest-interaction.md +1 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +3 -6
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +1 -4
- package/resource/knowledge/livekit/faq/error-code.md +0 -1
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +2 -3
- package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +3 -3
- package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +3 -3
- package/resource/knowledge/push/api-reference/android.md +0 -1
- package/resource/knowledge/push/api-reference/harmonyos.md +0 -2
- package/resource/knowledge/push/api-reference/react-native.md +3 -5
- package/resource/knowledge/push/api-reference/uni-app.md +3 -5
- package/resource/knowledge/push/api-reference/unity.md +0 -1
- package/resource/knowledge/push/api-reference/unreal-engine.md +0 -1
- package/resource/knowledge/push/config/android.md +0 -24
- package/resource/knowledge/push/config/harmonyos.md +0 -1
- package/resource/knowledge/push/config/ios.md +0 -3
- package/resource/knowledge/push/config/react-native.md +0 -29
- package/resource/knowledge/push/config/unity.md +1 -24
- package/resource/knowledge/push/config/unreal-engine.md +1 -24
- package/resource/knowledge/push/integration/android.md +0 -14
- package/resource/knowledge/push/integration/flutter.md +0 -19
- package/resource/knowledge/push/integration/harmonyos.md +0 -2
- package/resource/knowledge/push/integration/ios.md +0 -3
- package/resource/knowledge/push/integration/react-native.md +0 -24
- package/resource/knowledge/push/integration/uni-app.md +1 -11
- package/resource/knowledge/push/integration/unity.md +0 -9
- package/resource/knowledge/push/integration/unreal-engine.md +1 -17
- package/resource/knowledge/roomkit/best-practice/common/room-ghost-member.md +70 -0
- package/resource/knowledge/roomkit/best-practice/common/room-limit-and-multi.md +83 -0
- package/resource/knowledge/roomkit/best-practice/common/room-screen-share-preview.md +83 -0
- package/resource/knowledge/roomkit/best-practice/common/room-status-after-all-leave.md +69 -0
- package/resource/knowledge/roomkit/best-practice/vue/room-uikit-vs-atomicx.md +111 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +1 -5
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +0 -4
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +1 -5
- package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +1 -1
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +0 -6
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +0 -9
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +0 -11
- package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +1 -5
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +1 -8
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +0 -5
- package/resource/knowledge/roomkit/preset/android/integration.md +0 -4
- package/resource/knowledge/roomkit/preset/flutter/integration.md +1 -13
- package/resource/knowledge/roomkit/preset/ios/integration.md +0 -6
- package/resource/knowledge/roomkit/preset/react/integration.md +0 -16
- package/resource/knowledge/rtcengine/web/api.md +1 -8
- package/resource/knowledge/rtcengine/web/faq.md +3 -5
- package/resource/knowledge/rtcengine/web/how_to_integrated_web_sdk.md +0 -6
- package/resource/knowledge/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/21-advanced-auto-play-policy.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/27-advanced-small-stream.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/30-advanced-cross-room-link.md +2 -0
- package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -3
- package/resource/knowledge/rtcengine/web/plugin/34-advanced-proxy.md +2 -4
- package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -4
- package/resource/knowledge/rtcengine/web/plugin/39-advanced-video-decoder.md +1 -1
- package/resource/knowledge/trtc/android/TRTCCloud.md +8 -56
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +6 -7
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +1 -18
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +0 -14
- package/resource/knowledge/trtc/android/TXDeviceManager.md +0 -1
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -1
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +7 -59
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +0 -14
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +0 -4
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1 -19
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +6 -7
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -1
- package/resource/knowledge/trtc/ios/TRTCCloud.md +9 -60
- package/resource/knowledge/trtc/ios/TRTCCloudDef.md +6 -7
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1 -19
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +0 -13
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +0 -4
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -1
- package/server.js +27 -22
- package/tools/common/finalize_answer.js +9 -1
- package/tools/common/search_trtc_knowledge.js +3 -1
- package/tools/definitions/finalize_answer_def.js +2 -2
- package/tools/definitions/integration-boundary.js +2 -1
- package/tools/definitions/search_trtc_knowledge_def.js +2 -1
- package/utils/report-cls-client.js +3 -3
- package/utils/report-es-client.js +1 -1
- package/cursor-setting.png +0 -0
- package/mcp-server-prompt.png +0 -0
- package/resource/knowledge/callkit/best-practice/web/callengine-invitation.md +0 -80
- package/resource/knowledge/callkit/best-practice/web/callengine-log-control.md +0 -24
- package/resource/knowledge/callkit/best-practice/web/callkit-call-vs-calls.md +0 -116
- package/resource/knowledge/callkit/preset/react/uikit-api-reference.md +0 -445
- package/resource/knowledge/callkit/preset/vue/uikit-api-reference.md +0 -465
- package/resource/knowledge/chat/best-practice/web/image-message-url-handling.md +0 -16
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -230
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -797
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +0 -325
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
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,
|
|
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.
|
|
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
|
|
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,
|
|
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.
|
|
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
|
|
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?
|
package/resource/knowledge/chat/best-practice/common/group-conversation-cleanup-on-system-notice.md
ADDED
|
@@ -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`?
|