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.
- Asterisk 23 AMI ExtensionState action ↗
- Asterisk 22 AMI ExtensionState action ↗
- Asterisk 23 AMI ExtensionStateList action ↗
- Asterisk 22 AMI ExtensionStateList action ↗
- Asterisk 23 AMI ExtensionStatus event ↗
- Asterisk 22 AMI ExtensionStatus event ↗
- Asterisk 23 AMI ExtensionStateListComplete event ↗
- Asterisk 22 AMI ExtensionStateListComplete event ↗
- Asterisk 23 EXTENSION_STATE function ↗
- Asterisk 22 EXTENSION_STATE function ↗
- Asterisk 23 HINT function ↗
- Asterisk 22 HINT function ↗
- Asterisk extension-state and hint fundamentals ↗
- Asterisk device-state fundamentals ↗
- Asterisk AMI event filtering ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.