Freeze one disputed inventory
Record timestamp and timezone, responding node and branch, manager identity, ActionID, exact action, every returned event type, completion event, AoR, endpoint, URI redaction, user agent, registration expiry, qualification state, configuration owner, last known REGISTER time and the user-visible symptom.
Classify the disagreement first: static contact is incorrectly labelled a registration; expected dynamic contact is absent; expired contact remains in another view; one of several contacts is missing; list never completes; the right contact maps to the wrong endpoint; or registration is current but calls fail.
Verify action availability, authorization and completion
Inventory the actions exposed by the installed branch and authenticated manager user. PJSIPShowRegistrationInboundContactStatuses is the intended dynamic-contact list, but older deployments may not provide it. Preserve the response and all rows through ContactStatusDetailComplete.
For the broader action, require InboundRegistrationDetailComplete; for all contacts, require ContactListComplete. Check manager class authorization, event filters, connection continuity and parser handling. Do not treat silence or a client timeout as an empty or complete inventory.
Identify static and dynamic contact ownership
Inspect the authoritative AoR object. A contact= URI is static; a remote user agent creates a dynamic contact by REGISTER, subject to AoR limits and policy. The broad PJSIPShowRegistrationsInbound action deliberately includes both, so a static row there is not a defect.
Match a dynamic row using AoR, URI and contact ID plus bounded metadata such as user agent, registration expiry, Via, Call-ID and Path. Protect those fields. Similar endpoint names or IP addresses do not prove identity.
Reconcile expiry, replacement and multiple contacts
Compare current time with RegExpire, and preserve MaxContacts, RemoveExisting, RemoveUnavailable, minimum, default and maximum expiration settings. A replacement policy, a new device registration, explicit de-registration, expiry or another contact under the same AoR can explain a changing list without a parser fault.
Do not infer historical registration order from a current snapshot. Correlate the bounded REGISTER transaction and registrar logs when chronology matters, and distinguish a stale dashboard cache from the live manager response.
Confirm node, realtime source and endpoint relationship
In a cluster or load-balanced design, query the node that received the REGISTER and owns the contact state. Reconcile flat-file, realtime and generated FreePBX ownership with the loaded AoR and endpoint objects. A correct database row is not proof that the intended node loaded it, and a correct AoR name is not proof of the desired endpoint association.
Use endpoint detail only to verify object relationships. Avoid editing generated files or changing NAT, authentication and contact limits together before the first divergence is established.
Correct the earliest boundary and test service separately
Correct only the first demonstrated fault: wrong action, missing deployed capability, incomplete parser, filtered events, wrong node, static-versus-dynamic classification, AoR ownership, expiry or replacement policy, stale cache, or endpoint association. Repeat the exact completed inventory and compare timestamps.
If the dynamic contact is current but calls still fail, continue through Request-URI construction, endpoint selection, dialplan, signaling, SDP and media as separate evidence. No PBX, module, manager account, session, AoR, endpoint, static contact, dynamic registration, REGISTER transaction, qualification exchange, packet, media stream or live call was inspected or tested.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk 23 PJSIPShowRegistrationsInbound action ↗
- Asterisk 22 PJSIPShowRegistrationsInbound action ↗
- Asterisk 23 PJSIPShowRegistrationInboundContactStatuses action ↗
- Asterisk 22 PJSIPShowRegistrationInboundContactStatuses action ↗
- Asterisk 23 PJSIPShowContacts action ↗
- Asterisk 23 InboundRegistrationDetail event ↗
- Asterisk 23 ContactStatusDetail event ↗
- Asterisk PJSIP configuration sections and relationships ↗
- Asterisk AMI v2 specification ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.