Freeze one caller path and exact observed treatment
Record timestamp and timezone, caller and ingress route, queue number, FreePBX and Asterisk versions, the sounds heard in order, digits pressed, displayed caller state, total elapsed time and final destination. Preserve one caller or linked identifier, the saved queue record, generated destination and the minimum authorized queue-log and channel evidence for that attempt.
Classify the symptom before changing the queue: not admitted, admitted but silent, wrong music, wrong or repeated announcement, position or expected-wait claim seems wrong, no member offer, caller exits early, maximum wait is ignored, caller abandonment, or wrong failover destination. Those outcomes have different owners.
Separate route arrival from queue admission
Follow the inbound route, time condition, IVR or internal extension into the intended FreePBX queue destination, then identify the running Asterisk Queue application. A prompt or music heard earlier in the call path does not prove that Queue admitted the caller.
Asterisk documents that Queue can return without admission when the queue is absent or join conditions fail. Preserve QUEUESTATUS values such as FULL, JOINEMPTY and JOINUNAVAIL separately from later TIMEOUT, LEAVEEMPTY, LEAVEUNAVAIL, CONTINUE or WITHDRAW. Do not increase maximum callers or relax empty-queue controls until the exact return is known.
Map waiting media, ringing and announcements independently
Record whether the caller should hear ringing, music on hold, a welcome message, position, estimated hold time, a periodic message or a breakout instruction. Sangoma documents these as configurable queue behaviors, while Asterisk notes that Queue does not answer automatically and that ring treatment and periodic announcements can coexist.
Prove the selected music class and any route or channel override before replacing files. Keep the prompt identifier, announcement interval, playback event and audible result separate. A valid sound file, queue entry or music-start event does not prove that the intended caller heard the complete treatment.
Treat position and expected wait as estimates
Queue position, current average hold time and the caller's final wait are different measurements. Asterisk exposes current queue statistics through queue variables and records the connected caller's wait separately. An announcement is not a service guarantee and can be misleading when staffing, arrival rate, member penalties or queue statistics change.
Compare the announced value with the live queue snapshot and the queue-log history for the same interval without resetting statistics during diagnosis. Do not rewrite announcements merely to make one sample agree; first determine whether the wrong queue, stale statistics, prompt selection or an ordinary estimate explains the difference.
Reconstruct member offers and the final exit
Use live queue state and the queue log to distinguish an admitted caller with no eligible members from one whose members were attempted but did not answer. Membership, login, pause, device state, wrap-up, penalty, ring-in-use policy and an actual offer remain separate. Use the agent-not-ringing diagnostic when one expected member was skipped.
Follow the same caller to connection, abandonment, caller-selected exit, timeout, full or empty-queue exit, then into the configured failover destination. A caller hanging up is not the same as an automatic timeout, and a queue exit does not prove that voicemail, another queue or an external destination subsequently answered.
Correct one owner and replay an exit matrix
Correct only the demonstrated boundary: source route, admission control, maximum callers, join or leave rule, music class, prompt or interval, member eligibility, caller exit key, maximum wait or failover destination. Apply the supported FreePBX change path and confirm the generated and loaded result; do not edit generated queue files as the durable repair.
Retest one answered call, one member-unavailable case, one timeout, one authorized caller exit and one unaffected path. Confirm caller treatment, member offer, queue-log outcome, downstream destination, two-way audio where answered and cleanup. Remove temporary logging and restore any diagnostic state. This workflow is derived from first-party documentation and has not been reproduced on a customer or laboratory PBX.
Branch into priority evidence only after queue admission
When callers enter the same queue but appear misordered, use the Queue Priorities diagnostic to prove the selected object, inherited variable and comparable member offers.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Sangoma FreePBX Queues module ↗
- Asterisk 23 Queue application ↗
- Asterisk queue logs ↗
- Asterisk QUEUE_VARIABLES function ↗
- Sangoma FreePBX Music on Hold user guide ↗
- Sangoma Queue Priorities user guide ↗
- Sangoma Queue Priorities module overview ↗
- FreePBX Queue Priorities release/17.0 repository ↗
- FreePBX Queue Priorities release/17.0 metadata ↗
- FreePBX Queue Priorities release/17.0 dialplan source ↗
- Asterisk standard channel variable QUEUE_PRIO ↗
- Asterisk Queue application ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.