如何通过Voximplant实现来电转接至其他号码并录制通话
用Voximplant实现来电转接与通话录制
一、来电转接实现步骤
- 登录Voximplant控制台,创建或选择目标应用,进入**场景(Scenario)**页面新建场景。
- 在场景代码中监听来电事件
CallAlerting,当有来电进入时,调用call函数发起转接请求:- 目标号码必须包含国际区号(如
+1234567890) - 可通过
call的参数设置转接时显示的主叫号码、超时时间等属性
- 目标号码必须包含国际区号(如
- 监听转接通话的状态事件,处理接通或失败场景:
onCallConnected:转接成功后可执行后续操作(比如启动录制)onCallFailed:转接失败时,可给主叫播放提示音后挂断
二、通话录制实现(推荐服务器端录制)
服务器端录制由Voximplant服务器处理,无需客户端参与,稳定性更高:
- 在场景中,当转接后的通话接通后,调用
startRecording启动录制:- 支持设置录制格式(
mp3/wav)、是否混音(默认混音,即录制双方完整通话) - 可指定录制文件的标签,方便后续查询管理
- 支持设置录制格式(
- 录制停止逻辑:
- 通话自然结束时会自动停止录制
- 也可主动调用
stopRecording在特定时机手动停止
- 录制文件获取:
- 录制完成后,文件会存储在Voximplant云存储中
- 通过Voximplant API(如
GetRecordings接口)可查询、下载录制文件
三、完整场景代码示例
// 监听来电事件 VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => { const incomingCall = e.call; const targetNumber = "+1234567890"; // 目标转接号码 const displayNumber = "+0987654321"; // 转接时显示给被叫的号码 // 发起PSTN转接通话 const transferCall = VoxEngine.callPSTN(targetNumber, displayNumber); // 转接成功后启动录制并连接通话 transferCall.addEventListener(CallEvents.Connected, () => { console.log("转接成功,启动通话录制"); transferCall.startRecording({mix: true, format: "mp3"}); VoxEngine.easyProcess(incomingCall, transferCall); }); // 转接失败处理 transferCall.addEventListener(CallEvents.Failed, () => { incomingCall.say("转接失败,请稍后再试"); incomingCall.hangup(); }); // 主叫挂断后终止转接通话 incomingCall.addEventListener(CallEvents.Disconnected, () => { transferCall?.hangup(); }); });
注意事项
- 确保Voximplant应用已开通PSTN权限,且账户余额充足以支付转接通话费用
- 录制功能需在控制台提前开启,部分地区有合规要求,需提前确认
- 转接号码必须符合国际格式规范,避免因格式错误导致转接失败
内容的提问来源于stack exchange,提问作者Ksenia Cherkasova
相关产品推荐
相关产品推荐

