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

Azure Communication Service视频通话:同时发起呼叫的冲突问题及解决

使用Azure Communication Service处理双人视频通话的同时呼叫冲突问题

问题场景与描述

我基于Azure Communication Service实现双人(用户1、用户2)视频通话,逻辑是先上线的一方(比如用户1)等待另一方接入,另一方(用户2)上线后发起呼叫,用户1会通过以下代码接收来电通知并处理:

callAgent.on('incomingCall', async (args) => {
    try {
        // 显示接听按钮
    } catch (error) {
    }
});

目前遇到的问题是:当两人同时发起呼叫时,其中一方接听后,另一方因已处于呼叫连接状态无法接听,最终导致呼叫被断开。想知道能不能在发起呼叫时销毁来电通知,或者有其他办法解决这个冲突?

解决方案

可以通过在来电处理逻辑中判断本地是否存在正在响铃的呼出呼叫,若存在则主动挂断呼出呼叫,以此避免冲突。以下是可行的实现代码:

async function incomingCallHandler(args) {
    try {
        const incomingCall = args.incomingCall;
        // 检查本地是否有处于响铃状态的呼出呼叫
        if (call.state === "Ringing" && call.direction === "Outgoing") {
            // 主动挂断呼出的呼叫
            await call.hangUp();
        }
        // 后续可正常处理来电,比如显示接听按钮
    } catch (error) {
        console.error(error);
    }
};

callAgent.on('incomingCall', incomingCallHandler);

核心逻辑说明:当收到来电通知时,先校验本地的call对象状态——如果它正处于Ringing状态且呼叫方向是Outgoing(正在呼出),就主动挂断这个呼出呼叫,这样就能正常处理新的来电,避免两边同时发起呼叫导致的连接冲突。

内容的提问来源于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 15:52:09