Vicidial amd.conf Settings: the Values That Matter in Production
Most "best amd.conf settings" posts copy the same block of numbers without explaining what any of them measure or when the number is wrong. This one goes the other way: each variable gets its stock default, the range that holds up on production Vicidial servers, and the specific failure you invite by leaving it at default.
The file lives at /etc/asterisk/amd.conf, and every change applies to new calls after module reload app_amd — no restart needed.
Context first, because it decides which values are right. Asterisk's app_amd does not listen for words; it measures timing — silence at the start of the answer, the length of the first audio burst, gaps between bursts — and fires one of three verdicts into the AMDSTATUS variable: HUMAN, MACHINE, or NOTSURE. Vicidial's campaign layer then acts on the verdict with drop_call_seconds and amd_send_message.
The values that matter in production
| Variable | Default | Production range | Wrong value causes |
|---|---|---|---|
| initial_silence | 2500 | 1500–3000 | Too low: cell latency scores as machine |
| greeting | 1500 | 1000–1800 | Too high: voicemail intros score human |
| after_greeting_silence | 800 | 800–1200 | Too low: human hesitation fires machine |
| total_analysis_time | 5000 | 3000–5000 | Too high: NOTSURE pileup, agent dead air |
| maximum_number_of_words | 3 | 4–6 | At 3: every business answer scores machine |
| maximum_word_length | 3200 | 2200–3200 | Too high: single long greetings never resolve |
| min_word_length | 100 | 100 | Rarely needs touching; noise filter only |
| between_words_silence | 50 | 50–80 | Too high: word counts inflate, machines look human |
| silence_threshold | 256 | 256 | Only for dead-air misdetections on quiet lines |
All durations are milliseconds. Four of these nine do most of the damage on a stock install.
The four that cause most problems
maximum_number_of_words: default 3 — the default is wrong
The heuristic says a human greets briefly and a machine monologues. Today the assumption fails twice: business numbers route to receptionists who answer with six to ten words, and mobile users increasingly answer with a full phrase in a single breath. At the default of 3, both classify as machines and your dialer hangs up on paying prospects.
Set it to 5 for consumer lists, 6 with any business presence. Push past 6 and scripted voicemail greetings start leaking through to agents. The cost is asymmetric: a value one too low drops revenue, one too high wastes a few agent seconds. When in doubt, round up.
after_greeting_silence: default 800 ms — where humans get misfired
Humans pause inside their greetings — "hello?… yeah?" — and an 800 ms window counts that hesitation as the gap before a machine's outgoing message. The verdict lands instantly, the call drops, and nothing in your abandon statistics shows it, because AMD drops are not abandons.
Stay at 800 ms for tight consumer lists; move to 1000–1200 ms when a recording audit finds humans under MACHINE dispositions. Every millisecond you add also delays machine drops — this is a see-saw, not a free fix.
initial_silence: default 2500 ms — mostly right, dangerously cut
This is the ceiling on leading silence before Asterisk declares a machine. It interacts with something amd.conf cannot see: handset and carrier latency. A cell answer can sit silent for 800–1200 ms before the human's "hello" traverses the network. Operators chasing faster drops routinely cut this to 1000 ms or less, and cell-heavy lists quietly lose 2–4% of real contacts to it.
Never below 1500 ms; 2500 remains the right answer for most mixed lists. If leading silence is genuinely a problem, the cause is usually carrier lateness — answer supervision returned before audio bridges — and that is a routing issue wearing an amd.conf costume.
total_analysis_time: default 5000 ms — the NOTSURE ceiling
Anything unresolved by this limit returns NOTSURE. A live human often hangs up on silence before five seconds elapse, so long windows produce a quiet class of calls where the human left before the verdict arrived.
Run 3000–4000 ms in production. Below 3000 you manufacture NOTSUREs on every slow answer; at 5000 you pay the timeout in agent dead air. And decide what happens to the NOTSUREs — this variable is where most of them are born.
The five you set once
-
greetingcaps the first audio burst at 1000–1800 ms; below that, human greetings classify as machines, above it, voicemail intros sneak through. -
maximum_word_length(2200–3200 ms) bounds how long a single "word" can run — keep it comfortably insidetotal_analysis_timeor the arithmetic can never resolve. -
min_word_lengthstays at 100 ms; it exists to ignore line noise. -
between_words_silencestays near 50 ms — raising it merges adjacent bursts and inflates word counts until machines look human. -
silence_thresholdstays at 256 unless recordings prove your carrier audio is genuinely quiet.
A production starting point
For a mixed consumer list dialed through standard carriers:
initial_silence=2500
greeting=1500
after_greeting_silence=1000
total_analysis_time=4000
maximum_number_of_words=5
maximum_word_length=2800
Pair it with campaign settings drop_call_seconds=7 and amd_send_message=HANGUP. Then earn the right to call it done: pull 50 random MACHINE-dispositioned recordings, listen to the first 10 seconds, and count the humans. More than 3 of 50 means the block above is wrong for your list, whatever any guide says — including this one.
The ceiling you cannot tune past
Everything above optimizes one method: guessing from silence gaps and word timing. Carrier false-answer supervision defeats it completely — the announcement audio really contains speech, and no threshold separates it from a prospect saying hello. Across roughly 2.3 billion answered calls a month on the AMDY network, about 12.5% of answers are live humans, 73% machines, and 14% carrier false-answers — that 14% is pure guesswork for timing AMD.
Acoustic AI detection changes the input instead of the threshold. AMDY classifies the acoustic signature of the answer audio and returns a decision in 1/8 of a second at 99% accuracy — no amd.conf, no per-list re-tuning, FAS classified outright. It installs alongside Vicidial without touching your dial plan.
The full version, with the troubleshooting links and the NOTSURE disposition strategy, lives on the AMDY blog.
Top comments (0)