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

NodeJs+React集成ACS视频呼叫如何查询会话、强制结束及配置回调

ACS 视频呼叫集成功能实现方案

功能落地说明

以下是你提到的4个需求的具体实现方案,基于Azure Communication Services(Node.js SDK) + 自定义业务层实现:

1. 查询当前全部通话会话列表

ACS 原生未提供全局通话列表查询接口,需要在业务侧自行维护会话状态:

  • 预约创建时,你的Node.js后端生成唯一业务会话ID,关联绑定预约时间段、对应ACS呼叫ID/群组ID
  • 会话建立、结束事件触发时,同步更新业务库中该会话的状态(进行中/已结束)
  • 后续查询全量进行中会话直接读取业务库即可,无需调用ACS接口

2. 查询每个会话的参与人列表

两种实现方案可选:

  • 业务侧存储:用户加入会话时,前端调用后端接口上报用户ID与关联的ACS会话ID,在业务库中维护参与人列表,查询效率最高
  • 调用ACS接口:使用Node.js SDK的CallAutomationClient的getCallConnectionProperties方法,传入目标callConnectionId,返回结果中的participants字段即为当前所有参与人信息,对应REST接口为GET /calling/callConnections/{callConnectionId}?api-version=2023-10-15

3. 强制结束指定会话

直接调用ACS服务端挂断接口实现全量踢出:

const { CallAutomationClient } = require('@azure/communication-call-automation');
// 初始化客户端
const callClient = new CallAutomationClient('<你的ACS资源连接字符串>');
// 强制结束会话方法
async function forceTerminateCall(callConnectionId) {
  // 第二个参数isForEveryone设为true,会挂断所有参与人并结束整个会话
  await callClient.hangUp(callConnectionId, true);
}

对应REST请求为POST /calling/callConnections/{callConnectionId}:hangup?api-version=2023-10-15,请求体携带{"isForEveryone": true}即可

4. 会话关闭、参与人离开的回调配置

ACS 原生支持事件订阅回调:

  • 在ACS资源配置页新建事件订阅,选择需要监听的事件:Microsoft.Communication.CallEnded(会话结束事件)、Microsoft.Communication.ParticipantLeft(参与人离开事件)
  • 回调地址配置为你的Node.js后端公网可访问接口,事件触发时ACS会主动推送会话ID、参与人ID、事件时间等参数到该接口,你可以在接口逻辑中更新业务库状态即可

预约时长管控全流程

  • 预约创建成功后,给对应会话注册定时任务(可使用node-schedule或bullmq消息队列实现),触发时间设为预约结束时间
  • 定时任务触发时调用上述强制结束会话接口,同步更新业务库会话状态
  • 收到ACS的会话结束回调时,主动销毁对应会话的定时任务,避免重复执行

内容的提问来源于stack exchange,提问作者jin chong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:03