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

咨询:Node.js脚本如何捕获FreeSWITCH的CHANNEL_ANSWER事件

解决Node.js捕获FreeSWITCH CHANNEL_ANSWER事件的问题

问题分析

从你提供的日志来看,FreeSWITCH已识别到呼叫接听(Channel [sofia/external/+1122334455] has been answered、Callstate Change EARLY -> ACTIVE),但未向Node.js脚本推送CHANNEL_ANSWER事件,核心原因通常是事件未主动订阅或呼叫发起方式导致事件跟踪失效。

解决步骤

1. 主动订阅CHANNEL_ANSWER事件

连接FreeSWITCH后必须明确订阅目标事件,否则不会收到推送。以常用的freeswitch-node库为例:

const FreeSwitch = require('freeswitch');
const fsClient = new FreeSwitch({
  host: '你的FS服务器IP',
  port: 8021,
  password: '你的ESL密码'
});

fsClient.connect();

fsClient.on('connect', () => {
  // 订阅CHANNEL_ANSWER事件(plain格式便于解析)
  fsClient.api('event plain CHANNEL_ANSWER', (err) => {
    if (err) console.error('事件订阅失败:', err);
  });
});

// 监听CHANNEL_ANSWER事件
fsClient.on('CHANNEL_ANSWER', (eventData) => {
  console.log('呼叫已应答:', eventData);
  // 执行后续呼叫流任务
});

2. 用uuid_originate精准跟踪呼叫

普通originate命令可能无法绑定事件到当前呼叫,改用uuid_originate生成唯一呼叫UUID,确保事件能被精准捕获:

const { v4: uuidv4 } = require('uuid');

fsClient.on('connect', () => {
  const callUuid = uuidv4();
  // 发起带UUID的呼叫
  fsClient.api(`uuid_originate ${callUuid} sofia/external/+1122334455 &echo`, (err) => {
    if (err) console.error('呼叫发起失败:', err);
  });

  // 可选:仅订阅该UUID的CHANNEL_ANSWER事件,减少冗余推送
  fsClient.api(`event plain CHANNEL_ANSWER ${callUuid}`, (err) => {
    if (err) console.error('指定UUID事件订阅失败:', err);
  });
});

3. 备选方案:监听CHANNEL_STATE事件

如果CHANNEL_ANSWER仍无法触发,可通过CHANNEL_STATE事件的ACTIVE状态判定呼叫接听:

fsClient.on('CHANNEL_STATE', (eventData) => {
  if (eventData.state === 'ACTIVE') {
    console.log('呼叫已应答(通过状态变更):', eventData);
    // 执行后续任务
  }
});

4. 验证FreeSWITCH事件配置

确保event_socket.conf.xml未过滤CHANNEL_ANSWER事件,默认配置无需修改,可检查:

<configuration name="event_socket.conf" description="Socket Client">
  <settings>
    <param name="listen-ip" value="0.0.0.0"/>
    <param name="listen-port" value="8021"/>
    <param name="password" value="ClueCon"/>
    <!-- 确认未设置exclude-events排除CHANNEL_ANSWER -->
  </settings>
</configuration>

内容的提问来源于stack exchange,提问作者aIi.i

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:17:40