You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:17:51