如何区分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
值:(busy
,canceled
,completed
,failed
,或no-answer
)。
然而,真正的技巧是,如果电话到达应答机,它将被视为answered
。我已经写了blog post来讨论一种方法,你可以使用<Gather>
verb来检测人是否接听电话。
感谢您的回应!这绝对看起来很有希望,但似乎没有解决这个问题,即使我解雇了电话,呼叫状态仍然是“正在进行中”。按照您的建议,我尝试了两种事件,但是否接听或解除通话,我仍然得到相同的一对状态(“正在处理”,后面跟着“完成”)。所以,除非我错过了一些东西,否则我仍然无法区分回答和未回答的电话...... –
(尽管已经说过,“完成”状态可能足以让我做我需要做的事情.. 。会测试一下,虽然可能在周一!再次感谢) –
让我知道它是如何去的尼克! –