Put it in the path in an afternoon.
AMD Cop listens to the first moment of every answered call and tells your dialer whether it reached a person or a recording. It runs on your own servers. These pages cover installing it, pointing a campaign at it, reading what it sends back, and putting everything the way it was.
It decides who answered.
Your dialer places a call and the carrier reports it answered. From that moment your dialer has about a second to work out whether a person said hello or an answering machine started its greeting. Get it wrong one way and an agent sits through a recording. Get it wrong the other way and you drop a live person who wanted to talk.
Stock detection in Asterisk makes that decision with a stopwatch. It measures how long
the silence ran, how long the greeting ran and how many words it heard, then compares each
against a fixed threshold. It never listens to the audio itself. The default configuration
waits up to 5000 ms before it commits, which is the total_analysis_time value
shipped in amd.conf.
AMD Cop listens to the audio instead. It returns the same verdict your dialer already understands, so nothing downstream has to be rewritten. The design targets are 99% correct verdicts and a decision in about 100 ms. Judge both on your own traffic before you trust them with all of it.
99% and 100 ms are design targets, not measured results.
Between the carrier and the headset.
AMD Cop is a service on your network. It is not a proxy, it does not sit in the media path for the life of the call, and it does not need its own hardware. Your dialer hands it the answered call exactly the way it hands calls to its own detector today.
- CarrierThe trunk delivers the answered call
- Your dialerVICIdial, Asterisk, whatever you run
- AMD CopPerson or recording, decided here
- Desk phoneOr softphone, or SIP endpoint
- Your agentOnly ever hears a person
- The carrier delivers an answered call Your dialer sees the answer supervision it always saw. Nothing about your trunks changes.
- Your dialer routes the call to a detection extension On a stock VICIdial install that extension is 8369, which runs Asterisk's own detector. AMD Cop goes on 8370.
- AMD Cop listens to the opening audio Nothing is played to the called party while the call is being judged. They hear the same silence they hear now, for less time.
- Your dialer acts on the verdict People go to an agent. Recordings are disposed of, or get your message, whichever the campaign is set to do.
What comes back.
AMD Cop sets the same channel variable stock Asterisk detection sets,
AMDSTATUS, with the same four values. Your dialplan logic, your dispositions
and your reports keep working without an edit.
| Status | What it means | What a floor usually does with it |
|---|---|---|
| HUMAN | A person answered. | Bridge to an agent. |
| MACHINE | A recorded greeting is playing. | Drop the call, or play your message and drop. |
| NOTSURE | The audio was not conclusive inside the analysis window. | Treat it as a person. That is the safe direction to err in. |
| HANGUP | The far end went away during analysis. | Dispose and move on to the next number. |
A second variable, AMDCAUSE, carries the short reason behind the verdict.
It is there for logs and for tuning. Nothing needs to read it.
What you need in front of you.
- A Linux server you control. It can be the dialer itself or a separate box on the same network.
- Root or sudo on that server. The installer writes to
/usr/local/bin,/etcand/var/lib. - Network reach from the dialer to AMD Cop. If they share a host, that is loopback and there is nothing to open.
- Access to your dialplan. You are adding one extension.
- Access to campaign settings. You are changing one field on one campaign.
- No maintenance window. Installing the service and adding the extension change nothing until a campaign points at it.
The pattern is the same everywhere.
VICIdial is the worked example on these pages because it is the most common floor. The shape of the job does not change elsewhere. Add an extension, or a route, that hands the answered call to AMD Cop. Then point one campaign at it instead of the detector it uses now.
Asterisk, FreePBX, GoAutoDial and Issabel all use the Asterisk dialplan, so the dialplan snippet on the VICIdial page applies as written. FreeSWITCH and 3CX route differently, and the verdict comes back the same way. Ask us for the specific steps for your stack.