如何区分Twilio中已回答和未回答的电话?

问题描述:

我正在研究一个使用Twilio向用户发出呼叫的Node.js Web应用程序。这一切都很好,但我正在努力弄清楚如何区分未接电话和未接电话。这使得调用的代码如下所示:如何区分Twilio中已回答和未回答的电话?

client.makeCall({ 
    to: to, 
    from: config.sendingNumber, 
    url: config.baseUrl + '/call-answered?' + queryString, 
    method: 'GET', 
    statusCallback: config.baseUrl + '/call-status?' + queryString, 
    statusCallbackMethod: 'GET', 
    statusCallbackEvent: 'answered', 
}); 

(对于它的价值,queryString只是让我传过来的标识用户,所以我可以做适当的东西)。

就目前似乎工作的方式是,只有当用户应答呼叫url被调用(并提供了呼叫的标记),而statusCallback似乎被调用呼叫是否应答,或者它没有回答驳回(无论哪种方式,req.query.CallStatus设置为in-progress)。因此,我目前可以积极地检测到已接电话,但无法确定电话未接听时的情况(除了等待和观看,这是非理想的)。

理想情况下,我想无论是一)有所回调,如果电话无人接听的是仅触发,或B)收到一些呼叫状态信息,让我一接电话和一之间的区别在于没有回答。任何帮助将非常感激!

最后,我设法通过completed事件得到这个工作,正如Megan Speir所建议的(谢谢!),但是通过稍微不同的路线。

出于某种原因,无论我回答还是挂断电话(我永远都得不到,例如canceled),我似乎获得in-progress状态。但是,由于主URL只在成功应答的呼叫上被呼叫,因此我可以通过在呼叫被应答时将呼叫状态变量设置为call-answered,然后在回叫中检查此值来区分已应答和未应答呼叫为completed事件 - 即。如果它设置为call-answered那么这是成功应答呼叫的结束;否则,这是未答复的呼叫的结束。这似乎适用于被拒接的电话和去电话答录机的电话(至少在我目前正在测试的电话中)。

您可以通过提供多个StatusCallbackEvent values来指定多个事件。现在

// Download the Node helper library from twilio.com/docs/node/install 
// These vars are your accountSid and authToken from twilio.com/user/account 
var accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
var authToken = "AUTH_TOKEN"; 
var client = require('twilio')(accountSid, authToken); 

client.calls.create({ 
    url: "http://demo.twilio.com/docs/voice.xml", 
    to: "+14155551212", 
    from: "+18668675309", 
    statusCallback: "https://www.myapp.com/events", 
    statusCallbackMethod: "POST", 
    statusCallbackEvent: ["answered", "completed"], 
    method: "GET" 
}, function(err, call) { 
    process.stdout.write(call.sid); 
}); 

,该completed事件将被解雇无关给出以下CallStatus值:(busycanceledcompletedfailed,或no-answer)。

然而,真正的技巧是,如果电话到达应答机,它将被视为answered。我已经写了blog post来讨论一种方法,你可以使用<Gather> verb来检测人是否接听电话。

+0

感谢您的回应!这绝对看起来很有希望,但似乎没有解决这个问题,即使我解雇了电话,呼叫状态仍然是“正在进行中”。按照您的建议,我尝试了两种事件,但是否接听或解除通话,我仍然得到相同的一对状态(“正在处理”,后面跟着“完成”)。所以,除非我错过了一些东西,否则我仍然无法区分回答和未回答的电话...... –

+0

(尽管已经说过,“完成”状态可能足以让我做我需要做的事情.. 。会测试一下,虽然可能在周一!再次感谢) –

+0

让我知道它是如何去的尼克! –