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

我正在使用Twilio将Node.js Web应用程序发送给用户。 这一切都很好,但我正在努力弄清楚如何区分一个回答的电话和没有回答的电话。 打电话的代码如下所示:

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只是让我传递给用户的标识符,所以我可以做适当的事情)。

目前似乎工作的方式是只有当用户接听电话(并提供呼叫的标记) statusCallback调用statusCallback ,而statusCallback似乎被调用是否呼叫被应答或被拒绝而不应答(以及任何一种方式, req.query.CallStatus被设置为in-progress )。 所以我现在可以正确地检测到一个应答的电话,但是当呼叫没有被应答时(除了等待和观看,这是非理想的),无法确定地知道。

理想情况下,我希望或者a)有一个callback,只有当这个呼叫没有被回答时才会被解雇,或者b)收到一些呼叫状态信息,这个信息可以让我区分一个应答呼叫和一个没有应答的呼叫。 任何帮助将非常感激!

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

 // 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); }); 

现在,无论给出以下CallStatus值,已completed事件都将被触发:( busycanceledcompletedfailedno-answer )。

然而,真正的诀窍在于,如果电话到达应答机,则将被视为answered 。 我已经写了这篇博客文章 ,谈论一种方法,你可以使用<Gather>动词来解决这个问题,以检测人是否接听电话。

最后,我通过Megan Speir(谢谢!)的build议,通过completed活动成功completed这项工作,但是途径略有不同。

出于某种原因,无论我回答还是挂断电话,我似乎都获得了进行中的通话状态(我从来没有得到,例如canceled )。 但是,由于主URL只在被呼叫的成功呼叫,我能够区分答复和未答复的呼叫通过设置一个呼叫状态variablescall-answered当一个呼叫被应答,然后检查这个值在completed事件的callback – 即。 如果它被设置为call-answered则这是成功应答呼叫的结束; 否则这是一个未答复的呼叫的结束。 这似乎适用于拨打电话和去电话答录机的人(至less在目前我正在testing的电话)。