Freeze one request and event chronology
Record installed branch and maintenance release, manager connection, permissions, request timestamp, action, channel argument, any ActionID, immediate response, each list row, terminal event and count, then the relevant lifecycle and bridge events.
Classify the first symptom: rejected action, no rows, no completion, row-count mismatch, missing channel, old name, wrong linked identity, stale bridge, unexpected Local traversal, unrelated concurrent rows or correct topology with a failed call.
Verify that the installed branch exposes the contract
Check local manager action help and the event stream before blaming a parser. CoreShowChannelMap is documented from 18.19.0 and 20.4.0, while CoreShowChannelMapComplete has later maintenance-release markers. An older supported branch may not match the latest generated completion schema.
Confirm manager read permissions and event filtering as separate checks. A missing event can be an authorization or subscription problem even when the action itself is accepted.
Bound the list before interpreting emptiness
For CoreShowChannels, match rows and completion by ActionID and compare ListItems. For CoreShowChannelMap, use the published terminal event and its ListItems, but do not expect an ActionID that the action and completion schemas do not list. Serialize or isolate map requests.
For Status, distinguish a deliberately targeted channel from a global request and compare StatusComplete Items with the collected rows. Keep concurrent unsolicited lifecycle events outside the snapshot list.
Re-resolve the live channel and stable identities
A channel can hang up or be renamed between capture and the follow-up action. Re-enumerate when the supplied name is rejected, then match Uniqueid and Linkedid before substituting another live name. Never choose the first similar technology prefix as the intended leg.
If a Local channel is involved, remember that the map action follows through its other half. That broader connected result is documented behavior, not proof that the map selected a different call.
Rebuild bridge membership at the mutation boundary
Compare the snapshot BridgeId with bridge-enter, bridge-leave, merge and Local-optimization events. An empty bridge ID means the row did not report current membership; an earlier non-empty value is not a reservation.
Immediately before a bridge, transfer, kick or hangup mutation, resolve the current channel name and bridge identity again. Preserve the earlier snapshot for chronology rather than overwriting it.
Continue beyond a correct topology snapshot
If the expected parties and bridge are present, move to signaling state, negotiated formats and streams, packet direction, recording state and audible media. Status format fields and a connected map are useful context, not proof of successful negotiation or two-way audio.
Avoid fixing a stale identifier by changing codecs, NAT or registration. No PBX, AMI session, manager user, permission, channel, bridge, variable, packet, media stream or live call was inspected or tested for this diagnostic.
Exclude an incomplete AMI event pipeline
The AMI event diagnostic verifies event masks, filters, transport and parsing before rebuilding channel state.
Keep UserEvent snapshots tied to emission time
The AMI UserEvent guide prevents custom headers or transient channel fields from becoming an invented final call state.
Do not record a guessed channel from a stale snapshot
The AMI MixMonitor diagnostic verifies channel, Uniqueid, Linkedid and transfer boundaries before changing storage.
Do not park a guessed channel from a stale snapshot
The AMI parking diagnostic checks channel replacement, actual lot and assigned space before changing timeout routing.
Recheck the exact live leg after a snapshot mismatch
The channel lifetime diagnostic separates incomplete inventory, stale identity and expected channel destruction.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk 23 AMI CoreShowChannelMap action ↗
- Asterisk 22 AMI CoreShowChannelMap action ↗
- Asterisk 23 AMI CoreShowChannelMapComplete event ↗
- Asterisk 22 AMI CoreShowChannelMapComplete event ↗
- Asterisk 23 AMI CoreShowChannels action ↗
- Asterisk 23 AMI CoreShowChannel event ↗
- Asterisk 23 AMI CoreShowChannelsComplete event ↗
- Asterisk 23 AMI Status action ↗
- Asterisk 23 AMI Status event ↗
- Asterisk 23 AMI StatusComplete event ↗
- Asterisk 23 AMI Newchannel event ↗
- Asterisk 23 AMI Rename event ↗
- Asterisk 23 AMI Events action ↗
- Asterisk 22 AMI Events action ↗
- Asterisk 23 AMI Filter action ↗
- Asterisk 22 AMI Filter action ↗
- Asterisk 23 AMI WaitEvent action ↗
- Asterisk 22 AMI WaitEvent action ↗
- Asterisk AMI event filtering ↗
- Asterisk Manager TCP/IP API ↗
- Asterisk 23 AMI Login action ↗
- Asterisk 23 AMI Ping action ↗
- Asterisk 23 AMI UserEvent action ↗
- Asterisk 22 AMI UserEvent action ↗
- Asterisk 23 AMI UserEvent event ↗
- Asterisk 22 AMI UserEvent event ↗
- Asterisk 23 UserEvent dialplan application ↗
- Asterisk 22 UserEvent dialplan application ↗
- Asterisk AMI command syntax ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- Asterisk CHANNEL_EXISTS dialplan function ↗
- Asterisk CHANNELS dialplan function ↗
- Asterisk CHANNEL dialplan function ↗
- Asterisk CLI channel creation and manipulation ↗
- Asterisk Local channel optimization ↗
- Asterisk func_channel implementation ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.