Setup & Installation Problems
Use this guide if you've run the AMDY installer but it isn't working, no log entries appear, or every call is routed to an agent.
First-time install? Start with Install AMDY — standard AMD (or the official PDF). This page is for when something already broke.
Quickest check first
Before stepping through anything, run the one-shot install check. It confirms the AGI script is in place, the Python modules load, and the AMDY service is reachable — all in one command:
curl -s https://download.amdy.io/check-aiamd.sh | bash
If everything reports OK, your install is fine — your issue is probably in Connection problems or Detection accuracy. If the check fails, continue below.
What each check-aiamd.sh failure means
The check runs 8 sections. When it reports ✗ on a line, find that line in the table and follow the fix.
| Section | Failure | What it means | How to fix |
|---|---|---|---|
| 1. amd.py script | /var/lib/asterisk/agi-bin/amd.py not found |
The installer didn't finish, or ran on the wrong server | Re-run the installer one-liner for your OS (table below) |
| 1. amd.py script | NOT executable (chmod +x ...) |
File mode was clobbered (often by an editor or backup tool) | Run the exact command shown: chmod +x /var/lib/asterisk/agi-bin/amd.py |
| 1. amd.py script | syntax error: ... |
Python is too old, or the file was edited and saved with the wrong encoding/line endings | First, check Python version (next row). If 3.7+, redownload by re-running the installer |
| 2. System packages | python3 MISSING / pip3 MISSING |
Base packages weren't installed | Re-run the installer for your OS (it installs Python 3) |
| 2. System packages | mysql MISSING |
This server isn't the VICIdial DB server, or the mysql client wasn't installed | Run the check on your VICIdial telephony/DB server, not a remote box |
| 2. System packages | asterisk MISSING |
Asterisk isn't installed here — wrong server | Same as above — run on the dialer |
| 2. System packages | ⚠ python3 < 3.7 ... |
Default Python is 3.6 (Rocky/CentOS 8 default) — amd.py uses from __future__ import annotations which needs 3.7+ |
dnf install python38 python38-pip then make python3 point to it: alternatives --set python3 /usr/bin/python3.8 |
| 3. Python modules | import asterisk.agi FAILED — pip install pyst2 |
pyst2 (Asterisk AGI library) is missing |
pip3 install pyst2 |
| 3. Python modules | import mysql.connector FAILED |
MySQL Python driver missing | pip3 install mysql-connector-python |
| 3. Python modules | import websocket FAILED |
WebSocket client missing | pip3 install websocket-client (note the -client suffix — pip install websocket is wrong) |
| 3. Python modules | any other import X FAILED |
One of amd.py's declared imports isn't installed |
The error line tells you the exact pip install <name> command |
| 4. AMDY connectivity | api.amdy.io does not resolve |
DNS is broken on this server | Check /etc/resolv.conf has a working nameserver (e.g. 8.8.8.8 or your ISP's) |
| 4. AMDY connectivity | TCP <ip>:2700 unreachable for every IP |
Outbound port 2700 is blocked at your firewall or ISP | Open outbound TCP 2700 to all of 152.53.0.0/16, or at minimum to the IPs listed by dig A api.amdy.io. See Connection problems. |
| 4. AMDY connectivity | TCP <ip>:2700 unreachable for some IPs (others ✓) |
Your firewall has a partial allowlist that pre-dates AMDY's last IP rotation | Switch to ESTABLISHED,RELATED outbound rule + open the whole /16, so future rotations don't break you |
| 4. AMDY connectivity | ⚠ TCP download.amdy.io:443 unreachable |
Installer one-liners and proxy_check.py can't be downloaded |
Open outbound TCP 443 to download.amdy.io |
| 5. Vicidial campaigns | ✗ missing in container column |
The AMD_AGENT_OPT_<campaign> container doesn't exist for that campaign |
Create it in Admin → System Settings → Container Settings — name = AMD_AGENT_OPT_ + campaign name, type = AMD_AGENT_OPTIONS, entry = HUMAN,HUMAN |
| 5. Vicidial campaigns | entry shows something other than ✓ HUMAN,HUMAN |
The container entry has wrong contents, extra whitespace, or extra statuses | Edit the entry to exactly HUMAN,HUMAN — no quotes, no leading/trailing whitespace, no second line |
| 5. Vicidial campaigns | amd_enabled = ✗ |
AMD Agent Route Options is not ENABLED for that campaign |
Admin → Campaigns → (your campaign) — set AMD Agent Route Options = ENABLED, then Admin → Servers → Rebuild Config |
| 6. RTP port config | /etc/asterisk/rtp.conf not found |
Asterisk install is incomplete or non-standard | Re-run the installer; if the file lives elsewhere, this is an unusual deployment — contact support |
| 6. RTP port config | ⚠ non-default range |
RTP ports aren't the AMDY-expected 10000–20000 | Either change rtpstart/rtpend in /etc/asterisk/rtp.conf back to 10000/20000, or make sure your firewall opens your custom UDP range (next section) |
| 7. Firewall UDP | no UDP range open / no active firewall manager detected |
Inbound RTP audio will be silently dropped → all calls land in NO AUDIO |
Open inbound UDP 10000–20000 (or your custom range) on your firewall. firewalld: firewall-cmd --add-port=10000-20000/udp --permanent && firewall-cmd --reload |
| 8. RTP firewall service | no rtp-firewall service active + section 7 also ✗ |
Nothing is opening the RTP range dynamically and the static rule is also missing | Either open UDP 10000–20000 statically (above) or install the AMDY rtp-firewall helper — contact support |
If a fix above doesn't stick, take a screenshot of the full check-aiamd.sh output and send it to support (see Contacting support) — every line tells them where to look.
Re-run the installer for your system
If setup looks incomplete, re-run the one-liner that matches your server, as root:
| Your system | Command |
|---|---|
| Vicibox 9 / 10 / 11 / 12 | bash <(curl -s -k https://download.amdy.io/installamd.sh) |
| Vicibox 7 / 8 | bash <(curl -s -k https://download.amdy.io/installamd8.sh) |
| CentOS / AlmaLinux / Rocky | bash <(curl -s https://download.amdy.io/installamdcentos.sh) |
| Ubuntu / Debian | bash <(curl -s https://download.amdy.io/installamddebian.sh) |
| Press-1 campaigns (any system) | bash <(curl -s https://download.amdy.io/installamdpress1.sh) |
Symptom → fix
The script isn't running
- Check the AGI script is in place:
ls -la /var/lib/asterisk/agi-bin/amd.py - Make sure it's executable:
chmod +x /var/lib/asterisk/agi-bin/amd.py - Run it manually — it should start and wait silently for input (Ctrl+C to exit):
/var/lib/asterisk/agi-bin/amd.pyIf you get a Python error instead, it's a module problem — see below.
Module import errors
Check that the required components are installed:
python3 -c "import websocket, mysql.connector, asterisk.agi; print('All modules loaded successfully')"
If you see an ImportError, re-run the installer for your system (table above). It installs everything needed, including Python 3.
No log entries appear
Today's log file is /var/log/astguiclient/AMD_log<date>.txt. If it's empty or missing while a campaign is actively dialing:
1. In your campaign, set Routing Extension to 8370 (or 8371 for Press-1 campaigns).
2. Set AMD Agent Route Options to ENABLED.
3. Rebuild the telephony server config: Admin → Servers → Rebuild Config. This is the step most often missed — changes don't take effect without it.
4. Place a test call and check today's log file again.
Every call routes to an agent (machines reaching agents)
This is almost always the AMD agent-options container. Its name is AMD_AGENT_OPT_ followed by your campaign name — so a campaign called VAC uses the container AMD_AGENT_OPT_VAC, and yours will be named after your own campaign. Check it under Admin → System Settings → Container Settings:
| Field | Must be |
|---|---|
| Container Name | AMD_AGENT_OPT_ + your campaign name |
| Container Type | AMD_AGENT_OPTIONS |
| Container Entry | HUMAN,HUMAN |
The entry must be exactly HUMAN,HUMAN — no quotes, no extra spaces, no other status added. Anything else sends machines and dead air to your agents.
Also confirm AMD Type is set to AMD in the campaign.
Full VICIdial settings checklist
Admin → Campaigns → (your campaign) → AMD section:
| Field | Value |
|---|---|
| AMD Type | AMD |
| AMD Agent Route Options | ENABLED |
| CPD AMD Action | DISABLED |
| CPD Unknown Action | DISABLED |
Admin → Campaigns → (your campaign) → Dial Settings:
| Routing Extension | Use for |
|---|---|
8370 |
Standard AMDY campaigns |
8371 |
Press-1 campaigns |
8369 |
Falls back to standard Asterisk AMD (no AI) |
After any change, rebuild the telephony config (Admin → Servers → Rebuild Config).
Still not working?
If verification passes but the logs show connection error, the install itself is fine — go to Connection problems.