Azure通信服务视频通话获取网络质量时提示'feature未定义'
问题:Azure Communication Calling获取网络质量时报"feature is not defined"
在使用Azure Communication Calling库尝试获取网络质量时,两段测试代码均触发"feature is not defined"错误,已将功能代码放入subscribeToCall函数中,怀疑遗漏导入项。
现有导入代码:
const { CallClient, VideoStreamRenderer, LocalVideoStream } = require('@azure/communication-calling'); const { AzureCommunicationTokenCredential } = require('@azure/communication-common'); const { AzureLogger, setLogLevel } = require("@azure/logger");
subscribeToCall函数相关测试代码片段:
// CALL FEATURE TESTS :::::::: // First example /*const userFacingDiagnostics = call.feature(Features.UserFacingDiagnostics); userFacingDiagnostics.media.on("diagnosticChanged", (diagnosticInfo) => { console.log(diagnosticInfo); }); userFacingDiagnostics.network.on("diagnosticChanged", (diagnosticInfo) => { console.log(diagnosticInfo); });*/ // Second example /*call.feature(Features.UserFacingDiagnostics).network.on('diagnosticChanged', (diagnosticInfo) => { if (diagnosticInfo.diagnostic === 'networkReceiveQuality') { if (diagnosticInfo.value === DiagnosticQuality.Bad) { console.log("Network quality = BAD"); } else if (diagnosticInfo.value === DiagnosticQuality.Poor) { console.log("Network quality = POOR"); } else if (diagnosticInfo.value === DiagnosticQuality.Good) { console.log("Network quality = GOOD"); } } });*/
解决方案
1. 补充必要的导入项
错误核心原因是未导入Features对象(以及使用到的DiagnosticQuality枚举),二者均属于@azure/communication-calling包。修改导入代码如下:
const { CallClient, VideoStreamRenderer, LocalVideoStream, Features, DiagnosticQuality } = require('@azure/communication-calling'); const { AzureCommunicationTokenCredential } = require('@azure/communication-common'); const { AzureLogger, setLogLevel } = require("@azure/logger");
2. 验证包版本兼容性
确保安装的@azure/communication-calling版本支持UserFacingDiagnostics功能,建议使用最新稳定版,可通过以下命令更新:
npm install @azure/communication-calling@latest
3. 修正后的测试代码示例
取消注释后,修正后的代码可正常运行:
// 第一个示例 const userFacingDiagnostics = call.feature(Features.UserFacingDiagnostics); userFacingDiagnostics.media.on("diagnosticChanged", (diagnosticInfo) => { console.log(diagnosticInfo); }); userFacingDiagnostics.network.on("diagnosticChanged", (diagnosticInfo) => { console.log(diagnosticInfo); }); // 第二个示例 call.feature(Features.UserFacingDiagnostics).network.on('diagnosticChanged', (diagnosticInfo) => { if (diagnosticInfo.diagnostic === 'networkReceiveQuality') { if (diagnosticInfo.value === DiagnosticQuality.Bad) { console.log("Network quality = BAD"); } else if (diagnosticInfo.value === DiagnosticQuality.Poor) { console.log("Network quality = POOR"); } else if (diagnosticInfo.value === DiagnosticQuality.Good) { console.log("Network quality = GOOD"); } } });
内容的提问来源于stack exchange,提问作者usualuser
相关产品推荐
相关产品推荐

