我正在使用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
)。因此,我目前可以肯定地检测到已接听的电话,但没有办法确定何时未接听电话(除了只是等待和观察,这是不理想的)。理想情况下,我想要么a)有一个仅在未应答呼叫时才触发的回调,要么b)接收一些呼叫状态信息,使我能够区分已应答呼叫和未应答呼叫。任何帮助将非常感激!
最佳答案
您可以通过提供多个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来检测人类是否接听电话的一种解决方法。关于node.js - 如何区分Twilio中已接听电话和未接听电话?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37189407/