Freeze one transfer chronology
Record installed branch, timestamp, manager identity, action name, ActionID when the action supports it, supplied channel values, stable channel IDs, bridge IDs, destination context, extension and priority, action response, transfer events, dialplan execution and caller-visible result.
Classify the first symptom: rejection, accepted action with no transfer event, wrong leg moved, wrong peer transferred, wrong context or priority, transfer event failure, Success with busy or no answer, wrong connected identity, missing recording, one-way audio or teardown.
Verify the installed action and authorization
Check local AMI action help, loaded module state and the manager account read and write permissions on the running branch. Correlate the exact request and response; do not assume that a later generated reference proves action availability on an older or packaged host.
Separate transport, parsing, authentication, authorization and action-level failures before changing dialplan or endpoint settings.
Re-resolve the live channel and bridge
Map every supplied channel to one intended live party at mutation time and retain Uniqueid and Linkedid where available. For BlindTransfer, prove the channels currently bridged to the supplied channel. For Atxfer, prove that the supplied leg is the transferer. For dual-leg Redirect, resolve both channel destinations independently.
Account for rename, Local-channel optimization, masquerade, hangup and replacement. Retrying a stale name can move a different or nonexistent leg.
Prove the complete dialplan destination
For Redirect, validate context, extension and priority for each requested leg. For BlindTransfer and Atxfer, validate the destination context and extension and preserve the matched dialplan execution. Reject an implicit context, an unreviewed caller-controlled target or a primary-leg success that hides an invalid extra-leg destination.
A transfer event Success proves dialplan placement, not target contact. Continue through outbound selection, target response and final bridge.
Interpret the event without overclaiming
For BlindTransfer, preserve Result, IsExternal, transferer, transferee, bridge and destination. For AttendedTransfer, preserve original and second transferer channels and bridges, transferee, transfer target and DestType; missing bridge fields can be valid when a leg ran an application instead of joining a bridge.
Treat Fail, Invalid and Not Permitted as different boundaries. Treat Success as expected dialplan placement only, exactly as the current event documentation states.
Follow topology into identity, recording and media
After dialplan entry, trace target progress, final bridge membership, connected-line updates, recording segments, hangup causes and both media directions. A correct transfer event can precede busy, no answer, routing rejection, early teardown or unusable audio.
Do not repair a control-contract or destination error by changing codecs, NAT or registration. No AMI session, user, permission, host, manager action, channel, bridge, dialplan destination, packet, media stream or live call was inspected or tested for this diagnostic.
Follow accepted transfer into cancellation and recovery
The CancelAtxfer diagnostic covers abort availability, active transferer selection, re-bridging and callback timing.
Check whether a Local identity optimized away
The Local optimization diagnostic distinguishes intended name disappearance from the wrong surviving party set.
Exclude a stale pre-transfer channel snapshot
The channel snapshot diagnostic re-resolves the transfer leg and current bridge before mutation.
Check the transfer-event path independently
The AMI event diagnostic traces authorization, filters, transport and downstream deduplication.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk 23 AMI Redirect action ↗
- Asterisk 22 AMI Redirect action ↗
- Asterisk 23 AMI BlindTransfer action ↗
- Asterisk 22 AMI BlindTransfer action ↗
- Asterisk 23 AMI Atxfer action ↗
- Asterisk 22 AMI Atxfer action ↗
- Asterisk 23 AMI BlindTransfer event ↗
- Asterisk 23 AMI AttendedTransfer event ↗
- Asterisk 23 AMI CancelAtxfer action ↗
- Asterisk 22 AMI CancelAtxfer action ↗
- Asterisk 23 attended-transfer feature configuration ↗
- Asterisk 22 attended-transfer feature configuration ↗
- Asterisk feature-code call transfers ↗
- Asterisk 23 AMI LocalOptimizeAway action ↗
- Asterisk 22 AMI LocalOptimizeAway action ↗
- Asterisk 23 AMI LocalOptimizationBegin event ↗
- Asterisk 23 AMI LocalOptimizationEnd event ↗
- Asterisk 23 AMI LocalBridge event ↗
- Asterisk AMI v2 specification: Local channel optimization ↗
- Asterisk Local channel optimization ↗
- Asterisk Local channel modifiers ↗
- 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 ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.