Voximplant呼叫转接方法确认:是否需通过callUser与easyProcess实现?
Voximplant通话转接实现说明
你的理解是正确的——通过VoxEngine.callUser呼叫目标号码,再用VoxEngine.easyProcess接通双方是可行的通话转接方案,同时也有更简洁的实现方式,以下是具体说明:
方案一:按你的思路实现
- 第一步:在当前通话的触发事件(比如用户输入DTMF指令、自定义业务逻辑触发)中,调用
VoxEngine.callUser发起对目标电话号码的呼叫 - 第二步:监听目标呼叫的
Connected事件,一旦接通,调用VoxEngine.easyProcess将原通话与新呼叫桥接,自动处理媒体流和通话状态
示例代码:
let originalCall; // 监听来电并接听 VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => { originalCall = e.call; originalCall.answer(); // 监听用户DTMF按键触发转接(示例按1键转接) originalCall.addEventListener(CallEvents.DtmfReceived, (dtmfEvt) => { if (dtmfEvt.dtmf === "1") { // 呼叫目标号码,需替换为实际参数 const targetCall = VoxEngine.callUser("目标电话号码", "你的Voximplant应用名", "你的Voximplant用户名"); // 目标接通后桥接通话 targetCall.addEventListener(CallEvents.Connected, () => { VoxEngine.easyProcess(originalCall, targetCall); }); // 处理转接失败场景 targetCall.addEventListener(CallEvents.Failed, () => { originalCall.say("转接失败,请稍后重试"); originalCall.hangup(); }); } }); });
方案二:直接媒体连接的简洁方案
也可以跳过easyProcess,直接通过媒体连接方法实现转接,逻辑更灵活:
let originalCall; VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => { originalCall = e.call; originalCall.answer(); originalCall.addEventListener(CallEvents.DtmfReceived, (dtmfEvt) => { if (dtmfEvt.dtmf === "1") { // 直接呼叫目标号码 const targetCall = VoxEngine.call("目标电话号码"); targetCall.addEventListener(CallEvents.Connected, () => { // 双向连接媒体流 originalCall.connectMedia(targetCall); targetCall.connectMedia(originalCall); }); // 目标挂断后结束原通话 targetCall.addEventListener(CallEvents.Disconnected, () => { originalCall.hangup(); }); } }); });
内容的提问来源于stack exchange,提问作者Ksenia Cherkasova
相关产品推荐
相关产品推荐

