npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@vicistack/vicidial-voicemail-drop

v1.0.0

Published

VICIdial Voicemail Drops: The Setup Nobody Explains Properly — ViciStack call center engineering guide

Readme

VICIdial Voicemail Drops: The Setup Nobody Explains Properly

Voicemail drop is one of the most powerful and most misunderstood features in VICIdial. Done correctly, it turns answering machine contacts from dead weight into a marketing touchpoint — a pre-recorded message plays on the prospect's voicemail without consuming agent time. Done incorrectly, it violates FCC regulations, wastes list records, and can result in fines that dwarf your entire campaign budget. This guide covers the technical configuration, compliance framework, and per-campaign strategy for voicemail drops in VICIdial. If you're running 25+ agents and not using voicemail drops effectively, you're leaving a significant number of callbacks on the table. ## How Voicemail Drop Works in VICIdial The voicemail drop process relies on Answering Machine Detection (AMD) to identify when a call reaches a voicemail system rather than a live person. Here's the flow: 1. Dialer places the call — VICIdial's adaptive dialer sends the call through Asterisk to the carrier. 2. Call is answered — The remote side picks up (could be human or machine). 3. AMD analyzes the audio — Asterisk's AMD application listens to the first few seconds of audio and classifies the answer as HUMAN or MACHINE. 4. If MACHINE → voicemail drop — The system plays a pre-recorded audio file and hangs up. No agent is involved. 5. If HUMAN → route to agent — The call bridges to an available agent as normal. The critical component is AMD accuracy. A false positive (human classified as machine) means a live person hears your voicemail message and the agent never connects — that's a dropped live contact. A false negative (machine classified as human) means an agent gets connected to a voicemail greeting and wastes 15-30 seconds before manually dispositioning. ### VICIdial AMD Settings AMD is configured at the campaign level under Campaign Settings > Answering Machine Detection. Key settings: | Setting | Description | Default | |---------|-------------|---------| | amd_send_to_vmx | Send AMD-detected machines to voicemail drop | N | | amd_type | AMD method: AMD (Asterisk native) or CPD (Call Progress Detection) | AMD | | amd_agent_route_options | What to do with AMD results | NONE | | campaign_vdad_exten | Extension to route AMD machines to | 8369 | The campaign_vdad_exten is where the voicemail drop magic happens. When AMD detects a machine, it routes the call to this extension. In the Asterisk dialplan, this extension plays the voicemail drop audio file. ## Audio File Requirements and Configuration ### Recording the Voicemail Drop Message Your voicemail drop message needs to accomplish several things in 20-30 seconds: 1. Identify the caller — FCC requires this for prerecorded messages 2. State the purpose — Brief reason for the call 3. Provide a callback mechanism — Phone number or website 4. Sound natural — Not robotic, not rushed Example script for an insurance campaign: > "Hi, this is [agent name] calling from [company name] about the insurance information you requested. I wanted to make sure you got everything you needed. Give me a call back at [number] at your convenience, or visit [website]. Thanks, and have a great day." Record as a WAV file (8kHz, 16-bit, mono — Asterisk's native format): bash # Convert from any format to Asterisk-compatible WAV sox input_message.mp3 -r 8000 -c 1 -b 16 vm_drop_insurance.wav # Place in Asterisk sounds directory cp vm_drop_insurance.wav /var/lib/asterisk/sounds/ # Verify the file is readable asterisk -rx "core show file formats" | grep wav ### Multiple Audio Files for Different Campaigns Each campaign can have its own voicemail drop message. This is essential when running multiple verticals — a solar voicemail should not reference insurance. Store files with a clear naming convention: /var/lib/asterisk/sounds/vm_drop_insurance_medicare.wav /var/lib/asterisk/sounds/vm_drop_solar_residential.wav /var/lib/asterisk/sounds/vm_drop_political_gotv.wav /var/lib/asterisk/sounds/vm_drop_retention_callback.wav ### Dialplan Configuration for Voicemail Drop The voicemail drop plays through a custom Asterisk dialplan context. The standard VICIdial installation includes a framework for this, but you'll need to customize it for your audio files. In your Asterisk extensions configuration (typically extensions_custom.conf or within VICIdial's generated dialplan): ; Voicemail drop context for SALESCAMP [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() ; Voicemail drop context for SOLARCAMP [vm-drop-solarcamp] exten => s,1,Answer() exten => s,n,Wait(1) exten => s,n,Playback(vm_drop_solar_residential) exten => s,n,Wait(1) exten => s,n,Hangup() The Wait(1) before playback is important — it gives the voicemail system time to start recording after its beep. Without it, the first second of your message gets cut off. ### VICIdial Campaign Configuration for AMD + Voicemail Drop Configure the campaign to use AMD and route machines to your voicemail drop context: sql UPDATE vicidial_campaigns SET amd_send_to_vmx = 'Y', amd_type = 'AMD', campaign_vdad_exten = '8369', amd_agent_route_options = 'AMD' WHERE campaign_id = 'SALESCAMP'; In VICIdial's admin interface, this corresponds to: 1. Go to Campaigns > [Your Campaign] > Detail View 2. Set AMD Send To VMX: Y 3. Set AMD Type: AMD 4. Set Answering Machine Message: Select your audio file from the system recordings You can also use VICIdial's built-in audio store by uploading the recording through Admin > Audio Store and referencing it by the recording ID. ## AMD Integration for Accurate Drops AMD accuracy determines whether voicemail drop is an asset or a liability. The default Asterisk AMD settings are tuned for American English telephone greetings, but they're far from perfect out of the box. ### Understanding AMD Parameters Asterisk's AMD module analyzes audio patterns based on these parameters (set in amd.conf): ini ; /etc/asterisk/amd.conf [general] initial_silence = 2500 ; Max silence before classifying as MACHINE (ms) greeting = 1500 ; Max greeting length before classifying as MACHINE (ms) after_greeting_silence = 800 ; Silence after greeting to confirm MACHINE (ms) total_analysis_time = 5000 ; Max total time for AMD analysis (ms) min_word_length = 100 ; Minimum duration of a "word" (ms) between_words_silence = 50 ; Max silence between words before end-of-greeting (ms) maximum_number_of_words = 3 ; Max words before classifying as MACHINE silence_threshold = 256 ; Audio level threshold for silence detection maximum_word_length = 5000 ; Maximum single word duration (ms) ### How AMD Decides The logic is roughly: 1. Initial silence — If there's silence for initial_silence ms after the call is answered, it's likely a machine (voicemail systems have a brief pause before the greeting). 2. Word count — If more than maximum_number_of_words words are spoken without a long pause, it's a voicemail greeting (humans typically say "hello" and wait). 3. Greeting length — If continuous speech exceeds greeting ms, it's a machine playing a recorded message. 4. After-greeting silence — After speech stops, if silence exceeds after_greeting_silence ms, it confirms a machine (the beep/recording period). ### Tuning AMD for Your Environment The defaults work reasonably well for standard American voicemail, but specific adjustments can improve accuracy significantly. Reducing False Positives (Humans Classified as Machines): False positives are the more dangerous error — you lose a live connection. They happen when a person answers with a long greeting ("Hello, this is John Smith, who's calling?") that exceeds the word count or greeting length threshold. ini ; More tolerant settings — reduces false positives greeting = 2000 ; Allow longer greetings before machine classification maximum_number_of_words = 5 ; More words before machine classification total_analysis_time = 5500 ; More time for analysis The tradeoff: more false negatives (machines routed to agents). But an agent can disposition a voicemail in 5 seconds; a lost live connection is gone forever. Reducing False Negatives (Machines Classified as Humans): If agents are constantly getting connected to voicemail greetings, tighten the thresholds: ini ; Stricter settings — reduces false negatives greeting = 1200 maximum_number_of_words = 2 initial_silence = 2000 The tradeoff: more false positives. This is only appropriate when you're confident your list has very few live answers (e.g., heavily recycled aged lists where 80%+ go to voicemail). ### Testing AMD Accuracy Measure your AMD accuracy over a sample period: sql -- Compare AMD classification with agent disposition -- Agents who get connected should disposition AM (answering machine) -- if they hear a voicemail greeting SELECT DATE(call_date) AS day, COUNT(*) AS total_calls, SUM(CASE WHEN status = 'AA' THEN 1 ELSE 0 END) AS amd_machine, SUM(CASE WHEN status = 'AM' THEN 1 ELSE 0 END) AS agent_marked_machine, SUM(CASE WHEN status = 'AL' THEN 1 ELSE 0 END) AS amd_live, ROUND( SUM(CASE WHEN status = 'AM' THEN 1 ELSE 0 END) * 100.0 / NULLIF(SUM(CASE WHEN status IN ('AA','AL','AM') THEN 1 ELSE 0 END), 0), 1 ) AS agent_machine_pct FROM vicidial_log WHERE call_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND campaign_id = 'SALESCAMP' GROUP BY DATE(call_date); If agent_machine_pct is high (agents are frequently marking calls as answering machines that AMD sent to them as live), your AMD is producing too many false negatives. If your amd_machine count is disproportionately high relative to industry norms (typically 20-40% of answered calls), you may have too many false positives. A good target: AMD accuracy of 85%+ for machine detection, with false positive rate under 5%. ## FCC/TCPA Compliance Considerations Voicemail drops exist in a legal gray area that has become less gray and more regulated over time. The compliance landscape as of 2026: ### The Core Question: Is a Voicemail Drop a "Call"? The FCC has ruled that leaving a prerecorded voicemail constitutes a "call" under the TCPA. This means: 1. Prior express consent is required for non-emergency prerecorded messages to residential lines 2. Prior express written consent is required for prerecorded telemarketing messages to cell phones 3. The National Do Not Call Registry applies 4. Identification requirements apply — the message must identify the caller and provide a callback number ### Consent Requirements by Scenario | Scenario | Consent Needed | Notes | |----------|---------------|-------| | B2C marketing to cell phone | Prior express written consent | Web form opt-in qualifies | | B2C marketing to landline | Prior express consent (verbal OK) | Must have documentation | | B2B to business line | Established business relationship exemption may apply | Verify per state | | Existing customer relationship | Prior consent likely exists | Check original agreement | | Political campaign | Exempt from many TCPA rules | Still needs caller ID | | Debt collection | FDCPA overlays apply | Consult compliance counsel | ### Safe Harbor Considerations for Dropped Calls When AMD fails and a live call is dropped (no agent available), the dropped call safe harbor requires: 1. A prerecorded message plays within 2 seconds of the person's greeting 2. The message identifies the caller and provides a callback number 3. The call is disconnected within 2 seconds of the message completing This is distinct from voicemail drop — safe harbor applies to live answer drops, while voicemail drop applies to machine-detected calls. Configure both: sql -- Safe harbor for dropped live calls UPDATE vicidial_campaigns SET drop_action = 'AUDIO', safe_harbor_audio = 'safe_harbor_msg', safe_harbor_exten = '8300' WHERE campaign_id = 'SALESCAMP'; ### State-Specific Requirements Several states have additional restrictions beyond federal TCPA requirements: - California (CCPA): Additional consent and disclosure requirements - Florida: Stricter prerecorded message rules; requires prior express written consent for most prerecorded calls - New York: Separate telemarketing registration and bond requirements - Indiana, Kentucky, Louisiana, North Dakota, Wyoming: Various additional prerecorded message restrictions If you're calling nationally, your voicemail drop message and consent documentation must comply with the strictest state in your calling area. ### Practical Compliance Checklist Before enabling voicemail drops on any campaign: - [ ] Verify prior express written consent exists for all leads (web form, signed agreement) - [ ] Scrub against the National DNC Registry (updated within 31 days) - [ ] Scrub against your internal DNC list - [ ] Confirm voicemail drop message includes caller identity and callback number - [ ] Verify message does not exceed 60 seconds (shorter is better) - [ ] Document AMD accuracy testing results - [ ] Review state-specific requirements for all states in your calling area - [ ] Configure safe harbor message separately for live answer drops - [ ] Set up call recording for compliance documentation ## Message Blasting


Read the full article

About

Built by ViciStack — enterprise VoIP and call center infrastructure.

License

MIT