显示未接来电Twilio

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

我一直在与Twilio一起开发呼叫系统。它是这样工作的:

1。)当有人呼叫它播放IVR时,他们发送响应并重定向他们

2。)然后,我们向他们播放铃声,然后使用DialCallStatus将其转发到手机。我们之所以使用它,是因为我们不希望他们在手机上打语音邮件。因此,如果没有人接听电话,他们将拨打twilio语音邮件,而不是手机语音邮件。如果话务员回答,他们会听到“按任意键接听电话”,则按一下键,这样twilio就会知道有人接听了电话。

3。)我遇到的问题是,当我想显示“未接来电”时,它不起作用。我看到了通话状态,并尝试使用“未接来电”,但似乎几乎每个通话都被标记为“已完成”。本质上,我希望能够查明实际接线员未接听的电话。因此,即使他们不留下语音邮件,我们也可以给他们回电。

很抱歉,这个冗长的问题,但是如果您有任何想法,将不胜感激。

twilio
1个回答
0
投票

特定于“按任意键接听电话”。您是否在将Dial动词与Number noun url parameter结合使用,并使用随数字URL返回的Gather verb来收集此肯定输入?如果被叫方按任意键,您将收到一个Digits参数。重定向(请参见下文)是未按任何数字(但在dial timeout之前接听电话)时所命中的中断。如果未输入任何密钥,则将Digits的值设置为等于超时。

请看下面的Twilio功能代码。在我的测试中,如果被叫方应答但未按gather DTMF entry timeout之前的数字,则“拨号操作” URL会正确显示无应答。

初始拨号号码代码:

exports.handler = function(context, event, callback) {
    let twiml = new Twilio.twiml.VoiceResponse();
    twiml.dial({action: "https://x.x.x.x/dialAction"})
    .number({url: "https://x.x.x.x/gatherWhisp"}, "+15555551212");
    callback(null, twiml);
};

被叫方应答呼叫时运行的代码:

exports.handler = function(context, event, callback) {
    let twiml = new Twilio.twiml.VoiceResponse();
    let digits = event.Digits || null;
    if (digits === "timeout") {
        // The dialed party never pressed a digit to accept call
        // The DialCallStatus returned in the Dial action URL should say no-answer
        twiml.hangup();
        callback(null, twiml);
    } else if (digits) {
        twiml.say("You pressed a digit");
        callback(null, twiml);
    } else {
    twiml.gather({numDigits: "1", finishOnKey: ""})
    .say("Please press a digit to accept the call");
    twiml.redirect("https://x.x.x.x/gatherWhisp?Digits=timeout");
    callback(null, twiml);
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.