@tencentcloud/sdk-mcp 1.4.7 → 1.6.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +0 -1
- package/knowledge/bm25-cache.js +73 -0
- package/knowledge/bm25.js +147 -0
- package/knowledge/build-index.js +65 -0
- package/knowledge/chunker.js +167 -0
- package/knowledge/content-loader.js +44 -0
- package/knowledge/extractors.js +25 -0
- package/knowledge/path-meta.js +175 -0
- package/knowledge/search/exact-lookup.js +330 -0
- package/knowledge/search/filter-pool.js +86 -0
- package/knowledge/search/requires-framework.js +72 -0
- package/knowledge/search/search-knowledge.js +226 -0
- package/package.json +9 -9
- package/resource/_schema/feature-aliases.yaml +10 -0
- package/resource/_schema/goal-tags.yaml +72 -0
- package/resource/_schema/products.yaml +16 -0
- package/resource/_schema/trtc-intents.yaml +27 -0
- package/resource/_schema/types.yaml +44 -0
- package/resource/index/component-slugs.json +1 -0
- package/resource/index/manifest.json +1 -0
- package/resource/{doc → integration}/callkit/preset/android/integration.md +32 -28
- package/resource/{doc → integration}/callkit/preset/flutter/integration.md +109 -54
- package/resource/integration/callkit/preset/ios/integration.md +411 -0
- package/resource/integration/callkit/preset/react/integration.md +499 -0
- package/resource/integration/callkit/preset/vue/integration.md +768 -0
- package/resource/{doc/chatkit → integration/chat/preset}/android/integration.md +11 -11
- package/resource/{doc/chatkit → integration/chat/preset}/flutter/integration.md +59 -37
- package/resource/integration/chat/preset/ios/integration.md +568 -0
- package/resource/{doc/chatkit → integration/chat/preset}/react/integration.md +127 -95
- package/resource/integration/chat/preset/uni-app/integration.md +494 -0
- package/resource/{doc/chatkit → integration/chat/preset}/vue/integration.md +163 -143
- package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +15 -15
- package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +25 -13
- package/resource/{doc → integration}/livekit/preset/live/vue/live-player-h5-integration.md +15 -9
- package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +31 -26
- package/resource/integration/roomkit/preset/vue/integration.md +571 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +852 -0
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +929 -0
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +364 -0
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1150 -0
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1216 -0
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +412 -0
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1191 -0
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1292 -0
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +537 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +953 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1061 -0
- package/resource/knowledge/callkit/faq/android.md +168 -0
- package/resource/knowledge/callkit/faq/common.md +180 -0
- package/resource/knowledge/callkit/faq/flutter.md +52 -0
- package/resource/knowledge/callkit/faq/ios.md +116 -0
- package/resource/knowledge/callkit/faq/uniapp-app.md +89 -0
- package/resource/knowledge/callkit/faq/uniapp-miniprogram.md +217 -0
- package/resource/knowledge/callkit/faq/web.md +363 -0
- package/resource/knowledge/callkit/preset/android/api.md +413 -0
- package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
- package/resource/knowledge/callkit/preset/ios/api.md +256 -0
- package/resource/knowledge/callkit/preset/web/api.md +79 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +72 -0
- package/resource/knowledge/chat/preset/android/features/contact-list.md +41 -0
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +123 -0
- package/resource/knowledge/chat/preset/android/features/language.md +142 -0
- package/resource/knowledge/chat/preset/android/features/message-input.md +57 -0
- package/resource/knowledge/chat/preset/android/features/message-list.md +142 -0
- package/resource/knowledge/chat/preset/android/features/search.md +64 -0
- package/resource/{doc/chatkit → knowledge/chat/preset}/android/features/theme.md +21 -18
- package/resource/knowledge/chat/preset/android-view/integration.md +448 -0
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +62 -0
- package/resource/knowledge/chat/preset/flutter/features/contact-list.md +40 -0
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +129 -0
- package/resource/knowledge/chat/preset/flutter/features/language.md +104 -0
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +54 -0
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +163 -0
- package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
- package/resource/{doc/chatkit → knowledge/chat/preset}/flutter/features/theme.md +47 -19
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +92 -0
- package/resource/knowledge/chat/preset/ios/features/contact-list.md +119 -0
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +134 -0
- package/resource/knowledge/chat/preset/ios/features/language.md +105 -0
- package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
- package/resource/knowledge/chat/preset/ios/features/message-list.md +164 -0
- package/resource/knowledge/chat/preset/ios/features/search.md +94 -0
- package/resource/{doc/chatkit → knowledge/chat/preset}/ios/features/theme.md +54 -51
- package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +157 -94
- package/resource/knowledge/chat/preset/react/features/chat-setting.md +123 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +256 -104
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +217 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/conversation-list.md +86 -79
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +99 -0
- package/resource/knowledge/chat/preset/react/features/conversation-search.md +58 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +30 -83
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-list.md +22 -25
- package/resource/knowledge/chat/preset/react/features/search.md +531 -0
- package/resource/knowledge/chat/preset/react/features/theme.md +16 -0
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/chat-setting.md +0 -4
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/contact-list.md +59 -53
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-actions.md +49 -43
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-list.md +61 -49
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-preview.md +43 -40
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +1 -1
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/message-input.md +128 -105
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/message-list.md +108 -195
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +74 -68
- package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
- package/resource/knowledge/chat/urls/error-code.md +16 -0
- package/resource/knowledge/chat/urls/product.md +61 -0
- package/resource/knowledge/chat/urls/restapi.md +226 -0
- package/resource/knowledge/chat/urls/sdk/android.md +84 -0
- package/resource/knowledge/chat/urls/sdk/flutter.md +73 -0
- package/resource/knowledge/chat/urls/sdk/ios.md +84 -0
- package/resource/knowledge/chat/urls/sdk/web.md +88 -0
- package/resource/knowledge/chat/urls/webhook.md +73 -0
- package/resource/{doc/livekit/core-sdk/live/android/api-reference → knowledge/livekit/core-sdk/api-reference/android}/AudioEffectStore.md +79 -76
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +174 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +329 -0
- package/resource/{doc/livekit/core-sdk/live/android/api-reference → knowledge/livekit/core-sdk/api-reference/android}/CameraView.md +7 -6
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +434 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +362 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +466 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +173 -0
- package/resource/{doc/livekit/core-sdk/live/android/api-reference → knowledge/livekit/core-sdk/api-reference/android}/LikeStore.md +12 -10
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +291 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +439 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +221 -0
- package/resource/{doc/livekit/core-sdk/live/flutter/api-reference → knowledge/livekit/core-sdk/api-reference/flutter}/AudioEffectStore.md +79 -76
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
- package/resource/{doc/livekit/core-sdk/live/flutter/api-reference → knowledge/livekit/core-sdk/api-reference/flutter}/BaseBeautyStore.md +43 -45
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +312 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +404 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +334 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +420 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
- package/resource/{doc/livekit/core-sdk/live/flutter/api-reference → knowledge/livekit/core-sdk/api-reference/flutter}/LikeStore.md +12 -11
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
- package/resource/{doc/livekit/core-sdk/live/flutter/api-reference → knowledge/livekit/core-sdk/api-reference/flutter}/LiveCoreView.md +49 -42
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +397 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +183 -0
- package/resource/{doc/livekit/core-sdk/live/ios/api-reference → knowledge/livekit/core-sdk/api-reference/ios}/AudioEffectStore.md +79 -75
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +192 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +146 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +309 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +370 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +339 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +503 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +188 -0
- package/resource/{doc/livekit/core-sdk/live/ios/api-reference → knowledge/livekit/core-sdk/api-reference/ios}/LikeStore.md +12 -10
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +289 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +434 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +187 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +780 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +59 -51
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +37 -34
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +68 -38
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +18 -15
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +17 -17
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +86 -80
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +53 -49
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +47 -45
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +26 -22
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +16 -13
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +33 -21
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +29 -25
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +21 -20
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +78 -69
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-host-interaction.md +47 -43
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +48 -45
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +27 -23
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +15 -12
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +39 -36
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +42 -29
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +19 -16
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +20 -19
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +55 -49
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +50 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +48 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +26 -22
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +59 -51
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +41 -38
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +67 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +53 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +86 -80
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +45 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +43 -42
- package/resource/knowledge/livekit/core-sdk/voice/android/voice-room-list.md +523 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-audience-list.md +16 -13
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-audio-effect.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-barrage.md +33 -21
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +34 -28
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-gift.md +73 -64
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +46 -43
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-room-list.md +165 -148
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +19 -16
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +40 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +41 -28
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +54 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +52 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +55 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +47 -45
- package/resource/knowledge/livekit/core-sdk/voice/ios/voice-room-list.md +404 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/uni-app/voice-audience-list.md +40 -57
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/uni-app/voice-audio-effect.md +38 -49
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/uni-app/voice-barrage.md +53 -53
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/uni-app/voice-co-guest-interaction.md +106 -116
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/uni-app/voice-gift.md +49 -59
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/uni-app/voice-integration.md +52 -45
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/uni-app/voice-room-list.md +38 -46
- package/resource/knowledge/livekit/preset/live/vue/features/barrage.md +915 -0
- package/resource/knowledge/livekit/preset/live/vue/features/live-audience-list.md +179 -0
- package/resource/knowledge/livekit/preset/live/vue/features/live-view.md +419 -0
- package/resource/knowledge/push/config/android/fcm.md +133 -0
- package/resource/knowledge/push/config/android/honor.md +111 -0
- package/resource/knowledge/push/config/android/huawei.md +106 -0
- package/resource/knowledge/push/config/android/meizu.md +121 -0
- package/resource/knowledge/push/config/android/oppo.md +108 -0
- package/resource/knowledge/push/config/android/vivo.md +101 -0
- package/resource/knowledge/push/config/android/xiaomi.md +99 -0
- package/resource/knowledge/push/integration/android.md +1028 -0
- package/resource/knowledge/push/integration/donut.md +271 -0
- package/resource/knowledge/push/integration/flutter.md +363 -0
- package/resource/knowledge/push/integration/harmonyos.md +72 -0
- package/resource/knowledge/push/integration/ios.md +705 -0
- package/resource/knowledge/push/integration/react-native.md +337 -0
- package/resource/knowledge/push/integration/uni-app.md +461 -0
- package/resource/knowledge/push/integration/unity.md +357 -0
- package/resource/knowledge/push/integration/unreal-engine.md +353 -0
- package/resource/knowledge/push/overview/prepare.md +30 -0
- package/resource/{doc/roomkit/android/features → knowledge/roomkit/core-sdk/android}/call-user-to-room.md +22 -20
- package/resource/{doc/roomkit/android/features → knowledge/roomkit/core-sdk/android}/room-participant-state.md +22 -193
- package/resource/{doc/roomkit/android/features → knowledge/roomkit/core-sdk/android}/room-state.md +33 -32
- package/resource/{doc/roomkit/android/features → knowledge/roomkit/core-sdk/android}/schedule-room.md +30 -29
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
- package/resource/{doc/roomkit/flutter/features → knowledge/roomkit/core-sdk/flutter}/room-participant-state.md +22 -21
- package/resource/{doc/roomkit/flutter/features → knowledge/roomkit/core-sdk/flutter}/room-state.md +29 -28
- package/resource/{doc/roomkit/flutter/features → knowledge/roomkit/core-sdk/flutter}/schedule-room.md +17 -16
- package/resource/{doc/roomkit/ios/features → knowledge/roomkit/core-sdk/ios}/call-user-to-room.md +22 -20
- package/resource/{doc/roomkit/ios/features → knowledge/roomkit/core-sdk/ios}/room-participant-state.md +49 -218
- package/resource/{doc/roomkit/ios/features → knowledge/roomkit/core-sdk/ios}/room-state.md +37 -37
- package/resource/{doc/roomkit/ios/features → knowledge/roomkit/core-sdk/ios}/schedule-room.md +28 -28
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/call-user-to-room.md +122 -7
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +318 -3
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +1504 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/free-beauty-panel.md +4 -3
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +709 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-participant-state.md +1105 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +635 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +529 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/schedule-room.md +256 -13
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/screen-share.md +218 -25
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/virtual-background.md +4 -3
- package/resource/{doc/roomkit → knowledge/roomkit/preset}/android/integration.md +50 -64
- package/resource/{doc/roomkit → knowledge/roomkit/preset}/flutter/integration.md +34 -31
- package/resource/{doc/roomkit → knowledge/roomkit/preset}/ios/integration.md +45 -53
- package/resource/knowledge/roomkit/preset/react/integration.md +571 -0
- package/resource/{doc → knowledge}/rtcengine/web/how_to_run_web_sdk_demo.md +31 -15
- package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +9 -3
- package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/23-advanced-support-detection.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/24-advanced-network-quality.md +6 -6
- package/resource/{doc → knowledge}/rtcengine/web/plugin/25-advanced-device-change.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +4 -4
- package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +4 -4
- package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/{doc → knowledge}/trtc/android/TRTCCloud.md +547 -495
- package/resource/{doc → knowledge}/trtc/android/TRTCCloudDef.md +434 -403
- package/resource/{doc → knowledge}/trtc/android/TRTCCloudListener.md +394 -348
- package/resource/{doc → knowledge}/trtc/android/TRTCStatistics.md +17 -15
- package/resource/{doc → knowledge}/trtc/android/TXAudioEffectManager.md +227 -197
- package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
- package/resource/{doc → knowledge}/trtc/android/TXDeviceManager.md +70 -63
- package/resource/{doc → knowledge}/trtc/android/TXLiteAVCode.md +19 -17
- package/resource/{doc/trtc/C++ → knowledge/trtc/c++}/ITRTCCloud.md +599 -544
- package/resource/{doc/trtc/C++ → knowledge/trtc/c++}/ITRTCStatistics.md +17 -15
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +403 -0
- package/resource/{doc/trtc/C++ → knowledge/trtc/c++}/TRTCCloudCallback.md +439 -387
- package/resource/{doc/trtc/C++ → knowledge/trtc/c++}/TRTCTypeDef.md +417 -387
- package/resource/{doc/trtc/C++ → knowledge/trtc/c++}/TXLiteAVCode.md +19 -17
- package/resource/{doc/trtc/iOS → knowledge/trtc/ios}/TRTCCloud.md +619 -559
- package/resource/{doc/trtc/iOS → knowledge/trtc/ios}/TRTCCloudDelegate.md +409 -360
- package/resource/{doc/trtc/iOS → knowledge/trtc/ios}/TRTCStatistics.md +17 -15
- package/resource/{doc/trtc/iOS → knowledge/trtc/ios}/TXAudioEffectManager.md +187 -164
- package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +399 -0
- package/resource/{doc/trtc/iOS → knowledge/trtc/ios}/TXLiteAVCode.md +19 -17
- package/resource/{doc/trtc/iOS → knowledge/trtc/ios}/TXLiveSDKTypeDef.md +422 -396
- package/server-config.js +0 -1
- package/server.js +22 -12
- package/streamable-http.js +0 -1
- package/tools/call/get_native_call_uikit_integration.js +2 -4
- package/tools/call/get_native_callkit_core_integration.js +2 -6
- package/tools/call/get_web_call_uikit_integration.js +2 -4
- package/tools/chat/get_native_chat_uikit_integration.js +2 -4
- package/tools/chat/get_web_chat_uikit_integration.js +2 -4
- package/tools/common/get_usersig.js +0 -1
- package/tools/common/present_framework_choice.js +9 -4
- package/tools/common/record_answer.js +19 -26
- package/tools/common/record_feedback.js +17 -31
- package/tools/common/search_trtc_knowledge.js +44 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js +2 -1
- package/tools/definitions/get_native_callkit_core_integration_def.js +2 -1
- package/tools/definitions/get_native_chat_uikit_integration_def.js +3 -2
- package/tools/definitions/get_native_livekit_core_integration_def.js +2 -1
- package/tools/definitions/get_usersig_def.js +0 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js +2 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +4 -3
- package/tools/definitions/get_web_room_core_integration_def.js +46 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +3 -1
- package/tools/definitions/integration-boundary.js +5 -0
- package/tools/definitions/present_framework_choice_def.js +11 -10
- package/tools/definitions/record_answer_def.js +6 -5
- package/tools/definitions/record_feedback_def.js +4 -3
- package/tools/definitions/search_trtc_knowledge_def.js +69 -0
- package/tools/index.js +5 -37
- package/tools/live/get_native_livekit_core_integration.js +1 -4
- package/tools/live/get_web_live_uikit_integration.js +2 -5
- package/tools/room/get_web_room_core_integration.js +47 -0
- package/tools/room/get_web_room_uikit_integration.js +2 -4
- package/utils/generate-structured-result.js +4 -11
- package/utils/generate-usersig.js +0 -1
- package/utils/get-device-identifier.js +0 -1
- package/utils/get-doc-content.js +14 -9
- package/utils/http-get.js +0 -1
- package/utils/http-post.js +0 -1
- package/utils/report-cls-client.js +22 -21
- package/utils/report-es-client.js +1 -2
- package/utils/report-runtime-error-cls-client.js +0 -1
- package/index.js.map +0 -1
- package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
- package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -942
- package/resource/doc/callkit/core-sdk/android/make-call.md +0 -876
- package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -368
- package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1132
- package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1206
- package/resource/doc/callkit/core-sdk/flutter/offline-push.md +0 -357
- package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1009
- package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1154
- package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -470
- package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -1146
- package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1267
- package/resource/doc/callkit/faq/android-faq.md +0 -767
- package/resource/doc/callkit/faq/flutter-faq.md +0 -749
- package/resource/doc/callkit/faq/ios-faq.md +0 -759
- package/resource/doc/callkit/faq/web-faq.md +0 -753
- package/resource/doc/callkit/preset/android/api.md +0 -330
- package/resource/doc/callkit/preset/flutter/api.md +0 -401
- package/resource/doc/callkit/preset/ios/api.md +0 -282
- package/resource/doc/callkit/preset/ios/integration.md +0 -188
- package/resource/doc/callkit/preset/react/api.md +0 -600
- package/resource/doc/callkit/preset/react/integration.md +0 -86
- package/resource/doc/callkit/preset/vue/api.md +0 -600
- package/resource/doc/callkit/preset/vue/integration.md +0 -83
- package/resource/doc/chatkit/android/faq.md +0 -109
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -280
- package/resource/doc/chatkit/faq/common/product.md +0 -82
- package/resource/doc/chatkit/faq/common/server.md +0 -53
- package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -183
- package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -54
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -279
- package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
- package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -292
- package/resource/doc/chatkit/flutter/faq.md +0 -22
- package/resource/doc/chatkit/ios/faq.md +0 -109
- package/resource/doc/chatkit/react/components/avatar.md +0 -104
- package/resource/doc/chatkit/react/components/chat-header.md +0 -148
- package/resource/doc/chatkit/react/components/chat-setting.md +0 -117
- package/resource/doc/chatkit/react/components/chat.md +0 -38
- package/resource/doc/chatkit/react/components/component-list.md +0 -35
- package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
- package/resource/doc/chatkit/react/components/conversation-preview.md +0 -116
- package/resource/doc/chatkit/react/components/conversation-search.md +0 -57
- package/resource/doc/chatkit/react/components/search.md +0 -282
- package/resource/doc/chatkit/react/components/tuikit.md +0 -43
- package/resource/doc/chatkit/react/faq.md +0 -26
- package/resource/doc/chatkit/vue/components/avatar.md +0 -104
- package/resource/doc/chatkit/vue/components/chat-header.md +0 -149
- package/resource/doc/chatkit/vue/components/chat.md +0 -42
- package/resource/doc/chatkit/vue/components/component-list.md +0 -89
- package/resource/doc/chatkit/vue/components/tuikit.md +0 -45
- package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
- package/resource/doc/chatkit/vue/faq.md +0 -35
- package/resource/doc/livekit/core-sdk/live/android/api-reference/BarrageStore.md +0 -148
- package/resource/doc/livekit/core-sdk/live/android/api-reference/BattleStore.md +0 -316
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CoGuestStore.md +0 -419
- package/resource/doc/livekit/core-sdk/live/android/api-reference/CoHostStore.md +0 -325
- package/resource/doc/livekit/core-sdk/live/android/api-reference/DeviceStore.md +0 -436
- package/resource/doc/livekit/core-sdk/live/android/api-reference/GiftStore.md +0 -165
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveAudienceStore.md +0 -239
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveCoreView.md +0 -74
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LiveSeatStore.md +0 -417
- package/resource/doc/livekit/core-sdk/live/android/api-reference/LoginStore.md +0 -207
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BarrageStore.md +0 -158
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/BattleStore.md +0 -304
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoGuestStore.md +0 -394
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/CoHostStore.md +0 -303
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/DeviceStore.md +0 -410
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/GiftStore.md +0 -160
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveAudienceStore.md +0 -231
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LiveSeatStore.md +0 -375
- package/resource/doc/livekit/core-sdk/live/flutter/api-reference/LoginStore.md +0 -170
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BarrageStore.md +0 -165
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BaseBeautyStore.md +0 -143
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/BattleStore.md +0 -298
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoGuestStore.md +0 -349
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/CoHostStore.md +0 -297
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/DeviceStore.md +0 -471
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/GiftStore.md +0 -179
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveAudienceStore.md +0 -238
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveCoreView.md +0 -74
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LiveSeatStore.md +0 -412
- package/resource/doc/livekit/core-sdk/live/ios/api-reference/LoginStore.md +0 -173
- package/resource/doc/livekit/core-sdk/voice/android/voice-room-list.md +0 -365
- package/resource/doc/livekit/core-sdk/voice/ios/voice-room-list.md +0 -336
- package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
- package/resource/doc/livekit/preset/live/vue/components/barrage.md +0 -291
- package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -88
- package/resource/doc/livekit/preset/live/vue/components/live-audience-list.md +0 -164
- package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -130
- package/resource/doc/livekit/preset/live/vue/components/live-view.md +0 -203
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -211
- package/resource/doc/livekit/preset/live/vue/faq.md +0 -1
- package/resource/doc/roomkit/faq/common/error-code.md +0 -67
- package/resource/doc/roomkit/flutter/features/call-user-to-room.md +0 -228
- package/resource/doc/roomkit/vue/faq.md +0 -1
- package/resource/doc/roomkit/vue/features/device-state.md +0 -460
- package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
- package/resource/doc/roomkit/vue/features/room-participant-state.md +0 -385
- package/resource/doc/roomkit/vue/features/room-state.md +0 -280
- package/resource/doc/roomkit/vue/features/room-view.md +0 -241
- package/resource/doc/roomkit/vue/integration.md +0 -315
- package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -472
- package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -388
- package/resource/doc/trtc/android/TXBeautyManager.md +0 -403
- package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -404
- package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -382
- package/server-config.js.map +0 -1
- package/server.js.map +0 -1
- package/streamable-http.js.map +0 -1
- package/tools/call/get_callkit_api.js +0 -33
- package/tools/call/get_callkit_api.js.map +0 -1
- package/tools/call/get_native_call_uikit_integration.js.map +0 -1
- package/tools/call/get_native_callkit_core_integration.js.map +0 -1
- package/tools/call/get_web_call_uikit_integration.js.map +0 -1
- package/tools/chat/get_native_chat_uikit_feature_detail.js +0 -35
- package/tools/chat/get_native_chat_uikit_feature_detail.js.map +0 -1
- package/tools/chat/get_native_chat_uikit_integration.js.map +0 -1
- package/tools/chat/get_web_chat_uikit_component_detail.js +0 -35
- package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
- package/tools/chat/get_web_chat_uikit_integration.js.map +0 -1
- package/tools/common/get_faq.js +0 -266
- package/tools/common/get_faq.js.map +0 -1
- package/tools/common/get_usersig.js.map +0 -1
- package/tools/common/present_framework_choice.js.map +0 -1
- package/tools/common/record_answer.js.map +0 -1
- package/tools/common/record_feedback.js.map +0 -1
- package/tools/common/record_skill_session.js +0 -69
- package/tools/common/record_skill_session.js.map +0 -1
- package/tools/definitions/get_callkit_api_def.js +0 -28
- package/tools/definitions/get_callkit_api_def.js.map +0 -1
- package/tools/definitions/get_faq_def.js +0 -40
- package/tools/definitions/get_faq_def.js.map +0 -1
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_native_callkit_core_integration_def.js.map +0 -1
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +0 -31
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_native_livekit_core_features_def.js +0 -33
- package/tools/definitions/get_native_livekit_core_features_def.js.map +0 -1
- package/tools/definitions/get_native_livekit_core_integration_def.js.map +0 -1
- package/tools/definitions/get_native_trtc_sdk_docs_def.js +0 -32
- package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +0 -1
- package/tools/definitions/get_usersig_def.js.map +0 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js +0 -31
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_api_def.js +0 -27
- package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_component_detail_def.js +0 -29
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +0 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -30
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -25
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -25
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -25
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +0 -1
- package/tools/definitions/present_framework_choice_def.js.map +0 -1
- package/tools/definitions/record_answer_def.js.map +0 -1
- package/tools/definitions/record_feedback_def.js.map +0 -1
- package/tools/definitions/record_skill_session_def.js +0 -31
- package/tools/definitions/record_skill_session_def.js.map +0 -1
- package/tools/index.js.map +0 -1
- package/tools/live/get_native_livekit_core_features.js +0 -68
- package/tools/live/get_native_livekit_core_features.js.map +0 -1
- package/tools/live/get_native_livekit_core_integration.js.map +0 -1
- package/tools/live/get_web_live_uikit_integration.js.map +0 -1
- package/tools/live/get_web_livekit_api.js +0 -33
- package/tools/live/get_web_livekit_api.js.map +0 -1
- package/tools/live/get_web_livekit_component_detail.js +0 -35
- package/tools/live/get_web_livekit_component_detail.js.map +0 -1
- package/tools/room/get_web_room_uikit_integration.js.map +0 -1
- package/tools/room/get_web_roomkit_feature_detail.js +0 -69
- package/tools/room/get_web_roomkit_feature_detail.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_api.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_api.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_integration.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +0 -1
- package/tools/trtc/get_native_trtc_sdk_docs.js +0 -74
- package/tools/trtc/get_native_trtc_sdk_docs.js.map +0 -1
- package/utils/build-session-directives.js +0 -122
- package/utils/build-session-directives.js.map +0 -1
- package/utils/generate-structured-result.js.map +0 -1
- package/utils/generate-usersig.js.map +0 -1
- package/utils/get-device-identifier.js.map +0 -1
- package/utils/get-doc-content.js.map +0 -1
- package/utils/handle-framework.js +0 -9
- package/utils/handle-framework.js.map +0 -1
- package/utils/handle-state-name.js +0 -29
- package/utils/handle-state-name.js.map +0 -1
- package/utils/http-get.js.map +0 -1
- package/utils/http-post.js.map +0 -1
- package/utils/report-cls-client.js.map +0 -1
- package/utils/report-es-client.js.map +0 -1
- package/utils/report-runtime-error-cls-client.js.map +0 -1
- /package/resource/{doc/callkit/faq/common → knowledge/callkit/faq}/error-code.md +0 -0
- /package/resource/{doc/livekit/faq/common → knowledge/livekit/faq}/error-code.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/api.md +0 -0
- /package/resource/{doc/rtcengine/faq/web/web.md → knowledge/rtcengine/web/faq.md} +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/how_to_integrated_web_sdk.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/28-advanced-beauty.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/30-advanced-cross-room-link.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/37-advanced-voice-changer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/38-advanced-basic-beauty.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/40-advanced-video-mixer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/43-advanced-face-detection.md +0 -0
- /package/resource/{doc/rtcengine/faq/common → knowledge/share}/userSig.md +0 -0
|
@@ -0,0 +1,709 @@
|
|
|
1
|
+
会中聊天功能允许会议内的成员通过文字、表情等形式进行实时互动。该功能基于 `tuikit-atomicx-vue3`(Vue 3)或 `tuikit-atomicx-react`(React)的 IM 组件能力实现,为用户提供便捷的即时通信体验。
|
|
2
|
+
|
|
3
|
+
## 适用场景
|
|
4
|
+
- **在线研讨会:**主讲人进行视频演讲时,参会者可以通过文字提问或讨论。
|
|
5
|
+
|
|
6
|
+
- **远程协作:**团队成员在沟通时,可发送文字、图片、文件等。
|
|
7
|
+
|
|
8
|
+
- **直播教学:**学生可以在聊天区发送弹幕或问题,老师实时查看并解答,增强课堂互动性。
|
|
9
|
+
|
|
10
|
+
## 前提条件
|
|
11
|
+
|
|
12
|
+
在接入功能前,请确保满足以下条件:
|
|
13
|
+
- **用户状态:**用户已经通过 useLoginState 完成登录鉴权,参见 接入概览,并已作为一个房间的房主或成员在房间内,参考 房间管理。
|
|
14
|
+
|
|
15
|
+
- **环境依赖:**项目已正确安装并引入 `tuikit-atomicx-vue3`(Vue 3)或 `tuikit-atomicx-react`(React)。
|
|
16
|
+
|
|
17
|
+
## 实现会中聊天功能
|
|
18
|
+
|
|
19
|
+
本功能提供两种集成方案,您可以根据业务需求选择最适合的一种:
|
|
20
|
+
- **方案一(推荐):**使用 UI 组件快速集成。直接引入 `tuikit-atomicx-vue3` 和 `tuikit-atomicx-react` 提供的消息列表组件(`MessageList`)和消息输入组件(`MessageInput`),开发成本最低。
|
|
21
|
+
|
|
22
|
+
- **方案二(高级):**使用底层 Store API 自定义集成。基于 atomicx-core SDK 的 `MessageListStore` 和 `MessageInputStore` 自行实现 UI 和交互逻辑,灵活度最高。
|
|
23
|
+
|
|
24
|
+
会中聊天
|
|
25
|
+
|
|
26
|
+
## 方案一:使用 UI 组件快速集成
|
|
27
|
+
|
|
28
|
+
`tuikit-atomicx-vue3` 及 `tuikit-atomicx-react` 提供了两个核心组件:
|
|
29
|
+
- **MessageList**:消息列表组件,展示聊天记录,支持消息的复制、撤回、删除等操作。可通过 `ref` 调用 `scrollToBottom` 等方法。
|
|
30
|
+
|
|
31
|
+
- **MessageInput**:消息输入组件,支持文本、表情、图片、文件发送,并可根据禁言状态自动禁用。
|
|
32
|
+
|
|
33
|
+
### 步骤1:数据初始化
|
|
34
|
+
|
|
35
|
+
在用户加入房间成功后,需要调用 [setActiveConversation](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#setActiveConversation) 接口初始化聊天数据。Vue 3 中建议使用 `watch` 监听 `currentRoom` 的变化;React 中使用 `useEffect`。
|
|
36
|
+
|
|
37
|
+
> **说明:**
|
|
38
|
+
>
|
|
39
|
+
> - `GROUP` 为固定前缀,`setActiveConversation` 参数必须为 ``GROUP${roomId}``,否则无法正常收发消息。
|
|
40
|
+
> - `GROUP` 为 IM SDK 群组会话的固定前缀(参考 [IM 会话类型](https://web.sdk.qcloud.com/im/doc/zh-cn/Conversation.html))。房间聊天基于 IM 群组实现,因此会话 ID 必须为 ``GROUP${roomId}`` 格式。
|
|
41
|
+
|
|
42
|
+
【Vue3】
|
|
43
|
+
``` typescript
|
|
44
|
+
import { watch } from 'vue';
|
|
45
|
+
import { useChatContext } from 'tuikit-atomicx-vue3/chat';
|
|
46
|
+
import { useLoginState, useRoomState } from 'tuikit-atomicx-vue3/room';
|
|
47
|
+
|
|
48
|
+
function useChatConversationSync() {
|
|
49
|
+
const { setActiveConversation } = useChatContext();
|
|
50
|
+
const { currentRoom } = useRoomState();
|
|
51
|
+
const { loginUserInfo } = useLoginState();
|
|
52
|
+
|
|
53
|
+
// roomId 或登录用户变化时绑定活跃会话
|
|
54
|
+
watch(
|
|
55
|
+
[() => currentRoom.value?.roomId, () => loginUserInfo.value?.userId],
|
|
56
|
+
([roomId, userId]) => {
|
|
57
|
+
if (!userId) return;
|
|
58
|
+
if (!roomId) {
|
|
59
|
+
// 退房时清空活跃会话
|
|
60
|
+
setActiveConversation('');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// 关键步骤:设置活跃会话 ID,格式为 "GROUP" + roomId
|
|
64
|
+
setActiveConversation(`GROUP${roomId}`);
|
|
65
|
+
},
|
|
66
|
+
{ immediate: true },
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
【React】
|
|
72
|
+
``` typescript
|
|
73
|
+
import { useEffect } from 'react';
|
|
74
|
+
import { useChatContext } from 'tuikit-atomicx-react/chat';
|
|
75
|
+
import { useRoomState, useLoginState } from 'tuikit-atomicx-react/room';
|
|
76
|
+
|
|
77
|
+
function useChatConversationSync() {
|
|
78
|
+
const { setActiveConversation } = useChatContext();
|
|
79
|
+
const { currentRoom } = useRoomState();
|
|
80
|
+
const { loginUserInfo } = useLoginState();
|
|
81
|
+
|
|
82
|
+
// roomId 或登录用户变化时绑定活跃会话
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
const roomId = currentRoom?.roomId;
|
|
85
|
+
if (!loginUserInfo?.userId) return;
|
|
86
|
+
if (!roomId) {
|
|
87
|
+
// 退房时清空活跃会话
|
|
88
|
+
setActiveConversation('');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// 关键步骤:设置活跃会话 ID,格式为 "GROUP" + roomId
|
|
92
|
+
setActiveConversation(`GROUP${roomId}`);
|
|
93
|
+
}, [currentRoom?.roomId, loginUserInfo?.userId, setActiveConversation]);
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 步骤2: 使用组件
|
|
98
|
+
|
|
99
|
+
在您的页面中,可以直接组合使用这两个组件。同时结合 [useRoomParticipantState](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#module-RoomParticipantState) 获取当前用户的禁言状态,控制输入框的可用性。
|
|
100
|
+
|
|
101
|
+
> **注意:**
|
|
102
|
+
>
|
|
103
|
+
|
|
104
|
+
> 所有 TUIKit 组件必须包裹在 UIKitProvider 内部,否则将无法获取上下文依赖,导致样式异常。
|
|
105
|
+
>
|
|
106
|
+
|
|
107
|
+
【Vue3】
|
|
108
|
+
``` typescript
|
|
109
|
+
<template>
|
|
110
|
+
<UIKitProvider theme="light" language="zh-CN">
|
|
111
|
+
<div class="room-chat-container">
|
|
112
|
+
<!-- 消息列表:展示聊天记录,支持复制、撤回、删除操作 -->
|
|
113
|
+
<MessageList
|
|
114
|
+
ref="messageListRef"
|
|
115
|
+
class="message-list"
|
|
116
|
+
:messageActionList="messageActionList"
|
|
117
|
+
/>
|
|
118
|
+
<!-- 消息输入框:禁言时禁用;回车发送(不显示发送按钮) -->
|
|
119
|
+
<MessageInput
|
|
120
|
+
class="message-input"
|
|
121
|
+
:placeholder="placeholder"
|
|
122
|
+
:disabled="localParticipant?.isMessageDisabled"
|
|
123
|
+
hideSendButton
|
|
124
|
+
/>
|
|
125
|
+
</div>
|
|
126
|
+
</UIKitProvider>
|
|
127
|
+
</template>
|
|
128
|
+
|
|
129
|
+
<script setup lang="ts">
|
|
130
|
+
import { computed, ref } from 'vue';
|
|
131
|
+
import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
132
|
+
import { MessageInput, MessageList, useMessageActions } from 'tuikit-atomicx-vue3/chat';
|
|
133
|
+
import { useRoomParticipantState } from 'tuikit-atomicx-vue3/room';
|
|
134
|
+
import type { MessageListHandle } from 'tuikit-atomicx-vue3/chat';
|
|
135
|
+
|
|
136
|
+
const { localParticipant } = useRoomParticipantState();
|
|
137
|
+
|
|
138
|
+
// 用于命令式控制,如面板打开时滚动到底部
|
|
139
|
+
const messageListRef = ref<MessageListHandle | null>(null);
|
|
140
|
+
|
|
141
|
+
// isMessageDisabled 由房间后台实时同步,无需前端主动轮询
|
|
142
|
+
const placeholder = computed(() =>
|
|
143
|
+
localParticipant.value?.isMessageDisabled ? '您已被禁言' : '请输入消息...'
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
// 配置消息长按/右键操作菜单
|
|
147
|
+
const messageActionList = useMessageActions(['copy', 'recall', 'delete']);
|
|
148
|
+
</script>
|
|
149
|
+
|
|
150
|
+
<style scoped>
|
|
151
|
+
.room-chat-container{display:flex;flex-direction:column;height:100%;padding:8px;gap:8px}.message-list{flex:1;overflow:hidden}.message-input{flex-shrink:0;border:1px solid #e0e0e0;border-radius:8px}
|
|
152
|
+
</style>
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
【React】
|
|
156
|
+
``` typescript
|
|
157
|
+
import { useRef } from 'react';
|
|
158
|
+
import { UIKitProvider } from '@tencentcloud/uikit-base-component-react';
|
|
159
|
+
import { MessageList, MessageInput, useMessageActions } from 'tuikit-atomicx-react/chat';
|
|
160
|
+
import { useRoomParticipantState } from 'tuikit-atomicx-react/room';
|
|
161
|
+
import type { MessageListHandle } from 'tuikit-atomicx-react/chat';
|
|
162
|
+
|
|
163
|
+
function RoomChatPanel() {
|
|
164
|
+
const { localParticipant } = useRoomParticipantState();
|
|
165
|
+
|
|
166
|
+
// isMessageDisabled 由房间后台实时同步,无需轮询
|
|
167
|
+
const isMessageDisabled = localParticipant?.isMessageDisabled;
|
|
168
|
+
const placeholder = isMessageDisabled ? '您已被禁言' : '请输入消息...';
|
|
169
|
+
|
|
170
|
+
// 配置消息长按/右键操作菜单
|
|
171
|
+
const messageActionList = useMessageActions(['copy', 'recall', 'delete']);
|
|
172
|
+
|
|
173
|
+
// 用于命令式控制,如面板打开时滚动到底部
|
|
174
|
+
const messageListRef = useRef<MessageListHandle>(null);
|
|
175
|
+
|
|
176
|
+
return (
|
|
177
|
+
<UIKitProvider theme="light" language="zh-CN">
|
|
178
|
+
<div style={{ display: 'flex', flexDirection: 'column', height: '100%', padding: '8px', gap: '8px' }}>
|
|
179
|
+
{/* 消息列表:展示聊天记录,支持复制、撤回、删除操作 */}
|
|
180
|
+
<MessageList
|
|
181
|
+
ref={messageListRef}
|
|
182
|
+
style={{ flex: 1, overflow: 'hidden' }}
|
|
183
|
+
messageActionList={messageActionList}
|
|
184
|
+
/>
|
|
185
|
+
{/* 消息输入框:禁言时禁用;回车发送(不显示发送按钮) */}
|
|
186
|
+
<MessageInput
|
|
187
|
+
style={{ flexShrink: 0, border: '1px solid #e0e0e0', borderRadius: '8px' }}
|
|
188
|
+
placeholder={placeholder}
|
|
189
|
+
disabled={isMessageDisabled}
|
|
190
|
+
hideSendButton
|
|
191
|
+
/>
|
|
192
|
+
</div>
|
|
193
|
+
</UIKitProvider>
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### 步骤3:处理未读消息计数(可选)
|
|
199
|
+
|
|
200
|
+
如果聊天窗口平时是折叠或关闭状态,您需要通过监听新消息事件来统计未读消息数,并在 UI 上(如聊天图标角标)进行提示。Vue 3 和 React 均通过 `useChatContext` 提供的 `messageListOnEvent` 订阅 `onReceiveNewMessage` 事件实现,非自己发送且面板未打开时累加未读计数,面板打开时清零。
|
|
201
|
+
|
|
202
|
+
【Vue3】
|
|
203
|
+
``` typescript
|
|
204
|
+
import { ref, watch, onUnmounted } from 'vue';
|
|
205
|
+
import { useChatContext } from 'tuikit-atomicx-vue3/chat';
|
|
206
|
+
|
|
207
|
+
const { activeConversationID, messageListOnEvent } = useChatContext();
|
|
208
|
+
|
|
209
|
+
const unreadCount = ref(0);
|
|
210
|
+
const isActive = ref(false); // 根据业务逻辑控制聊天面板是否打开
|
|
211
|
+
|
|
212
|
+
// 订阅新消息事件;活跃会话变化时重新订阅
|
|
213
|
+
watch(activeConversationID, () => {
|
|
214
|
+
const unsub = messageListOnEvent((event) => {
|
|
215
|
+
if (event.type !== 'onReceiveNewMessage') return;
|
|
216
|
+
// 跳过自己发送的消息,或面板已打开时不计数
|
|
217
|
+
if (event.message.isSentBySelf || isActive.value) return;
|
|
218
|
+
unreadCount.value += 1;
|
|
219
|
+
});
|
|
220
|
+
onUnmounted(unsub);
|
|
221
|
+
}, { immediate: true });
|
|
222
|
+
|
|
223
|
+
// 面板打开时清空未读计数
|
|
224
|
+
watch(isActive, (open) => {
|
|
225
|
+
if (open) unreadCount.value = 0;
|
|
226
|
+
});
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
【React】
|
|
230
|
+
``` typescript
|
|
231
|
+
import { useState, useEffect, useRef } from 'react';
|
|
232
|
+
import { useChatContext } from 'tuikit-atomicx-react/chat';
|
|
233
|
+
|
|
234
|
+
function useChatUnreadCount(isChatPanelOpen: boolean) {
|
|
235
|
+
const [unreadCount, setUnreadCount] = useState(0);
|
|
236
|
+
const { activeConversationID, messageListOnEvent } = useChatContext();
|
|
237
|
+
|
|
238
|
+
// 用 ref 保持最新值,避免因依赖变化重新订阅
|
|
239
|
+
const isPanelOpenRef = useRef(isChatPanelOpen);
|
|
240
|
+
useEffect(() => {
|
|
241
|
+
isPanelOpenRef.current = isChatPanelOpen;
|
|
242
|
+
}, [isChatPanelOpen]);
|
|
243
|
+
|
|
244
|
+
// 订阅新消息事件;活跃会话变化时重新订阅
|
|
245
|
+
useEffect(() => {
|
|
246
|
+
if (!activeConversationID || !messageListOnEvent) return;
|
|
247
|
+
const unsub = messageListOnEvent((event) => {
|
|
248
|
+
if (event.type !== 'onReceiveNewMessage') return;
|
|
249
|
+
const { message } = event;
|
|
250
|
+
// 跳过自己发送的消息,或面板已打开时不计数
|
|
251
|
+
if (message.isSentBySelf || isPanelOpenRef.current) return;
|
|
252
|
+
setUnreadCount(prev => prev + 1);
|
|
253
|
+
});
|
|
254
|
+
return unsub;
|
|
255
|
+
}, [activeConversationID, messageListOnEvent]);
|
|
256
|
+
|
|
257
|
+
// 面板打开时清空未读计数
|
|
258
|
+
useEffect(() => {
|
|
259
|
+
if (isChatPanelOpen) {
|
|
260
|
+
setUnreadCount(0);
|
|
261
|
+
}
|
|
262
|
+
}, [isChatPanelOpen]);
|
|
263
|
+
|
|
264
|
+
return { unreadCount };
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## 方案二:使用底层 API 自定义集成
|
|
269
|
+
|
|
270
|
+
本节主要介绍如何通过 `MessageListStore`(消息列表管理)和 `MessageInputStore`(消息发送)来实现完全自定义的聊天界面。Vue 3 和 React 均通过 `useMessageListStore()` / `useMessageInputStore()` 使用。
|
|
271
|
+
|
|
272
|
+
#### 步骤1:数据初始化
|
|
273
|
+
|
|
274
|
+
与方案一步骤1相同,同样需要先调用 [setActiveConversation](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#setActiveConversation) 接口激活对应的 IM 群组会话。在退房时建议清空活跃会话,避免消息错发。
|
|
275
|
+
|
|
276
|
+
> **说明:**
|
|
277
|
+
>
|
|
278
|
+
> - `GROUP` 为固定前缀,`setActiveConversation` 参数必须为 ``GROUP${roomId}``,否则无法正常收发消息。
|
|
279
|
+
> - 在房间切换或退房时,建议重置或清空活跃会话,避免消息错发至错误会话。
|
|
280
|
+
|
|
281
|
+
【Vue3】
|
|
282
|
+
``` typescript
|
|
283
|
+
import { watch, onUnmounted } from 'vue';
|
|
284
|
+
import { useChatContext } from 'tuikit-atomicx-vue3/chat';
|
|
285
|
+
import { useLoginState, useRoomState } from 'tuikit-atomicx-vue3/room';
|
|
286
|
+
|
|
287
|
+
function useChatConversationSync() {
|
|
288
|
+
const { setActiveConversation } = useChatContext();
|
|
289
|
+
const { currentRoom } = useRoomState();
|
|
290
|
+
const { loginUserInfo } = useLoginState();
|
|
291
|
+
|
|
292
|
+
// roomId 或登录用户变化时绑定活跃会话
|
|
293
|
+
watch(
|
|
294
|
+
[() => currentRoom.value?.roomId, () => loginUserInfo.value?.userId],
|
|
295
|
+
([roomId, userId]) => {
|
|
296
|
+
if (!userId) return;
|
|
297
|
+
if (!roomId) {
|
|
298
|
+
// 退房时清空活跃会话
|
|
299
|
+
setActiveConversation('');
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
// 关键步骤:设置活跃会话 ID,格式为 "GROUP" + roomId
|
|
303
|
+
setActiveConversation(`GROUP${roomId}`);
|
|
304
|
+
},
|
|
305
|
+
{ immediate: true },
|
|
306
|
+
);
|
|
307
|
+
|
|
308
|
+
onUnmounted(() => {
|
|
309
|
+
setActiveConversation('');
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
【React】
|
|
315
|
+
``` typescript
|
|
316
|
+
import { useEffect } from 'react';
|
|
317
|
+
import { useChatContext } from 'tuikit-atomicx-react/chat';
|
|
318
|
+
import { useRoomState, useLoginState } from 'tuikit-atomicx-react/room';
|
|
319
|
+
|
|
320
|
+
function useChatConversationSync() {
|
|
321
|
+
const { setActiveConversation } = useChatContext();
|
|
322
|
+
const { currentRoom } = useRoomState();
|
|
323
|
+
const { loginUserInfo } = useLoginState();
|
|
324
|
+
|
|
325
|
+
useEffect(() => {
|
|
326
|
+
const roomId = currentRoom?.roomId;
|
|
327
|
+
if (!loginUserInfo?.userId) return;
|
|
328
|
+
if (!roomId) {
|
|
329
|
+
setActiveConversation('');
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
// 关键步骤:设置活跃会话 ID,格式为 "GROUP" + roomId
|
|
333
|
+
setActiveConversation(`GROUP${roomId}`);
|
|
334
|
+
}, [currentRoom?.roomId, loginUserInfo?.userId, setActiveConversation]);
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
#### 步骤2:获取消息列表
|
|
339
|
+
|
|
340
|
+
使用对应框架的 Hook 获取当前会话的消息列表状态与操作方法。`messageList` 是响应式数据,会自动更新新收到的消息。
|
|
341
|
+
|
|
342
|
+
【Vue3】
|
|
343
|
+
``` typescript
|
|
344
|
+
<template>
|
|
345
|
+
<div class="message-list-wrapper">
|
|
346
|
+
<div
|
|
347
|
+
v-for="msg in messageList"
|
|
348
|
+
:key="msg.msgID"
|
|
349
|
+
class="message-item"
|
|
350
|
+
>
|
|
351
|
+
{{ msg.messagePayload?.text }}
|
|
352
|
+
</div>
|
|
353
|
+
</div>
|
|
354
|
+
</template>
|
|
355
|
+
|
|
356
|
+
<script setup lang="ts">
|
|
357
|
+
import { onUnmounted } from 'vue';
|
|
358
|
+
import { useMessageListStore } from 'tuikit-atomicx-vue3/chat';
|
|
359
|
+
|
|
360
|
+
// conversationID = "GROUP" + roomId
|
|
361
|
+
const conversationID = `GROUP${roomId}`;
|
|
362
|
+
|
|
363
|
+
const {
|
|
364
|
+
messageList,
|
|
365
|
+
hasOlderMessages,
|
|
366
|
+
hasNewerMessages,
|
|
367
|
+
pinnedMessageList,
|
|
368
|
+
loadMessages,
|
|
369
|
+
loadOlderMessages,
|
|
370
|
+
loadNewerMessages,
|
|
371
|
+
onEvent,
|
|
372
|
+
} = useMessageListStore(conversationID);
|
|
373
|
+
|
|
374
|
+
loadMessages();
|
|
375
|
+
|
|
376
|
+
const unsub = onEvent((event) => {
|
|
377
|
+
if (event.type === 'onReceiveNewMessage') {
|
|
378
|
+
// 触发滚动到底部或未读角标更新
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
onUnmounted(unsub);
|
|
383
|
+
</script>
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
【React】
|
|
387
|
+
``` typescript
|
|
388
|
+
import { useEffect } from 'react';
|
|
389
|
+
import { useMessageListStore } from 'tuikit-atomicx-react/chat';
|
|
390
|
+
|
|
391
|
+
function MessageListPanel({ roomId }: { roomId: string }) {
|
|
392
|
+
const conversationID = `GROUP${roomId}`;
|
|
393
|
+
|
|
394
|
+
const {
|
|
395
|
+
messageList,
|
|
396
|
+
hasOlderMessages,
|
|
397
|
+
hasNewerMessages,
|
|
398
|
+
pinnedMessageList,
|
|
399
|
+
loadMessages,
|
|
400
|
+
loadOlderMessages,
|
|
401
|
+
loadNewerMessages,
|
|
402
|
+
onEvent,
|
|
403
|
+
} = useMessageListStore(conversationID);
|
|
404
|
+
|
|
405
|
+
useEffect(() => {
|
|
406
|
+
loadMessages();
|
|
407
|
+
}, [conversationID]);
|
|
408
|
+
|
|
409
|
+
useEffect(() => {
|
|
410
|
+
return onEvent((event) => {
|
|
411
|
+
if (event.type === 'onReceiveNewMessage') {
|
|
412
|
+
// 触发滚动到底部或未读角标更新
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
}, [conversationID]);
|
|
416
|
+
|
|
417
|
+
return (
|
|
418
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '8px', padding: '8px' }}>
|
|
419
|
+
{messageList.map(msg => (
|
|
420
|
+
<div key={msg.msgID} style={{ padding: '4px 8px', borderRadius: '4px' }}>
|
|
421
|
+
{msg.messagePayload?.text}
|
|
422
|
+
</div>
|
|
423
|
+
))}
|
|
424
|
+
</div>
|
|
425
|
+
);
|
|
426
|
+
}
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
#### 步骤3:发送消息
|
|
430
|
+
|
|
431
|
+
使用对应框架的 Hook 管理输入框内容并发送消息。两者底层均调用相同的 `MessageInputStore.sendMessage(payload)`。
|
|
432
|
+
|
|
433
|
+
> **注意:**
|
|
434
|
+
>
|
|
435
|
+
|
|
436
|
+
> `MessageInputStore` 是纯命令式 Store,不持有输入框内容状态。需由业务层自行管理输入内容,发送时将内容通过 `sendMessage({ type: 'textMessage', text })` 传入。
|
|
437
|
+
>
|
|
438
|
+
|
|
439
|
+
【Vue3】
|
|
440
|
+
``` typescript
|
|
441
|
+
<template>
|
|
442
|
+
<input
|
|
443
|
+
:value="inputText"
|
|
444
|
+
@input="(e) => inputText = (e.target as HTMLInputElement).value"
|
|
445
|
+
@keyup.enter="handleSend"
|
|
446
|
+
/>
|
|
447
|
+
</template>
|
|
448
|
+
|
|
449
|
+
<script setup lang="ts">
|
|
450
|
+
import { ref } from 'vue';
|
|
451
|
+
import { useMessageInputStore } from 'tuikit-atomicx-vue3/chat';
|
|
452
|
+
|
|
453
|
+
// conversationID = "GROUP" + roomId
|
|
454
|
+
const conversationID = `GROUP${roomId}`;
|
|
455
|
+
const { sendMessage } = useMessageInputStore(conversationID);
|
|
456
|
+
|
|
457
|
+
// 输入框内容由业务层自行管理,Store 不持有输入状态
|
|
458
|
+
const inputText = ref('');
|
|
459
|
+
|
|
460
|
+
const handleSend = async () => {
|
|
461
|
+
if (!inputText.value.trim()) return;
|
|
462
|
+
try {
|
|
463
|
+
await sendMessage({ type: 'textMessage', text: inputText.value });
|
|
464
|
+
inputText.value = '';
|
|
465
|
+
} catch (error) {
|
|
466
|
+
console.error('发送失败', error);
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
</script>
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
【React】
|
|
473
|
+
``` typescript
|
|
474
|
+
import { useState } from 'react';
|
|
475
|
+
import { useMessageInputStore } from 'tuikit-atomicx-react/chat';
|
|
476
|
+
|
|
477
|
+
function MessageInputPanel({ roomId }: { roomId: string }) {
|
|
478
|
+
const conversationID = `GROUP${roomId}`;
|
|
479
|
+
const { sendMessage } = useMessageInputStore(conversationID);
|
|
480
|
+
|
|
481
|
+
// 输入框内容由 React state 管理,Store 不持有输入状态
|
|
482
|
+
const [inputText, setInputText] = useState('');
|
|
483
|
+
|
|
484
|
+
const handleSend = async () => {
|
|
485
|
+
if (!inputText.trim()) return;
|
|
486
|
+
try {
|
|
487
|
+
await sendMessage({ type: 'textMessage', text: inputText });
|
|
488
|
+
setInputText('');
|
|
489
|
+
} catch (error) {
|
|
490
|
+
console.error('发送失败', error);
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
return (
|
|
495
|
+
<input
|
|
496
|
+
value={inputText}
|
|
497
|
+
onChange={(e) => setInputText(e.target.value)}
|
|
498
|
+
onKeyDown={(e) => e.key === 'Enter' && handleSend()}
|
|
499
|
+
/>
|
|
500
|
+
);
|
|
501
|
+
}
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
#### 步骤4:加载历史消息
|
|
505
|
+
|
|
506
|
+
分页拉取历史消息,通常在滚动到列表顶部时触发。Vue 3 和 React 均使用 `loadOlderMessages()`(底层均对应 `MessageListStore.loadOlderMessages()`)。
|
|
507
|
+
|
|
508
|
+
> **注意:**
|
|
509
|
+
>
|
|
510
|
+
|
|
511
|
+
> 在加载历史消息后,通常需要手动调整滚动条位置,以保持当前浏览视角不发生跳变。
|
|
512
|
+
>
|
|
513
|
+
|
|
514
|
+
【Vue3】
|
|
515
|
+
``` typescript
|
|
516
|
+
import { nextTick, ref } from 'vue';
|
|
517
|
+
import { useMessageListStore } from 'tuikit-atomicx-vue3/chat';
|
|
518
|
+
|
|
519
|
+
const conversationID = `GROUP${roomId}`;
|
|
520
|
+
const { hasOlderMessages, loadOlderMessages } = useMessageListStore(conversationID);
|
|
521
|
+
|
|
522
|
+
const scrollContainerRef = ref<HTMLElement | null>(null);
|
|
523
|
+
|
|
524
|
+
const loadHistory = async () => {
|
|
525
|
+
if (!hasOlderMessages.value) return;
|
|
526
|
+
const container = scrollContainerRef.value;
|
|
527
|
+
// 记录加载前的滚动高度
|
|
528
|
+
const previousHeight = container?.scrollHeight ?? 0;
|
|
529
|
+
|
|
530
|
+
await loadOlderMessages();
|
|
531
|
+
|
|
532
|
+
// DOM 更新后恢复滚动位置,防止视图跳动
|
|
533
|
+
nextTick(() => {
|
|
534
|
+
if (container) {
|
|
535
|
+
container.scrollTop += container.scrollHeight - previousHeight;
|
|
536
|
+
}
|
|
537
|
+
});
|
|
538
|
+
};
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
【React】
|
|
542
|
+
``` typescript
|
|
543
|
+
import { useRef } from 'react';
|
|
544
|
+
import { useMessageListStore } from 'tuikit-atomicx-react/chat';
|
|
545
|
+
|
|
546
|
+
const { hasOlderMessages, loadOlderMessages } = useMessageListStore(conversationID);
|
|
547
|
+
const scrollContainerRef = useRef<HTMLDivElement>(null);
|
|
548
|
+
|
|
549
|
+
const loadHistory = async () => {
|
|
550
|
+
if (!hasOlderMessages) return;
|
|
551
|
+
const container = scrollContainerRef.current;
|
|
552
|
+
// 记录加载前的滚动高度
|
|
553
|
+
const previousHeight = container?.scrollHeight ?? 0;
|
|
554
|
+
|
|
555
|
+
await loadOlderMessages();
|
|
556
|
+
|
|
557
|
+
// React 重新渲染后,恢复滚动位置防止视图跳动
|
|
558
|
+
requestAnimationFrame(() => {
|
|
559
|
+
if (container) {
|
|
560
|
+
container.scrollTop += container.scrollHeight - previousHeight;
|
|
561
|
+
}
|
|
562
|
+
});
|
|
563
|
+
};
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
#### 步骤5:高级功能(已读回执)
|
|
567
|
+
|
|
568
|
+
如果您需要已读回执功能,可以在消息可见时调用 `sendMessageReadReceipts` 上报已读状态(底层对应 `MessageListStore.sendMessageReadReceipts()`)。通常在消息进入视口(Intersection Observer)时触发。
|
|
569
|
+
|
|
570
|
+
【Vue3】
|
|
571
|
+
``` typescript
|
|
572
|
+
import { useMessageListStore } from 'tuikit-atomicx-vue3/chat';
|
|
573
|
+
import type { MessageInfo } from 'tuikit-atomicx-vue3/chat';
|
|
574
|
+
|
|
575
|
+
const conversationID = `GROUP${roomId}`;
|
|
576
|
+
const { sendMessageReadReceipts } = useMessageListStore(conversationID);
|
|
577
|
+
|
|
578
|
+
// 示例:消息进入视口时上报已读
|
|
579
|
+
const markAsRead = async (visibleMessages: MessageInfo[]) => {
|
|
580
|
+
const unread = visibleMessages.filter(
|
|
581
|
+
(msg) => !msg.isSentBySelf && msg.needReadReceipt,
|
|
582
|
+
);
|
|
583
|
+
if (unread.length > 0) {
|
|
584
|
+
await sendMessageReadReceipts(unread);
|
|
585
|
+
}
|
|
586
|
+
};
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
【React】
|
|
590
|
+
``` typescript
|
|
591
|
+
import { useMessageListStore } from 'tuikit-atomicx-react/chat';
|
|
592
|
+
import type { MessageInfo } from 'tuikit-atomicx-react/chat';
|
|
593
|
+
|
|
594
|
+
const { messageList, sendMessageReadReceipts } = useMessageListStore(conversationID);
|
|
595
|
+
|
|
596
|
+
// 示例:消息进入视口时标记为已读
|
|
597
|
+
const markAsRead = async (visibleMessages: MessageInfo[]) => {
|
|
598
|
+
const unread = visibleMessages.filter(
|
|
599
|
+
(msg) => !msg.isSentBySelf && msg.needReadReceipt,
|
|
600
|
+
);
|
|
601
|
+
if (unread.length > 0) {
|
|
602
|
+
await sendMessageReadReceipts(unread);
|
|
603
|
+
}
|
|
604
|
+
};
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
## 开发注意事项
|
|
608
|
+
- **禁言状态同步**
|
|
609
|
+
|
|
610
|
+
`localParticipant.isMessageDisabled` 是由房间管理员控制的。当管理员开启“全员禁言”或单独禁言某用户时,该属性会自动更新。请务必将此属性绑定到输入框的 `disabled` 状态上,以在前端层面限制用户发言。
|
|
611
|
+
|
|
612
|
+
- **会话切换时机**
|
|
613
|
+
|
|
614
|
+
确保 `setActiveConversation` 在进房成功后且 `roomId` 有值时调用。如果在进房前调用,可能会因为 SDK 尚未初始化完毕或未登录而失败。
|
|
615
|
+
|
|
616
|
+
- **容器布局要求(重要)**
|
|
617
|
+
|
|
618
|
+
消息列表组件内部处理了滚动逻辑,因此**父容器必须有固定的高度**(例如 `height: 100%` 或具体像素值)并设置 `overflow: hidden`,否则会导致列表无限拉长、无法滚动。
|
|
619
|
+
|
|
620
|
+
- **消息类型处理**
|
|
621
|
+
|
|
622
|
+
`messageList` 中包含多种类型的消息(文本、图片、文件等),自定义渲染时需根据 `msg.type` 进行区分处理。
|
|
623
|
+
|
|
624
|
+
- **输入状态管理**
|
|
625
|
+
|
|
626
|
+
Vue 3 和 React 均使用 `sendMessage({ type: 'textMessage', text })` 发送消息,Store 均不持有输入框内容状态。Vue 3 用 `ref` 维护输入内容,React 用 `useState`。发送成功后手动清空对应的状态变量即可。
|
|
627
|
+
|
|
628
|
+
- **历史消息滚动维持**
|
|
629
|
+
|
|
630
|
+
在自定义开发中,调用 `loadOlderMessages()` 后 DOM 高度会增加。为了防止视图跳动,需要在加载前记录 `scrollHeight`,加载后(Vue 3 使用 `nextTick`,React 使用 `requestAnimationFrame`)计算高度差并调整 `scrollTop`。
|
|
631
|
+
|
|
632
|
+
- **新消息滚动策略**
|
|
633
|
+
|
|
634
|
+
建议实现“智能滚动”逻辑:当用户位于列表底部时,收到新消息自动滚动到底部;当用户正在浏览历史消息时,保持当前位置不动,并显示“有新消息”的提示气泡。
|
|
635
|
+
|
|
636
|
+
- **会话 ID 格式要求**
|
|
637
|
+
|
|
638
|
+
调用 `setActiveConversation` 时,必须使用 ``GROUP${roomId}`` 格式(GROUP 为固定前缀)。这是 IM SDK 群组会话的标准格式,不可自定义或省略前缀,否则无法正常收发消息。
|
|
639
|
+
|
|
640
|
+
## 常见问题
|
|
641
|
+
|
|
642
|
+
**切到群组会话失败或消息列表无内容?**
|
|
643
|
+
|
|
644
|
+
确保已登录并进房成功后再调用 `setActiveConversation('GROUP' + roomId)`;未登录或 roomId 为空会导致失败。
|
|
645
|
+
|
|
646
|
+
**消息收不到或列表空白?**
|
|
647
|
+
|
|
648
|
+
检查当前活跃会话是否正确(`GROUP` 前缀 + roomId),以及网络/鉴权是否正常;必要时重新设置活跃会话 `setActiveConversation` 刷新。
|
|
649
|
+
|
|
650
|
+
**未读计数不清零?**
|
|
651
|
+
|
|
652
|
+
需要手动维护未读计数逻辑。打开聊天窗口时,或收到新消息但窗口关闭时进行计数更新。
|
|
653
|
+
|
|
654
|
+
**被禁言仍能点击发送?**
|
|
655
|
+
|
|
656
|
+
请确保前端 UI 根据 `isMessageDisabled` 状态禁用了发送按钮和输入框。虽然服务端也会拦截,但前端禁用体验更好。
|
|
657
|
+
|
|
658
|
+
**自定义头像/昵称展示?**
|
|
659
|
+
|
|
660
|
+
可通过给 `MessageList` 传入自定义 `Message` prop(React 组件),优先显示房间内的 `nameCard`,并自定义头像样式等。
|
|
661
|
+
|
|
662
|
+
**自定义方案如何发送图片或文件?**
|
|
663
|
+
|
|
664
|
+
底层 `sendMessage` 接受 `SendMessagePayload` 可辨识联合类型,Vue 3 和 React 均适用。根据 `type` 字段区分消息类型,图片对应 `imageMessage`,文件对应 `fileMessage`,视频对应 `videoMessage`。
|
|
665
|
+
|
|
666
|
+
【Vue3】
|
|
667
|
+
``` typescript
|
|
668
|
+
import { useMessageInputStore } from 'tuikit-atomicx-vue3/chat';
|
|
669
|
+
|
|
670
|
+
const { sendMessage } = useMessageInputStore(`GROUP${roomId}`);
|
|
671
|
+
|
|
672
|
+
// 示例:发送图片
|
|
673
|
+
// const file = ...; // 从 input type="file" 获取的 File 对象
|
|
674
|
+
await sendMessage({ type: 'imageMessage', file });
|
|
675
|
+
|
|
676
|
+
// 示例:发送文件
|
|
677
|
+
await sendMessage({ type: 'fileMessage', file });
|
|
678
|
+
|
|
679
|
+
// 示例:发送文本
|
|
680
|
+
await sendMessage({ type: 'textMessage', text: 'Hello World' });
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
【React】
|
|
684
|
+
``` typescript
|
|
685
|
+
import { useMessageInputStore } from 'tuikit-atomicx-react/chat';
|
|
686
|
+
|
|
687
|
+
const { sendMessage } = useMessageInputStore(conversationID);
|
|
688
|
+
|
|
689
|
+
// 示例:发送图片
|
|
690
|
+
// const file = ...; // 从 <input type="file" /> 获取的 File 对象
|
|
691
|
+
await sendMessage({ type: 'imageMessage', file });
|
|
692
|
+
|
|
693
|
+
// 示例:发送文件
|
|
694
|
+
await sendMessage({ type: 'fileMessage', file });
|
|
695
|
+
|
|
696
|
+
// 示例:发送文本消息
|
|
697
|
+
await sendMessage({ type: 'textMessage', text: 'Hello World' });
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
**如何修改 UI 组件的默认样式?**
|
|
701
|
+
|
|
702
|
+
TUIKit 组件的类名通常保持稳定。**Vue 3:**使用 `:deep()` 深度选择器穿透 scoped 样式,例如 `.message-list :deep(.tui-message-bubble) { background-color: #f0f0f0; }`。**React:**通过给组件传入 `className` 并结合后代选择器,或在全局样式文件中用 `:global(.tui-message-bubble) { ... }` 覆盖。
|
|
703
|
+
|
|
704
|
+
## API 文档
|
|
705
|
+
|
|
706
|
+
|**State**|**功能描述**|**API 文档**|
|
|
707
|
+
|---------|---------|---------|
|
|
708
|
+
|**useRoomState**|房间状态管理(创建、加入、预约等)|[API 文档](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#module-RoomState)|
|
|
709
|
+
|**useRoomParticipantState**|房间参与者管理(成员列表、权限控制)|[API 文档](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.html#module-RoomParticipantState)|
|