VoIP.info Troubleshooting

Asterisk AMI extension state is missing, stale or wrong

Trace one Exten-and-Context pair through the loaded hint, its device providers, direct query, bounded list, live event and separately observed subscriber or call outcome.

Reviewed 2026-10-16Current Asterisk branch-23-generated and branch-22 AMI ExtensionState, ExtensionStateList, ExtensionStatus and ExtensionStateListComplete references, EXTENSION_STATE and HINT function references, plus official extension-state, device-state and AMI-filtering documentation reviewed October 16, 2026; installed branch, maintenance release, loaded dialplan, manager permissions, session mask, filters, hint context, devices, presence mapping, subscription and endpoint behavior remain deployment specific; no PBX, module, manager session, dialplan, hint, state provider, subscription, endpoint, packet, media stream or live call was inspected or testedAdvancedDocumentation based · not lab tested

Freeze one extension, context and expected outcome

Record the installed branch and maintenance release, loaded dialplan, manager identity, read permissions, session mask and filters, exact Exten and Context, hint text, device providers, direct response, action IDs, raw list frames, completion and count, live events, subscription evidence and the separately observed result.

Classify the symptom first: missing action, wrong context, no loaded hint, wrong aggregate, incomplete list, absent live event, correct PBX event but absent NOTIFY, or correct notification but wrong endpoint or call behavior.

Prove the loaded hint and its providers

Inspect the loaded hint for the exact context and extension, then use HINT() or equivalent dialplan evidence to retain its mapped devices. A hint may aggregate several device providers and may also carry presence after its device portion. Diagnose each provider at its owner before changing the aggregate.

Do not create or rewrite a hint only to make an indicator move. Dialplan reloads and runtime changes can remove a hint or extension; the documented -1 and -2 statuses identify those conditions and should not be collapsed into unavailable.

Compare the direct query with the right function

Issue ExtensionState with the exact Exten and Context and preserve its hint and status response. If comparing it with EXTENSION_STATE(), pass the same context explicitly; otherwise the function can use default and silently answer a different question.

Retain both numeric AMI status and function result. Idle and NOT_INUSE, or the combined ringing and hold names, belong to different interfaces and need an explicit mapping before comparison.

Rebuild the list at the completion boundary

Issue one ExtensionStateList, retain each raw ExtensionStatus row and wait for ExtensionStateListComplete. Compare ListItems with the rows accepted by the client. An absent completion or count mismatch makes the snapshot incomplete even when useful rows arrived.

Separate the bounded list from unsolicited live events on the same connection. Because the generated row and completion schemas do not list ActionID, demonstrate correlation before concurrent list requests; otherwise serialize them.

Trace live delivery and version boundaries

If the hint changes but the listener sees no ExtensionStatus, confirm that the installed maintenance release exposes the documented event, then inspect CALL-class delivery, manager read permission, the session event mask and configured or dynamic filters. Preserve the raw event, including context, extension, hint, status and status text.

Use PresenceStatus only for presence-driven hint changes. A missing device-driven event does not prove the provider failed, and a delivered event does not prove a subscriber was notified.

Validate the downstream claim at its owner

For an indicator symptom, inspect the actual SUBSCRIBE dialog, NOTIFY body and endpoint rendering. For a call symptom, verify registration, qualification, routing, channel lifecycle, answer and media independently. Fix the first failing boundary and repeat one controlled transition.

An extension-state aggregate cannot by itself prove reachability, queue selection, call acceptance, audible ringing, two-way audio or user availability. No PBX, module, manager session, dialplan, hint, state provider, subscription, endpoint, packet, media stream or live call was inspected or tested for this diagnostic.

Check whether the hint itself changed or disappeared

The AMI dialplan diagnostic distinguishes a missing hint priority from provider-state and event-delivery failures.

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.