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

Voximplant:如何在通话断开事件中获取录音URL?

解决RecordStopped事件中获取录音URL的问题

问题核心在于VoxEngine.easyProcess是封装后的简化处理逻辑,它的内部录音实例并未对外暴露事件监听接口,导致你无法捕获RecordStopped事件的返回数据。要解决这个问题,需要显式创建录音实例并绑定事件监听,替代默认的easyProcess隐式录音处理。

实现步骤与示例代码

  1. 显式发起外呼并创建独立的Recorder实例,关联呼入和呼出通话
  2. 直接监听Recorder的RecordStopped事件,从回调参数中获取录音URL
  3. 绑定通话断开事件,确保录音在通话结束时正常停止
// 发起外呼
const outgoingCall = VoxEngine.callPSTN(number, caller);

// 创建录音实例,关联两个通话(可指定格式等参数)
const recorder = Recorder.create({
  call1: e.call,
  call2: outgoingCall,
  format: "mp3"
});

// 监听录音启动事件(可选,用于验证)
recorder.addEventListener(RecorderEvents.RecordStarted, (event) => {
  console.log("录音已启动:", event.url);
});

// 监听录音停止事件,获取最终录音URL
recorder.addEventListener(RecorderEvents.RecordStopped, (event) => {
  if (event.url) {
    console.log("录音完成,URL:", event.url);
    // 在此处添加URL的后续处理逻辑(如存储、通知等)
  } else {
    console.log("录音未生成有效URL,可能因通话过短或异常中断导致");
  }
});

// 绑定通话断开事件,确保录音正常停止
e.call.addEventListener(CallEvents.Disconnected, () => recorder.stop());
outgoingCall.addEventListener(CallEvents.Disconnected, () => recorder.stop());

关键说明

  • 当通话自然断开或手动调用recorder.stop()时,RecordStopped事件会被触发,回调参数中的event.url即为完整的录音文件链接
  • 避免依赖easyProcess的默认录音逻辑,因为它的内部处理无法被外部事件监听捕获
  • 若录音未生成URL,通常是因为通话时长过短(不足1秒)或通话异常中断,可在回调中添加异常处理逻辑

内容的提问来源于stack exchange,提问作者Vlad Kononenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:06:38