DEV Community

Jason Shouldice
Jason Shouldice

Posted on • Edited on • Originally published at vicistack.com

VICIdial Voicemail Drops: The Setup Nobody Explains Properly

Voicemail drop is one of VICIdial's most powerful features and also one of the most misunderstood. Done right, it turns answering machine contacts into marketing touchpoints without consuming agent time. Done wrong, it violates FCC rules and can generate fines that dwarf your campaign budget.

If you're running 25+ agents and not using voicemail drops, you're leaving callbacks on the table. Here's how it actually works.

The Basic Flow

  1. Dialer places the call
  2. Answering Machine Detection (AMD) analyzes the first few seconds of audio
  3. If AMD says MACHINE — a pre-recorded message plays, then hangup. No agent involved.
  4. If AMD says HUMAN — call routes to an available agent as normal.

The entire thing hinges on AMD accuracy. A false positive (human classified as machine) means a live person hears your voicemail and the agent never connects — that's a lost sale. A false negative (machine classified as human) means an agent wastes 15-30 seconds listening to someone's voicemail greeting before manually dispositioning.

Audio File Setup

Your voicemail drop message needs to hit four marks in 20-30 seconds:

  1. Identify the caller (FCC requires this)
  2. State the purpose briefly
  3. Provide a callback number or website
  4. Sound natural, not rushed or robotic

Record as WAV (8kHz, 16-bit, mono):

sox input_message.mp3 -r 8000 -c 1 -b 16 vm_drop_insurance.wav
cp vm_drop_insurance.wav /var/lib/asterisk/sounds/
Enter fullscreen mode Exit fullscreen mode

Each campaign should have its own message. A solar voicemail shouldn't reference insurance.

Dialplan Configuration

The voicemail drop plays through a custom Asterisk dialplan context:

[vm-drop-salescamp]
exten => s,1,Answer()
exten => s,n,Wait(1)
exten => s,n,Playback(vm_drop_insurance_medicare)
exten => s,n,Wait(1)
exten => s,n,Hangup()
Enter fullscreen mode Exit fullscreen mode

The Wait(1) before playback gives the voicemail system time to start recording after its beep. Without it, the first second of your message gets cut off.

Then enable AMD and voicemail drop on the campaign through VICIdial's admin interface: set AMD Send To VMX to Y, AMD Type to AMD, and select your audio file as the Answering Machine Message.

AMD Tuning for Voicemail Drops

The default Asterisk AMD settings in amd.conf work reasonably for standard American voicemail but aren't perfect out of the box.

To reduce false positives (the more dangerous error — you lose live connections):

greeting = 2000
maximum_number_of_words = 5
total_analysis_time = 5500
Enter fullscreen mode Exit fullscreen mode

To reduce false negatives (agents connected to voicemail greetings):

greeting = 1200
maximum_number_of_words = 2
initial_silence = 2000
Enter fullscreen mode Exit fullscreen mode

Target: 85%+ accuracy for machine detection with a false positive rate under 5%.

The Legal Reality

The FCC has ruled that leaving a prerecorded voicemail is a "call" under the TCPA. That means:

  • Prior express written consent required for prerecorded telemarketing messages to cell phones
  • National Do Not Call Registry applies
  • The message must identify the caller and provide a callback number
  • Safe harbor for dropped live calls is separate from voicemail drop

Before enabling voicemail drops: verify consent exists for all leads, scrub against DNC registries, confirm your message includes proper identification, and configure safe harbor separately for live answer drops.

Message Rotation

Leaving the same voicemail three times sounds robotic and tanks callback rates. Use dialplan logic to rotate between messages:

[vm-drop-rotation]
exten => s,1,Answer()
exten => s,n,Wait(1)
exten => s,n,Set(MSG=${RAND(1,3)})
exten => s,n,GotoIf($["${MSG}" = "1"]?msg1)
exten => s,n,GotoIf($["${MSG}" = "2"]?msg2)
exten => s,n,Goto(msg3)
exten => s,n(msg1),Playback(vm_drop_v1)
exten => s,n,Goto(done)
exten => s,n(msg2),Playback(vm_drop_v2)
exten => s,n,Goto(done)
exten => s,n(msg3),Playback(vm_drop_v3)
exten => s,n,Goto(done)
exten => s,n(done),Wait(1)
exten => s,n,Hangup()
Enter fullscreen mode Exit fullscreen mode

Measuring Results

Track callback rates — healthy voicemail drop campaigns see 2-5%. Below 1%, either your message needs work or your list quality is the bottleneck.

ViciStack handles AMD optimization, compliance review, message strategy, and ongoing monitoring for voicemail drops. $150/agent/month flat rate.

Originally published at https://vicistack.com/blog/vicidial-voicemail-drop/

Top comments (0)