How VICIdial voicemail drop works
Voicemail drop is simple in idea. When the dialer reaches an answering machine, instead of hanging up it plays a short recorded message into the voicemail box. Nobody on your team has to listen to the greeting or wait for the beep. Agents only take calls answered by people.
In VICIdial it is built on top of answering machine detection. The chain looks like this:
- The campaign has AMD on, so its Routing Extension points to the AMD extension,
8369by default. - When a call is answered, that extension runs Asterisk's
AMD(), which setsAMDSTATUSto HUMAN, MACHINE, NOTSURE or HANGUP. VD_amd.agireadsAMDSTATUSand routes the call.- A person goes to an agent. A machine is either hung up with the AA status, or, when the campaign's AMD send to VM exten setting is on, sent to the campaign's answering machine message so the recording plays.
So voicemail drop needs three things in the campaign: AMD on through the Routing Extension, AMD send to VM exten turned on, and a message recording set as the campaign's answering machine message. Field names and options vary a little between VICIdial versions, so check the help text next to each field in your admin screen.
The important part is step 2. Everything downstream trusts the AMD verdict completely. If AMD says MACHINE, the message plays, whoever is on the line.
Why bad AMD ruins voicemail drop
Every AMD makes two kinds of mistake. With voicemail drop on, both get more expensive:
| AMD error | Without voicemail drop | With voicemail drop |
|---|---|---|
| Person judged a machine | Silent hang-up | The person hears your recording meant for a voicemail box |
| Machine judged a person | Agent hears a greeting | Agent hears a greeting and no message is left, so you lose the drop you were paying for |
| NOTSURE | Long silence, then whichever path your script uses | Long silence, then either an agent or a recording played to an unclear caller |
Playing messages to live people
This is the error that hurts most. A person answers, says "Hello? Hello?", hears a pause and then a recording that says "Sorry we missed you". To them it is a robocall. They hang up, and many will never answer your number again. You paid to reach that person and lost them at the moment they picked up.
Timing-based AMD makes this error on predictable kinds of answer. Someone who pauses before speaking trips the initial silence rule. Someone who says "Hello, who's calling please?" in one breath trips the word limit. Someone on a noisy line may never leave a clean silence. All of them become MACHINE, and all of them get the message.
Missing machines
The opposite error is quieter but adds up. A short personal greeting, such as "Hi, it's Sam, leave a message", fits the timing pattern of a person. It goes to an agent, who hears the greeting and has to hang up or leave a message by hand. Recorded "Hello?" robots and call screening assistants are built to sound human and pass timing rules too.
If either problem sounds familiar, our guide to VICIdial AMD not working goes through the common causes, and AMD NOTSURE explained covers the unclear calls.
Timing the message after the greeting
AMD decides in the first seconds after answer. Most voicemail greetings run much longer and end with a beep. If the message starts as soon as AMD says MACHINE, it plays over the greeting, and the voicemail box records only the second half. The contact hears a message that starts mid-sentence.
The fix is to wait for the greeting to finish before playing. Asterisk has a WaitForSilence() application for this: it waits until it hears a set amount of silence, with a timeout so it never waits forever. Newer VICIdial versions expose this as a campaign option for the answering machine message, often labelled WaitForSilence Options; check whether your version has it and read its help text for the exact format.
If you build a custom message extension instead, the idea looks like this. Treat it as an example to adapt, not a drop-in file:
; example: wait for 2 s of silence (up to 20 s), then play the message
exten => vmdrop,1,WaitForSilence(2000,1,20)
exten => vmdrop,n,Playback(your-vm-message)
exten => vmdrop,n,Hangup()
Some practical points on timing:
- Too short a silence and the message starts in a pause inside the greeting.
- Too long a silence and some voicemail systems stop recording or hang up before your message starts.
- Always set a timeout, so a greeting over background noise does not hold the line open.
- Test on real greetings. Call a few of your team's own mobiles and landlines with voicemail on and listen to what the box recorded.
Writing a message that works
Once timing is right, the message itself matters. Keep it short, say who is calling and why, and give a clear way to call back. Record it in a quiet room at a normal volume. Long messages get cut off by some voicemail systems, and messages with music or effects are harder to understand on a phone line.
Test it the same way you tested the timing: leave it on a few real voicemail boxes and listen back. What sounds fine in a studio can sound muddy after a phone codec.
Compliance notes
Voicemail drop touches several kinds of rules, and they differ by country, state and type of call. A few points to raise with your counsel:
- Abandoned calls. Under the US Telemarketing Sales Rule and FCC rules, a call is abandoned if the person is not connected to a live agent within 2 seconds of their completed greeting, and abandoned calls are limited to 3% of answered calls per campaign per 30 days. A message played to a live person because AMD was wrong is not a connection to an agent.
- Silent calls. The UK regulator Ofcom has similar rules on silent and abandoned calls.
- Prerecorded messages. Recorded messages can fall under their own rules on consent and caller identification in many places.
The common thread is that the AMD error rate on live people is a compliance number, not only a sales number. Every person judged a machine is a person who heard a recording instead of an agent.
How better AMD fixes voicemail drop
You cannot fix voicemail drop by tuning the message. You fix it by sending the right calls to it. nomoVM replaces only the detection step in VICIdial and leaves the rest of the chain alone:
- A copy of your AMD extension,
8370, runs one script,nomovm.agi.py, which streams the first seconds of each answered call to nomoVM and setsAMDSTATUSto HUMAN or MACHINE. - The same
VD_amd.agiruns next, so AMD send to VM exten and your message settings work exactly as before. - Most calls are decided about 2 seconds after answer, and only unclear calls listen up to 3.2 seconds. There is no NOTSURE result.
- Call screening assistants come back as MACHINE with the cause SCREENING, and recorded "Hello?" robots as machines, and the dashboard shows each cause separately.
- If the key is wrong, the plan limit is reached or the service is unreachable, nomoVM returns FALLBACK before any audio is used and Asterisk's own
AMD()handles that call. Fallback calls are never billed.
On 400 real outbound calls checked by a person, none of them used to build nomoVM, it sent 94.9% of live people to agents, and 88% of calls sent to agents were live people. We publish both numbers on the accuracy page. For voicemail drop, the first number is the one that matters most: it is how many people did not hear a recording meant for a machine.
There is no additional infrastructure required: no new servers, no hardware and no carrier change. Setup takes about 10 minutes and rollback is one setting. See VICIdial AI AMD setup in 10 minutes or the VICIdial AMD page, and compare plans on pricing.
Ready to stop playing voicemail messages to people? Start free with 30,000 calls a month and follow the VICIdial AMD setup guide on one voicemail drop campaign.
Frequently asked questions
How does voicemail drop work in VICIdial?
With AMD on, answered calls go to the AMD extension, which decides whether a person or a machine answered. VD_amd.agi then routes the call: people go to agents, and with AMD send to VM exten turned on, machines are sent to the campaign's answering machine message instead of being hung up. The message plays into the voicemail box with no agent involved.
Why did my VICIdial voicemail message play to a live person?
Because AMD judged that person to be a machine. Timing-based AMD often does this with people who pause after saying hello or speak several words quickly. The person hears a recording instead of an agent, which loses the lead and can count against your abandoned call rate.
Why are my voicemail messages cut off at the start?
The message probably starts while the greeting is still playing. AMD decides in the first seconds, but most greetings run longer and end with a beep. Wait for the silence after the greeting before the message plays, using your version's WaitForSilence options or a custom message extension.
Can I use nomoVM with VICIdial voicemail drop?
Yes. nomoVM sets the same AMDSTATUS variable before the same VD_amd.agi, so AMD send to VM exten and your message settings work exactly as before. You only change the campaign's Routing Extension from 8369 to 8370.
Is voicemail drop legal?
It depends on where you call, who you call and what the message says, and prerecorded messages can fall under their own rules. Playing a message to a live person because AMD was wrong can also count as an abandoned call under US rules. This is not legal advice; check with counsel.
What happens to call screening assistants with voicemail drop?
nomoVM reports Google Call Screen and iPhone call screening with the cause SCREENING, and AMDSTATUS is MACHINE for them, so VD_amd.agi treats them like other machines. The dashboard shows them separately so you can see how many calls they are.