VoIP.info Troubleshooting

Asterisk AMI queue reload or reset is accepted but state is wrong

Trace one disputed QueueReload, QueueRule or QueueReset transaction through exact scope, source and generated configuration, raw framing, later queue state, statistics and retained history.

Reviewed 2026-10-17Current branch-23-generated and branch-22 QueueReload, QueueRule, QueueReset and QueueStatus action references, the Asterisk queue-log guide, Asterisk 20 upgrade notes, the current official queuerules.conf sample and the AMI v2 specification reviewed October 17, 2026; configuration owner, stored source, generated files, selected reload scope, action response, raw rule result, completed later queue snapshot, statistics, historical logs, active callers and call outcomes remain separate evidence boundaries; the generated action pages do not document defaults for omitted QueueReload subsection fields or a QueueRule row and completion schema, so neither is invented; no PBX, module, queue, configuration, manager account, session, rule, statistic, report, caller, member, endpoint, packet, audio or live call was inspected or testedAdvancedDocumentation based · not lab tested

Freeze one disputed reload or reset transaction

Preserve node and release, app_queue state, configuration owner, manager account permissions, request and response, ActionID, exact queue or omitted-queue scope, explicit Members, Rules and Parameters values, stored source, generated files, rule name and raw rule frames, completed before and after snapshots, statistics, logs and reporting timestamps. Redact credentials and caller data.

Classify the earliest mismatch: wrong node, wrong queue, accidental all-queue scope, omitted subsection ambiguity, stale generated file, parse failure, incomplete rule framing, later overwrite, wrong statistic, retained history, stale reporting cache or unrelated call-path failure.

Prove queue breadth and subsection scope first

Compare the literal request with the intended change. An omitted Queue means all queues are affected. Check Members, Rules and Parameters independently and do not infer undocumented defaults when a field is absent. Confirm that the manager account could send the action and that the response belongs to the same ActionID.

A successful response can coexist with the wrong source owner, unchanged generated file, a parsing warning or a later controller that reapplies different state. Inspect the smallest relevant runtime subset after the transaction instead of treating one visible field as proof that every subsection reloaded.

Reconcile stored source, generated files and runtime state

Identify whether Asterisk reads hand-managed files, realtime data or FreePBX-generated configuration for this queue. Compare the authoritative stored value with the exact generated artifact and its timestamp, then with a completed later QueueStatus snapshot. Avoid modifying generated files merely because runtime state differs.

For member changes, compare exact member identities and state fields. For parameter changes, compare only fields visible in the documented snapshot and supplement with read-only CLI or log evidence where needed. If the field is not exposed, record it as unverified instead of converting action acceptance into proof.

Verify queue rules and raw list framing

Use QueueRule with the exact case-sensitive rule name and preserve every raw frame. The generated action page does not publish a row event or terminal completion schema, so a collector that stops on timeout, socket silence or an invented event can show a partial or empty rule. Compare the result with the authoritative queuerules.conf or realtime rule source.

The official sample says callers retain the rules defined when they entered the queue. A waiting caller can therefore follow the previous penalty changes even when a later rule inspection shows the new source. Test a newly admitted disposable caller before blaming a correct rule reload.

Separate reset statistics from history and presentation

Confirm that QueueReset named the intended queue and compare the exact queue statistics before and after. Do not expect it to erase queue_log rows, CDR, CEL, external database history, recordings or report exports. Check each store with its own timestamp, retention and ingestion boundary.

Do not infer a reset from a full module reload: Asterisk 20 upgrade notes say full app_queue reloads no longer reset queue and agent statistics. A dashboard can also remain stale after the underlying statistic changed. Refresh or query the reporting layer only after runtime evidence is known.

Repair minimally and retest exact postconditions

Correct only the proved node selection, queue scope, subsection flags, manager permission, configuration ownership, generation step, file syntax, realtime source, collector framing, later overwrite, statistic selector or reporting-cache defect. Repeat on one disposable queue with explicit flags and captured before and after evidence; test all-queue scope only when operationally safe.

Keep reload, rule inspection, reset, active caller behavior, member selection, ring attempt, answer, media and caller outcome as separate results. No PBX, module, queue, configuration, manager account, session, rule, statistic, report, caller, member, endpoint, packet, audio or live call was inspected or tested; availability, compatibility, persistence, parsing and call behavior remain deployment specific.

Sources & applicability

Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.

Examples require adaptation to your topology. No live PBX or hardware testing is claimed.