Voximplant:如何在通话断开事件中获取录音URL?
解决RecordStopped事件中获取录音URL的问题
问题核心在于VoxEngine.easyProcess是封装后的简化处理逻辑,它的内部录音实例并未对外暴露事件监听接口,导致你无法捕获RecordStopped事件的返回数据。要解决这个问题,需要显式创建录音实例并绑定事件监听,替代默认的easyProcess隐式录音处理。
实现步骤与示例代码
- 显式发起外呼并创建独立的
Recorder实例,关联呼入和呼出通话 - 直接监听
Recorder的RecordStopped事件,从回调参数中获取录音URL - 绑定通话断开事件,确保录音在通话结束时正常停止
// 发起外呼 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
相关产品推荐
相关产品推荐

