我正在使用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事件:(busycanceledcompletedfailedno-answer)。

但是,真正的技巧是,如果呼叫到达答录机,它将被视为answered。我已经写了这个blog post来讨论使用<Gather> verb来检测人类是否接听电话的一种解决方法。

关于node.js - 如何区分Twilio中已接听电话和未接听电话?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37189407/

10-12 04:01