Freeze one action and its expected state transition
Record timestamp and timezone, Asterisk release, loaded module, AMI identity and permitted classes, client connection, action name, ActionID, exact Registration value, pre-action detail status and NextReg, immediate AMI response, bounded SIP exchange, Registry events, post-action detail and expected service state.
Classify the first mismatch: unsupported action, AMI authentication or authorization, unknown object, action rejected, no unregister transaction, no new registration attempt, registrar rejection, permanent or stopped retry state, stale observer, or registration succeeded but the separate call path failed.
Prove release, module and AMI permission
Confirm the installed release provides the requested action: PJSIPUnregister is documented since 12.0.0 and PJSIPRegister since 13.2.0. Confirm the outbound-registration module is loaded and the AMI user can invoke the action and receive the needed command and system events.
A connected manager socket does not prove authorization. An action listed in current branch-23 documentation does not prove availability in an older packaged release.
Resolve the loaded object before retrying
Request the outbound-registration listing and match the exact ObjectName. Compare its server URI, client URI, transport and outbound-auth reference with the intended service. A FreePBX trunk label or provider username may not equal the Asterisk registration object name.
Do not substitute *all to hide an unresolved name. That changes every loaded object and can produce avoidable provider traffic or a broad service interruption.
Follow unregister and register phases separately
For PJSIPUnregister, trace the state transition, any outgoing unregister request, response and absence of future attempts. For PJSIPRegister, remember that Asterisk first unregisters, then begins registration and schedules re-registration from loaded configuration. Preserve both phases and their distinct responses.
A missing packet after AMI acceptance points to object, module or action-state evidence. A sent request with no response points to transport, DNS, proxy or network evidence. A negative response belongs to authentication, registrar policy or request contents.
Correlate events with a fresh detail listing
Match Registry events to the attempt by time, channel type, redacted username, domain, status and cause, then request a new outbound-registration detail list. Preserve Registered, Unregistered, Rejected and Failed as distinct outcomes, and retain NextReg rather than guessing the next retry from elapsed time.
An observer can miss an event during reconnect. Conversely, an event does not establish the later steady state; the fresh detail and next scheduled refresh close that gap.
Correct the first failed boundary and retest one object
Correct only the demonstrated boundary: release, module, AMI permission, object name, persistent registration configuration, transport, credentials, proxy, retry policy or registrar requirement. Repeat on one object, observe the next refresh and verify unrelated registrations were unchanged.
Do not build an automatic action loop that defeats retry policy or provider limits. A Registered state is not proof of inbound routing, outbound authorization, media or call completion. No PBX, AMI session, registration object, packet, provider or call was inspected or tested for this diagnostic.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk PJSIPRegister AMI action ↗
- Asterisk PJSIPUnregister AMI action ↗
- Asterisk PJSIPShowRegistrationsOutbound AMI action ↗
- Asterisk OutboundRegistrationDetail AMI event ↗
- Asterisk Registry AMI event ↗
- Asterisk res_pjsip_outbound_registration configuration reference ↗
- Asterisk outbound-registration configuration guide ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.