Reader setup
Before you diagnose
- An isolated test campaign and test agent
- An approved internal test endpoint
- Permission to view the relevant VICIdial and Asterisk settings
- Expected result
- You can distinguish an agent alert, music on hold, and a drop/queue prompt before changing any audio asset, and confirm which music-on-hold classes actually exist first.
- Before making changes
- Do not replace prompts, reload Asterisk, or test dropped-call handling against real callers. Audio and abandonment behavior can have legal and customer-impact consequences.
First, name who heard the sound
'The call played music' is not enough to diagnose an audio problem. An agent alert is intended for the agent; music on hold is normally heard by a caller placed on hold or queued; a drop/abandon message can be heard by a customer when no agent is available. Browser notification sounds are separate again, and ringing may come from a phone, softphone or call path. Record who heard it and when before deciding where it originated.
VICIdial's own feature list describes configurable agent alert sounds and custom music on hold. Those features share a telephony system but do not necessarily use the same setting or audio file — list the music-on-hold classes Asterisk actually has configured before assuming one exists. Which class is actually attached to a given campaign or trunk is a separate question from which classes exist at all; this command only answers the second one.
- Before you use it
- Run this on the Asterisk box at any time; it is read-only and only lists configured classes.
asterisk -rx 'moh show classes'Captured demo response · 2026-09-24 22:25 UTC. Any filtering, hidden values or test-only data are identified in the capture label. Select Replay transcript to read the recorded output.
- Success looks like
- You get a named list of MOH classes and how each is configured, showing exactly what 'custom music on hold' means on this build instead of taking the feature list's word for it.
- Stop if
- A default-only class can still play music on hold. Check which class the call uses before ruling it out. If the command reports an error or no classes, record the response and check the Asterisk configuration.
Reference screenshots 3 images
Reference capture
Reference screens from the demo
Captured on an isolated VICIdial demo: Administration screens on September 24, 2026, and the idle Agent screen on August 11, 2026. Each caption states its own capture time, and every sanitized image helps you recognize a related screen; none proves that this article's call, command, or result occurred.Keep phones and users separate
Open to enlargeCapture details
Only the fixture phone extension is shown; other rows and the server address are removed. This page identifies phone administration and does not prove registration or login success.Find the campaign the agent should use
Open to enlargeCapture details
Only the fixture campaign row is shown; other campaigns are removed. Its columns do not prove dialing activity, performance, or a completed call.Read the real Agent screen in an idle state
Open to enlargeCapture details
This is a real logged-in idle Agent screen with session and system identifiers redacted. Customer fields are blank, and it does not prove a placed, answered, recorded, transferred, or completed call.A long alert can look like hold music
A VICIdial forum case is a useful warning: an apparent third-party hold-music problem turned out to be a five-minute default agent-alert clip when an agent joined a conference. Do not assume the audible result proves its source — a conference-join alert plays inside the same audio path a caller's hold music would use, which is exactly why the two are easy to confuse without a timestamp.
Write down the listener, the exact moment it began, the action that preceded it, and whether the call was answered, held, transferred, queued, or dropped. That timeline is safer than changing several prompt settings at once. A simple shared log, even one spreadsheet row per test, beats memory once more than one person is reproducing the same symptom.
Guided example: make a zero-customer audio timeline
Use only the internal test endpoint. Run one ordinary agent login/join test and one authorised inbound or transfer test if your lab supports it. Do not intentionally raise a dial ratio or create a real abandoned call to make an alert happen. If your lab exposes a second internal line, have a colleague call it so 'agent side' and 'far side' can be labeled independently for the same event.
For each sound, capture a local timestamp and label the listener. If the agent hears a sound but the test endpoint does not, that strongly narrows the layer without changing server configuration.
- Before you use it
- Complete one card per test and keep all calls inside the lab.
Test: <AGENT_LOGIN | TEST_TRANSFER | TEST_QUEUE>Listener: <AGENT | TEST_ENDPOINT>Time: <YYYY-MM-DD HH:MM:SS>Action immediately before sound: <JOIN | HOLD | TRANSFER | QUEUE>Sound duration: <SECONDS>Customer involved: noThis sample is a template or reading aid, not a terminal command. There is no output to show.
- Success looks like
- The team can identify the audience and event for each sound before looking for a file.
- Stop if
- Stop if a non-test caller enters the path or you cannot confirm which campaign/endpoint is isolated.
Guided example: inspect the active call evidence
During an approved lab reproduction, an Asterisk owner can collect bounded CLI evidence. The goal is to learn which channels and applications were active at the timestamp, not to edit dialplan or music-on-hold files.
Screenlog output can be useful for a server-generated sound; a VICIdial forum thread points to Asterisk screenlog output specifically when tracing unexpected audio. Redact phone numbers, caller IDs, credentials and customer details before sharing evidence. On a shared lab, seeing a channel for a phone that is not part of your own test is the expected baseline when someone else happens to be logged in at the same time — it is not by itself evidence of anything wrong. The opposite result is just as normal: an idle lab with no live calls in progress at that exact moment can legitimately show zero active channels, which is the correct baseline, not a sign that the command failed or that Asterisk is unreachable.
To look closer at one specific channel, take its exact name from the command below and run core show channel against that name — there is no single fixture channel to hand you here, since which phone is active depends entirely on who is logged in at the time you run it.
- Before you use it
- Run only on the authorised lab server during the recorded test.
asterisk -rx 'core show channels concise'This example has no recorded result here. Follow its preparation, expected result and stop conditions before using it.
- Success looks like
- You can correlate the test timestamp with a channel and application without restarting or reloading Asterisk.
- Stop if
- An idle lab can legitimately show zero channels. On a shared lab, other channels may belong to other sessions; do not inspect or alter them. If your own test channel is missing, compare the timestamp and server with the test notes.
Change one approved test asset, then repeat
This guide does not identify an upload screen or setting for every audio path. Ask the Asterisk administrator to identify the exact setting for the observed sound and provide the build-specific procedure. Confirm format, language, licensing, volume and duration before selecting a test asset; a file on disk does not prove the active configuration uses it.
Do not overwrite a production prompt to 'see if it helps'. Keep the previous selection documented, perform the single change in the isolated lab/campaign, repeat the same observation card, and explicitly restore the previous state if the result is wrong. Note the exact filename, format and duration you selected — 'the new file' is not a useful rollback record if two similarly named assets exist.
- I know whether the sound belongs to the agent, caller, or browser.
- I tested one event with no real customer.
- I have evidence and an approved rollback before an audio asset changes.
Treat drop-call audio as a policy path
A dropped call is not merely an audio cue: it is a call-handling and compliance event. VICIdial supports drop timing and safe-harbor-style handling, and its feature list also describes routing a dropped call to voicemail, queue or extension when no agent is available. The correct message and routing depend on the jurisdiction and campaign policy — confirm which of those routing options your build actually has configured before promising a caller-facing behavior to compliance or to a customer.
If agents report customers hearing unexpected music after a disconnect, preserve the timestamp and call identifier for the owner. Do not tune drop timers, routing extensions or predictive dialing to silence the symptom; first establish whether the call was an agent alert, hold path, transfer issue, or true drop. Where a jurisdiction sets a specific safe-harbor message or timing, treat that requirement as the floor, not a suggestion the campaign owner can waive for convenience.
Checks and sources
What was checked
- VICIdial's own feature list describes agent alert sounds, music on hold, and dropped-call routing as separate features, and this guide adds a moh show classes check so 'custom music on hold' is something you can see, not just take on faith.
- The guide uses internal audio tests and read-only CLI observation; it does not prescribe changing dialplan, prompt files, or production abandonment behavior.
Primary references
Sources
- VICIdial feature listVICIdial · accessed September 23, 2026
- VICIdial API conference call hold music on 3rd partyVICIdial forum · accessed September 23, 2026
- On Hold Prompt Interval doesn't workVICIdial forum · accessed September 23, 2026
- Asterisk CLI: Creating and Manipulating ChannelsAsterisk · accessed September 23, 2026


