Integration

AI AMD for VICIdial: a drop-in alternative to the built-in detector

VM Hunter is an AI answering machine detection plugin for VICIdial. It replaces the dialer's tone-and-silence detector with one that listens to what the callee says, and returns a HUMAN or MACHINE verdict about two seconds after answer.

VICIdial's default AMD route (extension 8369) runs Asterisk's app_amd, which decides from silence lengths and word counts. It cannot tell a short "Hello?" from the start of a voicemail greeting, and it cannot recognise a carrier prompt or an iPhone call-screening message at all. On production traffic that shows up as live people hung up on and voicemails handed to agents.

VM Hunter transcribes the first two seconds of audio and decides from the words: voicemail wording, carrier prompts, IVRs, disconnected-number tones and call screening are each recognised and labelled. The VICIdial integration is a single EAGI script and one dialplan extension.

How the VICIdial AMD plugin works

  • Your campaign's AMD routing extension points at the VM Hunter extension (8370 in the docs) instead of VICIdial's default 8369.
  • On answer, Asterisk runs vmhunter.agi.py with EAGI, which gives the script the callee's audio.
  • The script streams the audio to VM Hunter and sets AMDSTATUS, AMDSTATUS_RAW and AMDCAUSE on the channel when the verdict arrives.
  • The dialplan hands the result to VICIdial's own VD_amd.agi, which drops the call on MACHINE and connects it on HUMAN, exactly as before.

Nothing in VICIdial's database, agent screens or reports changes. Setup is about 30 minutes; the commands are in the VICIdial integration guide, and the client source is on GitHub.

VICIdial built-in AMD vs VM Hunter

VICIdial built-in AMD (app_amd)VM Hunter
Decides fromSilence lengths, word counts, greeting lengthWhat is said in the first two seconds, plus tone and silence analysis
Carrier voicemail promptsOften counted as a long greeting, sometimes as a personRecognised by wording and labelled MACHINE
iPhone / Google call screeningNot recognised; usually passed to an agentLabelled CALLGUARD_PHRASE; route it as you choose
Disconnected numbersNot detectedSIT tones labelled DISCONNECT, so the lead can be retired
Calls with no audioReported as silenceLabelled separately, so trunk problems show in your logs
Audit trailNoneTranscript, reason and audio sample for every call in the portal
Tuningamd.conf timings per campaignNo tuning; rules are maintained centrally

What changes in your campaign

  • Fewer live people dropped. A person who says "Hello?" and waits is connected, including short and hesitant answers that timing-based detection reads as a machine.
  • Fewer voicemails reaching agents. Greetings that open like a person ("Hi, this is Mike...") are caught when the voicemail wording follows.
  • Screened calls become a choice. Calls answered by iPhone or Google call screening are labelled, so your dialplan can play a short intro and connect an agent instead of dropping them.
  • Disconnected numbers get their own disposition, so the lead is not recycled.
  • Trunk problems become visible. Calls that arrive with no audio are labelled as such; on some trunks that is 5 to 15% of answered calls.

Capacity and plans

Pricing is per call analysed, with the plan setting how many calls per second and concurrent channels your dialer can send. The free plan includes 5,000 calls a month and needs no card. Starter covers 3 million calls a month at 50 CPS and 550 channels. Details on the pricing page.

FAQ

Questions

Is VM Hunter a VICIdial AMD plugin or a separate system?

It is a small EAGI script that runs inside your VICIdial dialplan, in place of the built-in AMD. The detection itself runs on VM Hunter's servers. Your dialer streams the first seconds of audio and gets a verdict back on the same channel variables VICIdial already uses, so nothing else in VICIdial changes.

Does it work with my VICIdial version?

Any VICIdial on an Asterisk that supports EAGI, which VICIdial has shipped for years, including ViciBox installs and clustered setups. The script is plain Python 3 with one dependency.

What happens if VM Hunter cannot be reached?

The client has a 3-second connection timeout and a configurable fail-safe. By default a failed detection is treated as MACHINE so the call is dropped rather than left hanging; you can set it to HUMAN to connect the call instead.

Will it slow down my calls?

The verdict normally arrives about 2.3 seconds after answer, which is inside the window VICIdial's own AMD uses. The client stops streaming the moment the verdict arrives.

How do I compare it with VICIdial's built-in AMD?

Point one campaign at the VM Hunter extension and leave another on the default extension for a day, then compare the dispositions. Every VM Hunter call is logged with its transcript, reason and audio, so disputed verdicts can be checked by ear.

Run it next to VICIdial's AMD for a day

One campaign on the VM Hunter extension, one on the default. Compare the dispositions in the morning. The free plan covers it.