I’m building an outbound calling application using the Asterisk ARI API. My goal is to determine whether an outbound call is answered by a human or voicemail.
I am looking for a way to detect the answer type (human vs. voicemail) when originating calls through ARI. Specifically:
Is there a recommended method to detect if a call is answered by a human or voicemail when using ARI?
Can I implement voicemail detection or silence detection in an ARI-based application to distinguish between a human and voicemail without requiring DTMF input from the callee?
Are there any best practices or tools for integrating voicemail detection into an ARI-based application?
Any insights, suggestions, or code examples would be greatly appreciated!
Hello, I’m thinking about an ARI STT service on your Asterisk server, which literally “listens” to the response to the outgoing call and converts it into text, then you just need to compare, if it’s “This is the voicemail of…” or related, it’s the voicemail. If the STT text is “hello/yes”, it is a human. Several cases to implement, but eventually you will get a solid recognition service whether it is voicemail or human.
STT services have costs but are accurate and will tell you exactly what the answer is when they answer the call.
The only problem with things like that people like me who record:
"Hello.
This is my phone. If you don’t know who I am, why are you calling? If you don’t leave a message, I don’t call back. Wait to do the thing."
And it’s a full custom message; I disabled the phone company’s pre-greeting. I have also known people that have left 5 seconds after saying hello on their greeting.
Unless you get some OOB signaling somehow that says the call was redirected to voicemail, then your methods of detection will only be “so-so”. The only real reliable detection I’ve seen are auto-dialers detecting my PBX’s IVR; but all it takes is just a little delay to get one ring in there and they’re fooled by the fact it immediately auto answer.
I’m gathering they want detection immediately to determine how to handle the call. Waiting for a beep would, at the very least, let the system reset the message; but it wouldn’t help at the start.