2
votes

Ok, I have just about given up on this project but I thought I'd ask you all before I did. I was building an app that would call 20+ numbers and if any failed, send me an email.

I got email working with mandrill and calls working with twilio. The problem is I need to detect if the call makes it to the answering machine. It does not ring like a normal number though. It says "Please hold while we transfer your call". It then plays music until someone picks up or an answering machine picks up.

From my scouring of the Twilio REST API docs I couldn't find anything that would allow me to differentiate between that first automatic message and the end voicemail. Is there something I'm missing or a workaround someone could think of?

Using the API with Laravel 5 though I doubt that is really relevant.

3

3 Answers

2
votes

I think you can use AMD https://www.twilio.com/help/faq/voice/can-twilio-tell-whether-a-call-was-answered-by-a-human-or-machine here. In order to distinguish between the ringing (before answer) and machine voice (after answer), you can check for the final call status. Call status will be 'in-progress' or 'complete' if it was answered by a human or a machine.

1
votes

Megan from Twilio here.

Expanding upon anuprag's answer, depending on the use case you might instead try using <Gather> to detect if a human answers the phone which is more reliable than AMD. You can find some examples of how to get started with this using your language of choice on our blog:

https://www.twilio.com/blog/2016/02/tracking-call-status-how-can-you-tell-if-a-human-answers-the-phone-2.html

0
votes

The only suggestion that I have is to implement whisper functionality. I saw it in the Twilio OpenVbx project, here is a link to that http://www.openvbx.org/

In a nutshell, when dialling an agent, you require that if an agent is going to accept the call, they need to do more than simply answer the incoming call. They are required for example to press a button, the part that makes this great, is there is a certain time delay that you can stipulate, and if an agent does not for example press 1 in that time, you can simply drop that call. This is a great workaround for dealing with answering services or even voicemail on mobile devices.

The source code for OpenVbx resides here https://github.com/twilio/OpenVBX

you would want to look at the server side implementation of the Dial applet. You will see a working implementation of what I have outlined. and you can take a look at the Twiml controller where whisper is implemented.

I hope it helps.