2016-05-12 74 views
1

我正在研究一個使用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)收到一些呼叫狀態信息,讓我一接電話和一之間的區別在於沒有回答。任何幫助將非常感激!

回答

1

最後,我設法通過completed事件得到這個工作,正如Megan Speir所建議的(謝謝!),但是通過稍微不同的路線。

出於某種原因,無論我回答還是掛斷電話(我永遠都得不到,例如canceled),我似乎獲得in-progress狀態。但是,由於主URL只在成功應答的呼叫上被呼叫,因此我可以通過在呼叫被應答時將呼叫狀態變量設置爲call-answered,然後在回叫中檢查此值來區分已應答和未應答呼叫爲completed事件 - 即。如果它設置爲call-answered那麼這是成功應答呼叫的結束;否則,這是未答覆的呼叫的結束。這似乎適用於被拒接的電話和去電話答錄機的電話(至少在我目前正在測試的電話中)。

2

您可以通過提供多個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值:(busycanceledcompletedfailed,或no-answer)。

然而,真正的技巧是,如果電話到達應答機,它將被視爲answered。我已經寫了blog post來討論一種方法,你可以使用<Gather> verb來檢測人是否接聽電話。

+0

感謝您的迴應!這絕對看起來很有希望,但似乎沒有解決這個問題,即使我解僱了電話,呼叫狀態仍然是「正在進行中」。按照您的建議,我嘗試了兩種事件,但是否接聽或解除通話,我仍然得到相同的一對狀態(「正在處理」,後面跟着「完成」)。所以,除非我錯過了一些東西,否則我仍然無法區分回答和未回答的電話...... –

+0

(儘管已經說過,「完成」狀態可能足以讓我做我需要做的事情.. 。會測試一下,雖然可能在週一!再次感謝) –

+0

讓我知道它是如何去的尼克! –