@tencent-rtc/mcp 1.4.6 → 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/cursor-setting.png +0 -0
- package/knowledge/bm25-cache.js +74 -0
- package/knowledge/bm25-cache.js.map +1 -0
- package/knowledge/bm25.js +148 -0
- package/knowledge/bm25.js.map +1 -0
- package/knowledge/build-index.js +70 -0
- package/knowledge/build-index.js.map +1 -0
- package/knowledge/chunker.js +168 -0
- package/knowledge/chunker.js.map +1 -0
- package/knowledge/content-loader.js +40 -0
- package/knowledge/content-loader.js.map +1 -0
- package/knowledge/doc-url-resolver.js +143 -0
- package/knowledge/doc-url-resolver.js.map +1 -0
- package/knowledge/extractors.js +26 -0
- package/knowledge/extractors.js.map +1 -0
- package/knowledge/path-meta.js +185 -0
- package/knowledge/path-meta.js.map +1 -0
- package/knowledge/search/exact-lookup.js +498 -0
- package/knowledge/search/exact-lookup.js.map +1 -0
- package/knowledge/search/filter-pool.js +105 -0
- package/knowledge/search/filter-pool.js.map +1 -0
- package/knowledge/search/product-scope-intent.js +41 -0
- package/knowledge/search/product-scope-intent.js.map +1 -0
- package/knowledge/search/requires-framework.js +82 -0
- package/knowledge/search/requires-framework.js.map +1 -0
- package/knowledge/search/search-knowledge.js +230 -0
- package/knowledge/search/search-knowledge.js.map +1 -0
- package/mcp-server-prompt.png +0 -0
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +10 -0
- package/resource/_schema/goal-tags.yaml +72 -0
- package/resource/_schema/products.yaml +19 -0
- package/resource/_schema/trtc-intents.yaml +27 -0
- package/resource/_schema/types.yaml +43 -0
- package/resource/index/component-slugs.json +1 -0
- package/resource/index/doc-source-urls.json +1 -0
- package/resource/index/manifest.json +1 -0
- package/resource/{doc → integration}/callkit/preset/android/integration.md +34 -28
- package/resource/integration/callkit/preset/flutter/integration.md +346 -0
- package/resource/integration/callkit/preset/ios/integration.md +408 -0
- package/resource/integration/callkit/preset/react/integration.md +362 -0
- package/resource/integration/callkit/preset/vue/integration.md +356 -0
- package/resource/integration/chat/preset/android/integration.md +500 -0
- package/resource/integration/chat/preset/flutter/integration.md +370 -0
- package/resource/integration/chat/preset/ios/integration.md +566 -0
- package/resource/integration/chat/preset/react/integration.md +490 -0
- package/resource/integration/chat/preset/vue/integration.md +504 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +26 -22
- package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +22 -18
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +309 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +47 -39
- package/resource/integration/roomkit/preset/vue/integration.md +562 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +828 -0
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +897 -0
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +363 -0
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1111 -0
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1132 -0
- package/resource/{doc → knowledge}/callkit/core-sdk/flutter/offline-push.md +174 -151
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1084 -0
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1252 -0
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +534 -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 +92 -0
- package/resource/{doc/callkit/faq/android-faq.md → knowledge/callkit/faq/common.md} +11 -12
- package/resource/knowledge/callkit/faq/error-code.md +67 -0
- package/resource/knowledge/callkit/faq/flutter.md +52 -0
- package/resource/knowledge/callkit/faq/ios.md +104 -0
- package/resource/knowledge/callkit/faq/web.md +74 -0
- package/resource/knowledge/callkit/preset/android/api.md +412 -0
- package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
- package/resource/knowledge/callkit/preset/ios/api.md +234 -0
- package/resource/knowledge/callkit/preset/web/api.md +83 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +74 -0
- package/resource/knowledge/chat/preset/android/features/contact-list.md +43 -0
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +117 -0
- package/resource/knowledge/chat/preset/android/features/language.md +136 -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/knowledge/chat/preset/android/features/theme.md +222 -0
- package/resource/knowledge/chat/preset/android-view/integration.md +300 -0
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +64 -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 +158 -0
- package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
- package/resource/knowledge/chat/preset/flutter/features/theme.md +261 -0
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +94 -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 +125 -0
- package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
- package/resource/knowledge/chat/preset/ios/features/message-list.md +162 -0
- package/resource/knowledge/chat/preset/ios/features/search.md +93 -0
- package/resource/knowledge/chat/preset/ios/features/theme.md +270 -0
- package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +160 -158
- package/resource/knowledge/chat/preset/react/features/chat-setting.md +101 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +43 -41
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +215 -0
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +339 -0
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +101 -0
- package/resource/knowledge/chat/preset/react/features/conversation-search.md +61 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +117 -156
- package/resource/knowledge/chat/preset/react/features/message-list.md +297 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/search.md +65 -59
- package/resource/knowledge/chat/preset/react/features/theme.md +93 -0
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/chat-setting.md +79 -0
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +277 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +234 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +216 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +13 -13
- package/resource/knowledge/chat/preset/vue/features/message-input.md +551 -0
- package/resource/knowledge/chat/preset/vue/features/message-list.md +350 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +79 -73
- package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
- package/resource/knowledge/chat/urls/error-code.md +17 -0
- package/resource/knowledge/chat/urls/product.md +43 -0
- package/resource/knowledge/chat/urls/restapi.md +204 -0
- package/resource/knowledge/chat/urls/sdk/android.md +80 -0
- package/resource/knowledge/chat/urls/sdk/flutter.md +71 -0
- package/resource/knowledge/chat/urls/sdk/ios.md +80 -0
- package/resource/knowledge/chat/urls/sdk/web.md +80 -0
- package/resource/knowledge/chat/urls/webhook.md +68 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +286 -0
- 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/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +55 -0
- 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/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +51 -0
- 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 +488 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +219 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +282 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +153 -0
- 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 +426 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +52 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +150 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +438 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +190 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +291 -0
- 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/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +51 -0
- 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 +487 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +183 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +736 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +17 -15
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +102 -89
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +45 -43
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +23 -20
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +41 -41
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +70 -69
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +68 -71
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +43 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +59 -56
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +103 -105
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-host-interaction.md +869 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +84 -87
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +43 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +15 -14
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +40 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +94 -81
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +45 -42
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-room-list.md +23 -20
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +260 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +598 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-barrage.md +490 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +65 -59
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +424 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +69 -76
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-room-list.md +726 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +49 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-room-list.md +19 -18
- package/resource/knowledge/livekit/faq/error-code.md +193 -0
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/barrage.md +56 -53
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-audience-list.md +22 -21
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-view.md +34 -32
- package/resource/knowledge/push/config/android.md +92 -0
- package/resource/knowledge/push/config/harmonyos.md +83 -0
- package/resource/knowledge/push/config/ios.md +254 -0
- package/resource/knowledge/push/config/react-native.md +254 -0
- package/resource/knowledge/push/config/unity.md +209 -0
- package/resource/knowledge/push/config/unreal-engine.md +194 -0
- package/resource/knowledge/push/integration/android.md +404 -0
- package/resource/knowledge/push/integration/flutter.md +465 -0
- package/resource/knowledge/push/integration/harmonyos.md +63 -0
- package/resource/knowledge/push/integration/ios.md +246 -0
- package/resource/knowledge/push/integration/react-native.md +366 -0
- package/resource/knowledge/push/integration/uni-app.md +208 -0
- package/resource/knowledge/push/integration/unity.md +389 -0
- package/resource/knowledge/push/integration/unreal-engine.md +390 -0
- package/resource/knowledge/push/overview/prepare.md +60 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +241 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +588 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +364 -0
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +340 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +797 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +233 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +569 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +322 -0
- package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +221 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +49 -48
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +461 -0
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +216 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +370 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-participant-state.md +61 -60
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +280 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-view.md +57 -56
- package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +319 -0
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +267 -0
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +261 -0
- package/resource/knowledge/roomkit/preset/android/integration.md +396 -0
- package/resource/knowledge/roomkit/preset/flutter/integration.md +404 -0
- package/resource/knowledge/roomkit/preset/ios/integration.md +369 -0
- package/resource/knowledge/roomkit/preset/react/integration.md +576 -0
- package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +44 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +8 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +19 -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 +8 -8
- 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 +6 -6
- package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +3 -3
- package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +18 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +2 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
- package/resource/knowledge/trtc/android/TRTCCloud.md +1915 -0
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +1029 -0
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +1095 -0
- package/resource/knowledge/trtc/android/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
- package/resource/knowledge/trtc/android/TXDeviceManager.md +169 -0
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +125 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +2069 -0
- package/resource/knowledge/trtc/c++/ITRTCStatistics.md +73 -0
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +391 -0
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1191 -0
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +931 -0
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +127 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +2118 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDef.md +975 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1131 -0
- package/resource/knowledge/trtc/ios/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +423 -0
- package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +387 -0
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +127 -0
- package/server.js +35 -10
- package/server.js.map +1 -1
- package/tools/call/get_native_call_uikit_integration.js +2 -3
- package/tools/call/get_native_call_uikit_integration.js.map +1 -1
- package/tools/call/get_native_callkit_core_integration.js +2 -5
- package/tools/call/get_native_callkit_core_integration.js.map +1 -1
- package/tools/call/get_web_call_uikit_integration.js +2 -3
- package/tools/call/get_web_call_uikit_integration.js.map +1 -1
- package/tools/chat/get_native_chat_uikit_integration.js +2 -3
- package/tools/chat/get_native_chat_uikit_integration.js.map +1 -1
- package/tools/chat/get_web_chat_uikit_integration.js +2 -3
- package/tools/chat/get_web_chat_uikit_integration.js.map +1 -1
- package/tools/common/present_framework_choice.js +19 -13
- package/tools/common/present_framework_choice.js.map +1 -1
- package/tools/common/record_answer.js +19 -25
- package/tools/common/record_answer.js.map +1 -1
- package/tools/common/record_feedback.js +17 -30
- package/tools/common/record_feedback.js.map +1 -1
- package/tools/common/search_trtc_knowledge.js +45 -0
- package/tools/common/search_trtc_knowledge.js.map +1 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js +3 -1
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_callkit_core_integration_def.js +5 -3
- package/tools/definitions/get_native_callkit_core_integration_def.js.map +1 -1
- package/tools/definitions/get_native_chat_uikit_integration_def.js +5 -2
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_livekit_core_integration_def.js +6 -5
- package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js +4 -2
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -0
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +5 -5
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_room_core_integration_def.js +50 -0
- package/tools/definitions/get_web_room_core_integration_def.js.map +1 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +5 -4
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
- package/tools/definitions/integration-boundary.js +6 -0
- package/tools/definitions/integration-boundary.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +12 -10
- package/tools/definitions/present_framework_choice_def.js.map +1 -1
- package/tools/definitions/record_answer_def.js +19 -17
- package/tools/definitions/record_answer_def.js.map +1 -1
- package/tools/definitions/record_feedback_def.js +14 -13
- package/tools/definitions/record_feedback_def.js.map +1 -1
- package/tools/definitions/search_trtc_knowledge_def.js +40 -0
- package/tools/definitions/search_trtc_knowledge_def.js.map +1 -0
- package/tools/index.js +5 -36
- package/tools/index.js.map +1 -1
- package/tools/live/get_native_livekit_core_integration.js +1 -3
- package/tools/live/get_native_livekit_core_integration.js.map +1 -1
- package/tools/live/get_web_live_uikit_integration.js +2 -4
- package/tools/live/get_web_live_uikit_integration.js.map +1 -1
- package/tools/room/get_web_room_core_integration.js +48 -0
- package/tools/room/get_web_room_core_integration.js.map +1 -0
- package/tools/room/get_web_room_uikit_integration.js +2 -3
- package/tools/room/get_web_room_uikit_integration.js.map +1 -1
- package/utils/generate-structured-result.js +24 -30
- package/utils/generate-structured-result.js.map +1 -1
- package/utils/get-doc-content.js +14 -8
- package/utils/get-doc-content.js.map +1 -1
- package/utils/report-cls-client.js +18 -20
- package/utils/report-cls-client.js.map +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
- package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -852
- package/resource/doc/callkit/core-sdk/android/make-call.md +0 -954
- package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -361
- package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1160
- package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1205
- package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1090
- package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1248
- package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -485
- package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -950
- package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1052
- package/resource/doc/callkit/faq/common/error-code.md +0 -47
- package/resource/doc/callkit/faq/flutter-faq.md +0 -115
- package/resource/doc/callkit/faq/ios-faq.md +0 -115
- package/resource/doc/callkit/faq/web-faq.md +0 -36
- package/resource/doc/callkit/preset/android/api.md +0 -296
- package/resource/doc/callkit/preset/flutter/api.md +0 -410
- package/resource/doc/callkit/preset/flutter/integration.md +0 -164
- package/resource/doc/callkit/preset/ios/api.md +0 -80
- package/resource/doc/callkit/preset/ios/integration.md +0 -187
- package/resource/doc/callkit/preset/react/api.md +0 -501
- package/resource/doc/callkit/preset/react/integration.md +0 -86
- package/resource/doc/callkit/preset/vue/api.md +0 -501
- package/resource/doc/callkit/preset/vue/integration.md +0 -83
- package/resource/doc/chatkit/android/faq.md +0 -111
- package/resource/doc/chatkit/android/features/theme.md +0 -219
- package/resource/doc/chatkit/android/integration.md +0 -490
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -281
- package/resource/doc/chatkit/faq/common/product.md +0 -7
- package/resource/doc/chatkit/faq/common/server.md +0 -44
- package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -199
- package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -53
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -235
- package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
- package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -287
- package/resource/doc/chatkit/flutter/faq.md +0 -23
- package/resource/doc/chatkit/flutter/features/theme.md +0 -235
- package/resource/doc/chatkit/flutter/integration.md +0 -344
- package/resource/doc/chatkit/ios/faq.md +0 -111
- package/resource/doc/chatkit/ios/features/theme.md +0 -267
- 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 -57
- package/resource/doc/chatkit/react/components/chat.md +0 -38
- package/resource/doc/chatkit/react/components/component-list.md +0 -37
- package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
- package/resource/doc/chatkit/react/components/conversation-list.md +0 -333
- package/resource/doc/chatkit/react/components/conversation-preview.md +0 -118
- package/resource/doc/chatkit/react/components/conversation-search.md +0 -60
- package/resource/doc/chatkit/react/components/message-list.md +0 -293
- package/resource/doc/chatkit/react/components/tuikit.md +0 -34
- package/resource/doc/chatkit/react/faq.md +0 -26
- package/resource/doc/chatkit/react/integration.md +0 -416
- package/resource/doc/chatkit/vue/components/avatar.md +0 -104
- package/resource/doc/chatkit/vue/components/chat-header.md +0 -148
- package/resource/doc/chatkit/vue/components/chat-setting.md +0 -62
- package/resource/doc/chatkit/vue/components/chat.md +0 -45
- package/resource/doc/chatkit/vue/components/component-list.md +0 -87
- package/resource/doc/chatkit/vue/components/contact-list.md +0 -271
- package/resource/doc/chatkit/vue/components/conversation-actions.md +0 -228
- package/resource/doc/chatkit/vue/components/conversation-list.md +0 -320
- package/resource/doc/chatkit/vue/components/conversation-preview.md +0 -213
- package/resource/doc/chatkit/vue/components/message-input.md +0 -1054
- package/resource/doc/chatkit/vue/components/message-list.md +0 -433
- package/resource/doc/chatkit/vue/components/tuikit.md +0 -31
- package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
- package/resource/doc/chatkit/vue/faq.md +0 -36
- package/resource/doc/chatkit/vue/integration.md +0 -428
- package/resource/doc/livekit/core-sdk/live/flutter/live-host-interaction.md +0 -866
- package/resource/doc/livekit/faq/common/error-code.md +0 -88
- package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
- package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -91
- package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -112
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -215
- package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +0 -300
- package/resource/doc/roomkit/faq/common/error-code.md +0 -67
- package/resource/doc/roomkit/vue/features/call-user-to-room.md +0 -220
- package/resource/doc/roomkit/vue/features/device-state.md +0 -460
- package/resource/doc/roomkit/vue/features/free-beauty-panel.md +0 -215
- package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
- package/resource/doc/roomkit/vue/features/room-state.md +0 -282
- package/resource/doc/roomkit/vue/features/schedule-room.md +0 -318
- package/resource/doc/roomkit/vue/features/screen-share.md +0 -265
- package/resource/doc/roomkit/vue/features/virtual-background.md +0 -271
- package/resource/doc/roomkit/vue/integration.md +0 -315
- package/resource/doc/rtcengine/faq/common/error_code.md +0 -1
- package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +0 -59
- package/resource/doc/trtc/C++/ITRTCCloud.md +0 -1970
- package/resource/doc/trtc/C++/ITRTCStatistics.md +0 -70
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -387
- package/resource/doc/trtc/C++/TRTCCloudCallback.md +0 -1082
- package/resource/doc/trtc/C++/TRTCTypeDef.md +0 -925
- package/resource/doc/trtc/C++/TXLiteAVCode.md +0 -129
- package/resource/doc/trtc/android/TRTCCloud.md +0 -1815
- package/resource/doc/trtc/android/TRTCCloudDef.md +0 -992
- package/resource/doc/trtc/android/TRTCCloudListener.md +0 -1004
- package/resource/doc/trtc/android/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/android/TXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/android/TXBeautyManager.md +0 -402
- package/resource/doc/trtc/android/TXDeviceManager.md +0 -173
- package/resource/doc/trtc/android/TXLiteAVCode.md +0 -127
- package/resource/doc/trtc/iOS/TRTCCloud.md +0 -2028
- package/resource/doc/trtc/iOS/TRTCCloudDef.md +0 -958
- package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +0 -1046
- package/resource/doc/trtc/iOS/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/iOS/TXAudioEffectManager.md +0 -397
- package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -403
- package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -381
- package/resource/doc/trtc/iOS/TXLiteAVCode.md +0 -130
- package/tools/call/get_callkit_api.js +0 -33
- package/tools/call/get_callkit_api.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_web_chat_uikit_component_detail.js +0 -35
- package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
- package/tools/common/get_faq.js +0 -266
- package/tools/common/get_faq.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 -29
- package/tools/definitions/get_callkit_api_def.js.map +0 -1
- package/tools/definitions/get_faq_def.js +0 -49
- package/tools/definitions/get_faq_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_livekit_core_features_def.js +0 -34
- package/tools/definitions/get_native_livekit_core_features_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_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_livekit_api_def.js +0 -30
- package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_component_detail_def.js +0 -32
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -31
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_plugin_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/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_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_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 -120
- package/utils/build-session-directives.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/report-runtime-error-cls-client.js +0 -91
- package/utils/report-runtime-error-cls-client.js.map +0 -1
- /package/resource/{doc/livekit/preset/live/vue/faq.md → knowledge/push/config/donut.md} +0 -0
- /package/resource/{doc/roomkit/vue/faq.md → knowledge/push/integration/donut.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/30-advanced-cross-room-link.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/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
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
The in-room calling feature allows a user inside a meeting (the inviter) to send a real-time join invitation to other users outside the room (the invitees). This feature is implemented based on `Atomicx State Hooks` and helps developers quickly build interactive scenarios with active invitation capabilities.
|
|
2
|
+
|
|
3
|
+
## Use Cases
|
|
4
|
+
- **Collaborative work:** During a remote meeting, if a cross-department decision is involved, you can call in external experts with one click to quickly join the meeting, shortening the communication chain.
|
|
5
|
+
|
|
6
|
+
- **Live teaching:** If a teacher notices during a class that some students are absent, they can directly invite them to join the class.
|
|
7
|
+
|
|
8
|
+
- **Internet-based medical consultation:** During case analysis, a primary physician can use the calling feature to invite a senior physician into the virtual consultation room for a multi-party consultation, or a physician can call a patient in the waiting room for a consultation.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
Before integrating the feature, make sure the following conditions are met:
|
|
13
|
+
- **Inviter (User A):** The user has completed login authentication via `useLoginState` (see the Integration Overview) and is already in a room as the room owner or a member (see the Room Lifecycle).
|
|
14
|
+
|
|
15
|
+
- **Invitee (User B):** The user has completed login authentication via `useLoginState` (see the Integration Overview) so that they can receive signaling events.
|
|
16
|
+
|
|
17
|
+
- **Environment dependency:** The project has correctly installed and imported `tuikit-atomicx-vue3`.
|
|
18
|
+
|
|
19
|
+
## Implementing the In-Room Calling Feature
|
|
20
|
+
|
|
21
|
+
The core flow for implementing in-room calling is as follows:
|
|
22
|
+
|
|
23
|
+
In-room calling sequence diagram
|
|
24
|
+
|
|
25
|
+
### Step 1: Initiate the Call (Inviter)
|
|
26
|
+
|
|
27
|
+
The inviter calls the [callUserToRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#callUserToRoom) interface to initiate the invitation. Make sure the inviter is currently in a room (that is, [currentRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#currentRoom) is not empty); otherwise, the call cannot be initiated.
|
|
28
|
+
``` typescript
|
|
29
|
+
import { useRoomState } from 'tuikit-atomicx-vue3/room';
|
|
30
|
+
|
|
31
|
+
const { currentRoom, callUserToRoom } = useRoomState();
|
|
32
|
+
|
|
33
|
+
const inviteUser = async () => {
|
|
34
|
+
// In-room calling must be associated with an existing roomId, so the user's in-room status must be verified first
|
|
35
|
+
if (!currentRoom.value) {
|
|
36
|
+
console.warn('Please enter a room before initiating an invitation');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
const resultMap = await callUserToRoom({
|
|
42
|
+
roomId: currentRoom.value.roomId, // The room ID that the invitee will join
|
|
43
|
+
userIdList: ['user1', 'user2'], // Array of target user IDs, supports single or multiple users
|
|
44
|
+
timeout: 60, // Invitation valid duration (seconds); after timeout, both parties trigger onCallTimeout
|
|
45
|
+
// extensionInfo can be used to pass custom business data, such as invitation type, additional messages, etc.
|
|
46
|
+
extensionInfo: JSON.stringify({ type: 'emergency', priority: 'high' })
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// resultMap returns the status corresponding to each userId, such as Success, AlreadyInRoom, or AlreadyInCalling
|
|
50
|
+
console.log('Invitation sent, detailed status map:', resultMap);
|
|
51
|
+
} catch (error) {
|
|
52
|
+
console.error('Failed to send the call request; please check the network or login status:', error);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Step 2: Listen for Call Events (Invitee)
|
|
58
|
+
|
|
59
|
+
The invitee needs to listen for the `onCallReceived` event. It is recommended to implement this in a persistent component such as `App.vue` to ensure the user can respond no matter which page they are on.
|
|
60
|
+
``` typescript
|
|
61
|
+
import { ref, onMounted, onUnmounted } from 'vue';
|
|
62
|
+
import { useRoomState, RoomEvent } from 'tuikit-atomicx-vue3/room';
|
|
63
|
+
|
|
64
|
+
const {
|
|
65
|
+
subscribeEvent,
|
|
66
|
+
unsubscribeEvent,
|
|
67
|
+
acceptCall,
|
|
68
|
+
rejectCall,
|
|
69
|
+
joinRoom,
|
|
70
|
+
currentRoom
|
|
71
|
+
} = useRoomState();
|
|
72
|
+
|
|
73
|
+
const showInviteDialog = ref(false); // Controls the visibility of the UI dialog
|
|
74
|
+
const currentCallInfo = ref(null); // Caches the received invitation context
|
|
75
|
+
|
|
76
|
+
const handleCallReceived = async ({ roomInfo, call, extensionInfo }) => {
|
|
77
|
+
// Conflict handling: if the user is already in a meeting, based on the business strategy you should usually reject the new invitation directly to avoid interference
|
|
78
|
+
if (currentRoom.value?.roomId) {
|
|
79
|
+
await rejectCall({ roomId: roomInfo.roomId });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Record the invitation details, used to display the inviter's name or business pass-through data in the UI
|
|
84
|
+
currentCallInfo.value = { roomInfo, call };
|
|
85
|
+
showInviteDialog.value = true;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// Logic for accepting the invitation
|
|
89
|
+
const onUserAccept = async () => {
|
|
90
|
+
if (!currentCallInfo.value) return;
|
|
91
|
+
const { roomId } = currentCallInfo.value.roomInfo;
|
|
92
|
+
|
|
93
|
+
try {
|
|
94
|
+
// Key step A: Respond to the signaling. Notify the inviter that the call has been accepted so they can update the UI (for example, show "The other party has answered")
|
|
95
|
+
await acceptCall({ roomId });
|
|
96
|
+
|
|
97
|
+
// Key step B: Join the room. Only by calling joinRoom will the audio/video publish-subscribe pipeline actually be started
|
|
98
|
+
await joinRoom({ roomId });
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.error('Failed to join the room after accepting the call:', error);
|
|
101
|
+
} finally {
|
|
102
|
+
closeDialog();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
// Logic for rejecting the invitation
|
|
107
|
+
const onUserReject = async () => {
|
|
108
|
+
if (currentCallInfo.value) {
|
|
109
|
+
// Notify the inviter of the rejection; the inviter will receive the onCallRejected event
|
|
110
|
+
await rejectCall({ roomId: currentCallInfo.value.roomInfo.roomId });
|
|
111
|
+
}
|
|
112
|
+
closeDialog();
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const closeDialog = () => {
|
|
116
|
+
showInviteDialog.value = false;
|
|
117
|
+
currentCallInfo.value = null;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// Full lifecycle event management: ensure listeners are added when the component is mounted and removed when it is destroyed, to prevent event overflow
|
|
121
|
+
onMounted(() => {
|
|
122
|
+
subscribeEvent(RoomEvent.onCallReceived, handleCallReceived);
|
|
123
|
+
|
|
124
|
+
// Listen for the various exception/synchronization events that end the invitation, to ensure the UI dialog can close in time
|
|
125
|
+
subscribeEvent(RoomEvent.onCallCancelled, closeDialog); // The inviter cancelled the call
|
|
126
|
+
subscribeEvent(RoomEvent.onCallTimeout, closeDialog); // The call timed out without a response
|
|
127
|
+
subscribeEvent(RoomEvent.onCallHandledByOtherDevice, closeDialog); // The user handled the call on another device
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
onUnmounted(() => {
|
|
131
|
+
// Remove all listeners to avoid handleCallReceived continuing to run after the component is destroyed, which would cause memory leaks or errors
|
|
132
|
+
unsubscribeEvent(RoomEvent.onCallReceived, handleCallReceived);
|
|
133
|
+
unsubscribeEvent(RoomEvent.onCallCancelled, closeDialog);
|
|
134
|
+
unsubscribeEvent(RoomEvent.onCallTimeout, closeDialog);
|
|
135
|
+
unsubscribeEvent(RoomEvent.onCallHandledByOtherDevice, closeDialog);
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Practical Tutorial: Improving the Call Answer Rate
|
|
140
|
+
|
|
141
|
+
To achieve a higher call answer rate in your business, beyond implementing the basic functionality, it is recommended to refer to the following strategies to optimize the user experience:
|
|
142
|
+
|
|
143
|
+
### 1. Enhance Call Awareness (Avoid Users Missing Calls)
|
|
144
|
+
|
|
145
|
+
Due to the characteristics of the Web platform, a muted browser or a page running in the background may cause the user to miss a call.
|
|
146
|
+
- **Visual reminder**: Use the [Page Visibility API](https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API) to detect the page visibility state. If the page is in the background, you can implement a blinking title bar reminder by cyclically modifying `document.title` (for example: "[New Invitation] UserA is inviting you to join the meeting...") to attract the user's attention.
|
|
147
|
+
|
|
148
|
+
- **Auditory reminder**: Play a high-priority prompt ringtone when the `onCallReceived` event is triggered. Note: You must follow the browser's [autoplay policy](https://developer.mozilla.org/zh-CN/docs/Web/Media/Guides/Autoplay). Most browsers restrict automatic audio playback in the absence of user interaction (such as a click, touch, or key press).
|
|
149
|
+
|
|
150
|
+
### 2. Enrich the Invitation Context (Increase Willingness to Answer)
|
|
151
|
+
|
|
152
|
+
Invitations that lack a clear intent are easily rejected by users. It is recommended to make full use of the `extensionInfo` field to pass key business information to increase the user's willingness to answer.
|
|
153
|
+
- **Pass business context**: Use `extensionInfo` to pass through business fields such as `reason` (for example: "Urgent project review") and `level` (for example: "P0 incident troubleshooting") to inform the user of the urgency and importance of the call.
|
|
154
|
+
|
|
155
|
+
### 3. Multi-Channel Reach as a Fallback (Ensure Message Delivery)
|
|
156
|
+
|
|
157
|
+
Limited by the Web platform mechanism, the browser process being terminated will make it impossible to receive real-time signaling. It is recommended to adopt the following alternatives to ensure delivery:
|
|
158
|
+
- **Browser system notifications**: Guide the user to authorize the [Web Notification API](https://developer.mozilla.org/en-US/docs/Web/API/Notification). As long as the browser process is not closed (including when minimized or in a background tab), an operating-system-level pop-up notification can be triggered to effectively remind the user.
|
|
159
|
+
|
|
160
|
+
- **Multi-channel reach**: It is recommended to combine this with your business backend logic. When the user is detected to be offline or does not respond within the timeout, send a join link through external channels such as **SMS**, **email**, or **WeCom** to achieve comprehensive reach.
|
|
161
|
+
|
|
162
|
+
### 4. Intelligent Retry Mechanism (Solving "Join Failure After Accepting the Invitation")
|
|
163
|
+
|
|
164
|
+
In a weak network or other unstable environment, the `joinRoom` call after the user clicks accept may occasionally fail.
|
|
165
|
+
- **Automatic retry**: It is recommended to introduce a mechanism of 2-3 automatic retries in the exception handling logic (`catch`) of `onUserAccept` (an exponential backoff strategy is recommended) to maximize the likelihood that the user successfully joins the meeting after clicking "Accept".
|
|
166
|
+
|
|
167
|
+
## Development Notes
|
|
168
|
+
1. **Accepting an invitation does not equal joining the room**
|
|
169
|
+
|
|
170
|
+
`acceptCall` is only a reply at the signaling level (notifying the other party that the call has been answered). The user must call `await joinRoom({ roomId })` manually immediately after calling `acceptCall` to actually enter the audio/video room.
|
|
171
|
+
|
|
172
|
+
2. **Lifecycle management**
|
|
173
|
+
|
|
174
|
+
Be sure to call `unsubscribeEvent` during the component destruction phase (`onUnmounted`). If the listeners are not cleaned up, when the user switches pages, the listeners from the old page will remain in memory, causing multiple windows to pop up for a single invitation or logic to be executed repeatedly.
|
|
175
|
+
|
|
176
|
+
3. **Timeout setting**
|
|
177
|
+
|
|
178
|
+
If the `timeout` parameter is not set, in certain network exceptions or program crash scenarios, the invitation may remain in a pending state for a long time, making it impossible to call the user again. It is recommended to set it to 30-60 seconds.
|
|
179
|
+
|
|
180
|
+
## FAQ
|
|
181
|
+
1. **How can I include custom parameters when calling (such as "Urgent meeting from XX")?**
|
|
182
|
+
|
|
183
|
+
Use the `extensionInfo` parameter of `callUserToRoom` to pass a JSON string. The invitee can parse this string from the `extensionInfo` field of the `onCallReceived` event to obtain the business information.
|
|
184
|
+
|
|
185
|
+
2. **If the invitee is offline, will they receive the invitation after coming online?**
|
|
186
|
+
|
|
187
|
+
No. The invitation event is a transient signaling action, and the SDK currently does not resend call notifications received while offline.
|
|
188
|
+
|
|
189
|
+
3. **Can I cancel an invitation that has already been sent?**
|
|
190
|
+
|
|
191
|
+
Yes. Call `cancelCall({ roomId, userIdList })` to revoke it. At this point, the invitee will receive the `onCallCancelled` event, and you need to listen for this event to close the invitee's UI dialog.
|
|
192
|
+
|
|
193
|
+
4. **What should I do if joining the room fails after accepting?**
|
|
194
|
+
|
|
195
|
+
Check whether `TUIRoomEngine` is logged in, retry `joinRoom({ roomId })`, and catch errors to prompt the user; if necessary, provide a "Retry" button in the UI.
|
|
196
|
+
|
|
197
|
+
5. **How to indicate that the other party is busy or already in another room?**
|
|
198
|
+
|
|
199
|
+
If `AlreadyInRoom` / `AlreadyInCalling` appears in the `resultMap` return value of `callUserToRoom`, you should prompt "The other party is busy / already in a meeting" in the inviter's UI and decide whether to retry later.
|
|
200
|
+
|
|
201
|
+
6. **The dialog does not close after a timeout/cancellation?**
|
|
202
|
+
|
|
203
|
+
Make sure to listen for `onCallTimeout`, `onCallCancelled`, and `onCallHandledByOtherDevice`, and uniformly close the dialog and clean up the current invitation data in the callbacks.
|
|
204
|
+
|
|
205
|
+
7. **How to handle multiple devices ringing simultaneously?**
|
|
206
|
+
|
|
207
|
+
After accepting/rejecting on any device, the other devices will receive `onCallHandledByOtherDevice`, and you need to close the dialogs on the other devices to avoid duplicate handling.
|
|
208
|
+
|
|
209
|
+
8. **How should extensionInfo be defined?**
|
|
210
|
+
|
|
211
|
+
It is recommended to use a JSON string with agreed-upon fields (for example, `type`, `priority`, `from`), parse it in `handleCallReceived`, and display a friendly message (for example, "Urgent meeting from XX").
|
|
212
|
+
|
|
213
|
+
## **Example Project**
|
|
214
|
+
|
|
215
|
+
Tencent Cloud provides the example project [atomicx-vite-vue3-ts](https://github.com/Tencent-RTC/TUIRoomKit/tree/main/Web/example/atomicx-vite-vue3-ts) on GitHub, which you can refer to in order to implement the complete RoomKit functionality.
|
|
216
|
+
|
|
217
|
+
## API Documentation
|
|
218
|
+
|
|
219
|
+
|**State/Component**|**Description**|**API Documentation**|
|
|
220
|
+
|---------|---------|---------|
|
|
221
|
+
|**useRoomState**|Room state management (creation, joining, scheduling, etc.)|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-RoomState)|
|
package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md
RENAMED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
This document
|
|
1
|
+
This document guides you through providing device preview and testing capabilities before a user joins a room. Using the pre-join testing APIs provided by Atomicx, you can guide users to check and adjust the status of their audio and video devices, ensuring they enter a multi-party audio/video room in the best possible state.
|
|
2
2
|
|
|
3
|
-
## Feature
|
|
3
|
+
## Feature Overview
|
|
4
4
|
|
|
5
|
-
Device preview is
|
|
6
|
-
- **Video
|
|
5
|
+
Device preview is a crucial step in ensuring the smooth operation of an audio/video room. Atomicx provides a dedicated set of testing APIs specifically for the pre-join scenario. Its core capabilities include:
|
|
6
|
+
- **Video preview**: Start the camera without publishing a stream to verify image clarity and lighting.
|
|
7
7
|
|
|
8
|
-
- **Microphone
|
|
8
|
+
- **Microphone detection**: Confirm that microphone capture is working properly through real-time volume feedback.
|
|
9
9
|
|
|
10
|
-
- **Speaker
|
|
10
|
+
- **Speaker calibration**: Confirm the output device and its volume settings by playing a test sound.
|
|
11
11
|
|
|
12
12
|
## Prerequisites
|
|
13
|
-
-
|
|
13
|
+
- The user has completed login authentication via [useLoginState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-LoginState). See the Integration Overview for details.
|
|
14
14
|
|
|
15
|
-
## Implementing Device Detection
|
|
15
|
+
## Implementing Device Detection
|
|
16
16
|
|
|
17
17
|
### Step 1: Camera Test
|
|
18
18
|
|
|
19
|
-
Use the [startCameraTest](https://web.sdk.qcloud.com/trtc/live/web/doc/
|
|
19
|
+
Use the [startCameraTest](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#startCameraTest) method to start the camera test. This method is used for local preview only and does not generate any network traffic.
|
|
20
20
|
|
|
21
|
-
**Code
|
|
21
|
+
**Code example:**
|
|
22
22
|
``` typescript
|
|
23
23
|
<template>
|
|
24
24
|
<div class="preview-container">
|
|
25
25
|
<!-- Camera preview area -->
|
|
26
26
|
<div id="camera-preview" class="camera-preview">
|
|
27
|
-
<!-- Loading
|
|
27
|
+
<!-- Loading state -->
|
|
28
28
|
<div v-if="isCameraTestLoading" class="loading-overlay">
|
|
29
29
|
<div class="loading-spinner" />
|
|
30
30
|
<span>Starting camera...</span>
|
|
@@ -33,7 +33,7 @@ Use the [startCameraTest](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.
|
|
|
33
33
|
|
|
34
34
|
<!-- Camera selection -->
|
|
35
35
|
<div class="camera-selector">
|
|
36
|
-
<label>Select
|
|
36
|
+
<label>Select camera</label>
|
|
37
37
|
<select
|
|
38
38
|
:value="currentCamera?.deviceId"
|
|
39
39
|
@change="handleCameraChange"
|
|
@@ -51,12 +51,12 @@ Use the [startCameraTest](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index.
|
|
|
51
51
|
|
|
52
52
|
<!-- Control buttons -->
|
|
53
53
|
<div class="control-buttons">
|
|
54
|
-
<button @click="getCameraList">Get
|
|
54
|
+
<button @click="getCameraList">Get camera list</button>
|
|
55
55
|
<button
|
|
56
56
|
@click="toggleCameraTest"
|
|
57
57
|
:disabled="isCameraTestLoading"
|
|
58
58
|
>
|
|
59
|
-
{{ isCameraTesting ? 'Stop
|
|
59
|
+
{{ isCameraTesting ? 'Stop preview' : 'Start preview' }}
|
|
60
60
|
</button>
|
|
61
61
|
</div>
|
|
62
62
|
</div>
|
|
@@ -117,15 +117,15 @@ const handleCameraChange = async (event: Event) => {
|
|
|
117
117
|
|
|
118
118
|
### Step 2: Microphone Test
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
Use [startMicrophoneTest](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#startMicrophoneTest) to start the microphone test, and use [testingMicVolume](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#testingMicVolume) to drive the real-time fluctuation of the UI volume bar.
|
|
121
121
|
|
|
122
|
-
**Code
|
|
122
|
+
**Code example:**
|
|
123
123
|
``` typescript
|
|
124
124
|
<template>
|
|
125
125
|
<div class="microphone-test">
|
|
126
126
|
<!-- Volume display -->
|
|
127
127
|
<div class="volume-display">
|
|
128
|
-
<div class="volume-label">Microphone
|
|
128
|
+
<div class="volume-label">Microphone volume</div>
|
|
129
129
|
<div class="volume-bar-container">
|
|
130
130
|
<div
|
|
131
131
|
class="volume-bar"
|
|
@@ -138,7 +138,7 @@ Start microphone testing through [startMicrophoneTest](https://web.sdk.qcloud.co
|
|
|
138
138
|
|
|
139
139
|
<!-- Microphone selection -->
|
|
140
140
|
<div class="microphone-selector">
|
|
141
|
-
<label>Select
|
|
141
|
+
<label>Select microphone</label>
|
|
142
142
|
<select
|
|
143
143
|
:value="currentMicrophone?.deviceId"
|
|
144
144
|
@change="handleMicrophoneChange"
|
|
@@ -159,18 +159,18 @@ Start microphone testing through [startMicrophoneTest](https://web.sdk.qcloud.co
|
|
|
159
159
|
<button
|
|
160
160
|
@click="getMicrophoneList"
|
|
161
161
|
>
|
|
162
|
-
Get
|
|
162
|
+
Get devices
|
|
163
163
|
</button>
|
|
164
164
|
<button
|
|
165
165
|
@click="toggleMicrophoneTest"
|
|
166
166
|
>
|
|
167
|
-
{{ isMicrophoneTesting ? 'Stop
|
|
167
|
+
{{ isMicrophoneTesting ? 'Stop test' : 'Start test' }}
|
|
168
168
|
</button>
|
|
169
169
|
</div>
|
|
170
170
|
|
|
171
171
|
<!-- Test tip -->
|
|
172
172
|
<div v-if="isMicrophoneTesting" class="test-tip">
|
|
173
|
-
<span>Please speak into the microphone
|
|
173
|
+
<span>Please speak into the microphone and observe the volume change</span>
|
|
174
174
|
</div>
|
|
175
175
|
</div>
|
|
176
176
|
</template>
|
|
@@ -202,14 +202,14 @@ const volumeClass = computed(() => {
|
|
|
202
202
|
return 'volume-high';
|
|
203
203
|
});
|
|
204
204
|
|
|
205
|
-
// Cleanup: stop
|
|
205
|
+
// Cleanup: stop the test
|
|
206
206
|
onUnmounted(() => {
|
|
207
207
|
if (isMicrophoneTesting.value) {
|
|
208
208
|
stopMicrophoneTest();
|
|
209
209
|
}
|
|
210
210
|
});
|
|
211
211
|
|
|
212
|
-
// Toggle microphone test
|
|
212
|
+
// Toggle the microphone test
|
|
213
213
|
const toggleMicrophoneTest = async () => {
|
|
214
214
|
if (isMicrophoneTesting.value) {
|
|
215
215
|
await stopMicrophoneTest();
|
|
@@ -222,7 +222,7 @@ const toggleMicrophoneTest = async () => {
|
|
|
222
222
|
}
|
|
223
223
|
};
|
|
224
224
|
|
|
225
|
-
// Switch microphone device
|
|
225
|
+
// Switch the microphone device
|
|
226
226
|
const handleMicrophoneChange = async (event: Event) => {
|
|
227
227
|
const deviceId = (event.target as HTMLSelectElement).value;
|
|
228
228
|
try {
|
|
@@ -240,15 +240,15 @@ const handleMicrophoneChange = async (event: Event) => {
|
|
|
240
240
|
|
|
241
241
|
### Step 3: Speaker Test
|
|
242
242
|
|
|
243
|
-
Use the [startSpeakerTest](https://web.sdk.qcloud.com/trtc/live/web/doc/
|
|
243
|
+
Use the [startSpeakerTest](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#startSpeakerTest) method to play a specified audio file to confirm whether the speaker is working properly.
|
|
244
244
|
|
|
245
|
-
**Code
|
|
245
|
+
**Code example:**
|
|
246
246
|
``` typescript
|
|
247
247
|
<template>
|
|
248
248
|
<div class="speaker-test">
|
|
249
249
|
<!-- Speaker selection -->
|
|
250
250
|
<div class="speaker-selector">
|
|
251
|
-
<label>Select
|
|
251
|
+
<label>Select speaker</label>
|
|
252
252
|
<select
|
|
253
253
|
:value="currentSpeaker?.deviceId"
|
|
254
254
|
@change="handleSpeakerChange"
|
|
@@ -266,24 +266,24 @@ Use the [startSpeakerTest](https://web.sdk.qcloud.com/trtc/live/web/doc/zh/index
|
|
|
266
266
|
|
|
267
267
|
<!-- Control buttons -->
|
|
268
268
|
<div class="control-buttons">
|
|
269
|
-
<button @click="getSpeakerList">Get
|
|
269
|
+
<button @click="getSpeakerList">Get speaker list</button>
|
|
270
270
|
<button
|
|
271
271
|
@click="toggleSpeakerTest"
|
|
272
272
|
:disabled="isSpeakerTesting"
|
|
273
273
|
>
|
|
274
|
-
{{ isSpeakerTesting ? 'Playing...' : 'Play
|
|
274
|
+
{{ isSpeakerTesting ? 'Playing...' : 'Play test audio' }}
|
|
275
275
|
</button>
|
|
276
276
|
<button
|
|
277
277
|
v-if="isSpeakerTesting"
|
|
278
278
|
@click="stopSpeakerTest"
|
|
279
279
|
>
|
|
280
|
-
Stop
|
|
280
|
+
Stop playback
|
|
281
281
|
</button>
|
|
282
282
|
</div>
|
|
283
283
|
|
|
284
284
|
<!-- Test tip -->
|
|
285
285
|
<div v-if="isSpeakerTesting" class="test-tip">
|
|
286
|
-
<span>Playing test audio
|
|
286
|
+
<span>Playing test audio. Please confirm whether you can hear the sound</span>
|
|
287
287
|
</div>
|
|
288
288
|
</div>
|
|
289
289
|
</template>
|
|
@@ -303,17 +303,17 @@ const {
|
|
|
303
303
|
} = useDeviceState();
|
|
304
304
|
|
|
305
305
|
// Test audio file path
|
|
306
|
-
// Note: This URL is for development testing only.
|
|
306
|
+
// Note: This URL is for development and testing only. In production, please use your own audio file. A 3-5 second MP3 file is recommended.
|
|
307
307
|
const testAudioPath = 'https://web.sdk.qcloud.com/trtc/electron/download/resources/media/TestSpeaker.mp3';
|
|
308
308
|
|
|
309
|
-
// Cleanup: stop
|
|
309
|
+
// Cleanup: stop the test
|
|
310
310
|
onUnmounted(() => {
|
|
311
311
|
if (isSpeakerTesting.value) {
|
|
312
312
|
stopSpeakerTest();
|
|
313
313
|
}
|
|
314
314
|
});
|
|
315
315
|
|
|
316
|
-
// Toggle speaker test
|
|
316
|
+
// Toggle the speaker test
|
|
317
317
|
const toggleSpeakerTest = async () => {
|
|
318
318
|
if (isSpeakerTesting.value) {
|
|
319
319
|
await stopSpeakerTest();
|
|
@@ -326,7 +326,7 @@ const toggleSpeakerTest = async () => {
|
|
|
326
326
|
}
|
|
327
327
|
};
|
|
328
328
|
|
|
329
|
-
// Switch speaker device
|
|
329
|
+
// Switch the speaker device
|
|
330
330
|
const handleSpeakerChange = async (event: Event) => {
|
|
331
331
|
const deviceId = (event.target as HTMLSelectElement).value;
|
|
332
332
|
try {
|
|
@@ -342,29 +342,30 @@ const handleSpeakerChange = async (event: Event) => {
|
|
|
342
342
|
</style>
|
|
343
343
|
```
|
|
344
344
|
|
|
345
|
-
## API
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
345
|
+
## API Reference
|
|
346
|
+
|
|
347
|
+
|**State/Component**|**Description**|**API Reference**|
|
|
348
|
+
|---------|---------|---------|
|
|
349
|
+
|**useDeviceState**|Contains audio/video device status, the audio/video device list, and operation APIs.|[API Reference](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState)|
|
|
349
350
|
|
|
350
351
|
## FAQ
|
|
351
352
|
|
|
352
353
|
### Why is there no image in the camera preview?
|
|
353
354
|
|
|
354
|
-
Possible
|
|
355
|
-
- **Permission denied:** Check
|
|
355
|
+
Possible causes include:
|
|
356
|
+
- **Permission denied:** Check whether the browser allows camera access.
|
|
356
357
|
|
|
357
|
-
- **Device
|
|
358
|
+
- **Device in use:** Close other applications that are using the camera.
|
|
358
359
|
|
|
359
|
-
- **Device not connected:** Check
|
|
360
|
+
- **Device not connected:** Check whether the camera is properly connected.
|
|
360
361
|
|
|
361
|
-
- **Browser not supported:** Use modern
|
|
362
|
+
- **Browser not supported:** Use a modern browser such as Chrome or Edge.
|
|
362
363
|
|
|
363
|
-
###
|
|
364
|
+
### Why does the volume stay at 0 during the microphone test?
|
|
364
365
|
|
|
365
|
-
Possible
|
|
366
|
-
- **Microphone permission not granted:** Check browser permission settings.
|
|
366
|
+
Possible causes include:
|
|
367
|
+
- **Microphone permission not granted:** Check the browser permission settings.
|
|
367
368
|
|
|
368
|
-
- **Microphone
|
|
369
|
+
- **Microphone muted:** Check the system microphone settings.
|
|
369
370
|
|
|
370
371
|
- **Wrong device selected:** Switch to the correct microphone device.
|