Voximplant 平台 - 将呼入电话转接到选择的手机号码

问题描述 投票:0回答:1

我见过同一问题的其他问题,但答案是相互矛盾的,没有一个对我有用

我想将来电转移到手机,但不是立即:仅当用户在选定状态下发送 DTMF 3 时,所以我认为使用

AppEvents.CallAlerting
不适合我的情况:

然后我尝试了以下解决方案(从menuState选择单击3调用fwdState)

function fwdCall(e)
{
    Call.removeEventListener(CallEvents.PlaybackFinished, fwdCall);
    const callerId=Call.callerid();
    const calledId='393333333333';
    call = VoxEngine.callPSTN(calledId, callerId);
    call.addEventListener(CallEvents.Connected, (e) => {
        VoxEngine.sendMediaBetween(e.call, Call);
    });
    
    call.addEventListener(CallEvents.Failed, VoxEngine.terminate);
    call.addEventListener(CallEvents.Disconnected, VoxEngine.terminate);        
}

function fwdCall2(e)
{
    Call.removeEventListener(CallEvents.PlaybackFinished, fwdCall2);
    const callerId=Call.callerid();
    const calledId='393333333333';
    call = VoxEngine.callPSTN(calledId, callerId,{ followDiversion: true });
    VoxEngine.easyProcess(e.call, call);
    
    call.addEventListener(CallEvents.Failed, VoxEngine.terminate);
    call.addEventListener(CallEvents.Disconnected, VoxEngine.terminate);        
}


const fwdState = new IVRState('callforward', {
        type: 'noinput',
        prompt: {
            play: 'please_wait_while_we_transfer.mp3'
        }
    }, 
    (data) => 
    {
        Call.addEventListener(CallEvents.PlaybackFinished, fwdCall);
    },
    (data) => 
    {
        fwdState.enter(Call);
    }
);

但是使用 fwdCall 和 fwdCall2 我都会收到以下错误:

JS error: Call is not a constructor in /application.js:442:23

所以我测试了 voximplant 网站上提出的示例这里

但是(在第 3 行评论

let Call
之后) 我遇到与上面相同的错误。

哪种方法是正确的?

谢谢

voximplant
1个回答
0
投票

嗯...

似乎两种解决方案都是正确的并且有效..

事实上错误不在这些函数中,而是在场景的开始处: 在所有示例中,voximplant 使用

Call
作为默认变量来指定调用:

Call = e.call

但是

Call
是由他们的例程内部使用的,当需要管理超过 1 个调用时,它会返回错误。

解决方案非常简单,在第一个听众中,通常是

VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => {

使用

call = e.call;
代替
Call = e.call;

就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.