Before you start
- VICIdial with Asterisk 13 or newer (ViciBox and scratch installs both work)
- Root shell on each dialer (every server that places outbound calls for the campaigns you'll use)
- Python 3.6 or newer (preinstalled on ViciBox, AlmaLinux and Rocky)
- Outbound HTTPS from the dialer to
api.amdelete.comandamdelete.com
1. Get your install command
In the console, open Installations and click Get the install command. You get one line, made for your account:
curl -fsSL https://amdelete.com/install.sh | sudo bash -s -- --code ams_…
The same command works on up to 10 dialers for 24 hours, so a whole cluster takes one copy. There are no API keys to copy: each dialer exchanges the code for its own keys. Account admins get an email whenever a dialer connects. When you've finished, click I'm done: turn it off. Dialers already installed keep working.
2. Run it on each dialer
Paste the command as root on every server that places outbound calls for your AMDelete campaigns. In order, the installer:
- runs a read-only preflight (Asterisk, VICIdial, Python, dialplan shape, route collisions, clock, network latency);
- connects the dialer to your account over HTTPS. It sends the dialer's profile and receives keys made for this dialer: a classify key, an unbilled test key and a signing secret. They are tied to the dialer's public address and written only to root-readable files in
/etc/amdelete/. The dialer appears in your console under its hostname; - backs up everything it will touch to
/var/backups/amdelete/; - installs two AGI scripts, the
extensions-de-amdelete.confdialplan include and/etc/amdelete/, then reloads the dialplan; - runs a self-test call through the real dialplan (free);
- starts the
amdelete-agenttimer, which reports health to your console every minute.
The dialer now appears as Healthy in the console. No calls use AMDelete yet. Running the command again on the same dialer re-installs it and replaces its keys.
Reading the script first
curl -fsSLo install.sh https://amdelete.com/install.sh less install.sh sudo bash install.sh --code ams_…
It's a short shell script. It downloads the signed AMDelete kit, checks the kit's SHA-256 against the value printed inside the script, and hands over to amdelete-ctl. It passes the code in a file only root can read, and deletes that file when it finishes.
3. Switch a campaign
sudo amdelete-ctl configure-vicidial --campaign SALES1
This adds AMDelete's statuses (ADMAC, ADVM…) and its status map to VICIdial. It shows you what it will add and changes nothing until you re-run it with --yes. It refuses if a status or map with the same name already means something else. It never edits the campaign itself: it prints the two campaign settings to change in VICIdial's admin screens, and your console's page for each dialer shows them too.
4. Watch, then widen
Give the campaign a day. Analytics → What your agents found compares it with your campaigns still on VICIdial AMD, from your agents' own dispositions. Then switch more campaigns the same way.
What your dialer reports
Besides the call audio it sends for classification, the agent on your dialer reports:
| What | When | Contains |
|---|---|---|
| Health | Every minute | Check results, routing switches, campaigns on AMDelete routes, and hourly decision counts and timings |
| Dialer profile | At install, then daily | CPU, memory and load; OS, Asterisk and VICIdial versions; VICIdial AMD settings; counts of servers, agents and campaigns; settings of campaigns on an AMD route; carrier protocols and codecs |
| Call outcomes | Every 5 minutes, about 30 minutes after each call | Per AMDelete call: our decision, whether an agent took it, VICIdial's meaning of the disposition (human answered, customer contact, answering machine), a call-length range and who hung up |
| VICIdial AMD counts | Hourly | On your campaigns still using VICIdial AMD: how many calls it passed or closed, and what agents found on the ones it passed |
None of it carries call ids, phone numbers, lead or list data, agent names, carrier hosts or credentials. Calls are identified only by the one-way hash the service already keeps for billing. Look before it's sent:
sudo amdelete-ctl profile # the profile, exactly as sent sudo amdelete-ctl outcomes preview # the next batch of call outcomes sudo amdelete-ctl outcomes off # stop outcome reporting on this dialer
An account owner can also turn outcome reporting off for every dialer in Settings. Either switch stops it at the next report, and calls from a period when it was off are never sent later.
Turning it off
sudo amdelete-ctl kill # every call back to VICIdial AMD, now sudo amdelete-ctl resume # undo sudo amdelete-ctl uninstall # switch campaigns back to their previous AMD first
kill takes effect on the next call with no dialplan reload. uninstall refuses while a campaign still uses AMDelete, or while AMDelete calls are in progress. It removes only what AMDelete added: its files and its one include line, never the rest of your dialplan.
If a preflight check fails
Run sudo amdelete-ctl preflight again at any time; it only reads. Blockers stop the install, warnings don't.
| Check | Kind | What to do |
|---|---|---|
| Running as root | Blocker | Run the installer with sudo. |
| Asterisk 13 or newer | Blocker | Start Asterisk (systemctl start asterisk), or upgrade it if it's older than 13. |
| VICIdial installed | Blocker | Run on a VICIdial dialer: the installer reads /etc/astguiclient.conf to find the server and database. |
| Local fallback is complete | Blocker | By default, route 8369 must be stock VICIdial AMD (call_log, then AMD()). To use another fallback, define both precheck and postcheck in a customer-owned [de-amdelete-fallback] context. AMDelete reads that context locally and never creates, reports or changes its destination. |
| A free extension for AMDelete's route | Blocker | The installer picks an extension nothing in your dialplan or campaigns uses. This fails only if every candidate is taken; contact support. |
| No unloaded dialplan edits | Blocker | Someone edited the dialplan files since Asterisk last loaded them. Installing reloads the dialplan, which would apply those edits too, so reload or revert them yourself first. |
| No AMDelete setup from another installer | Blocker | /etc/amdelete already holds a configuration the installer didn't create. Contact support; it won't overwrite it. |
| AMDelete's file paths are free | Blocker | Another product's file sits where AMDelete would write. The installer lists it and leaves it alone. |
| Clock within a minute of the console | Blocker over 5 minutes | Enable time sync (chronyd or ntpd). Requests from the dialer are signed with a timestamp. |
| Console reachable | Blocker | Allow outbound HTTPS to amdelete.com through any firewall or proxy. |
| VICIdial database readable | Warning | Campaign checks and cluster alerts need read access. Install the mysql client, or check the credentials in astguiclient.conf. |
| AMDelete service reachable | Warning | Allow outbound HTTPS to api.amdelete.com. A slow path (p95 over 150 ms) works but delays decisions. |
| At least 1 GB free in /var/log | Warning | Free space so decision logs and logrotate keep working. |
| Self-test prompt available | Warning | Install Asterisk's core sounds (demo-congrats) so the self-test has audio to play. |
Still stuck? Run sudo amdelete-ctl support-bundle and send the file it prints to support. It holds versions, the dialer profile, check results and the last 500 decision-log lines (Asterisk call ids, outcomes and timings). It never contains call audio, phone numbers or keys.