我正在开发一个 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',
});
(就其值(value)而言,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/