Freeze one disputed AoR snapshot
Record timestamp and timezone, responding node and branch, configuration owner, manager identity, action and ActionID, immediate response, every row, AorListComplete, exact AoR name, expected endpoint association, contact text, MaxContacts, replacement controls, expiration and qualification policy.
Classify the symptom: entire list empty; exact AoR absent; duplicate or unexpected AoR; wrong policy; static contact missing; dynamic contact missing or stale; endpoint association wrong; list never completes; or inventory is correct but service fails.
Prove action availability, authority and completion
Verify PJSIPShowAors exists in the authenticated manager action inventory for the installed branch. Check manager authentication, command-class authorization, event filters, session continuity and parser behavior. Require the named completion event and reconcile its ListItems with retained rows.
Do not interpret a permission failure, filtered event stream, disconnect, timeout or cancelled transaction as an empty AoR inventory.
Resolve the exact name and configuration owner
Compare the requested name byte-for-byte with the loaded AoR inventory. In generated FreePBX deployments, identify the module or database owner and prove which node loaded the generated object. A saved GUI record does not prove the queried Asterisk process accepted it.
Use the exact PJSIP_AOR field read or endpoint-associated AorDetail only after proving their scope. Preserve load or reload errors rather than directly editing generated files.
Separate static contacts from REGISTER-created contacts
A static contact= entry is configured directly. A dynamic contact is created by inbound REGISTER and is governed by AoR naming, registrar availability, max_contacts, expiration and replacement policy. The troubleshooting guide notes that a missing max_contacts prevents inbound registration.
Compare the current contact identifier with exact contact detail and registration evidence. An absent dynamic contact can reflect rejection, expiry, de-registration, replacement, node mismatch or observation timing; it is not automatically a network failure.
Reconcile count, replacement and qualification evidence
Confirm whether MaxContacts applies to the disputed contact population and whether remove_existing and remove_unavailable are intended to replace the soonest-expiring or unavailable entries. Preserve the before-and-after list around one authorized registration attempt.
Qualification settings govern OPTIONS behavior and availability marking. They do not create a registration, prove endpoint association or guarantee that INVITE, SDP and RTP will succeed.
Correct the first divergence and retest service independently
Correct only the demonstrated boundary: action availability, manager authority, parser framing, node, generated object, exact name, endpoint association, static contact, registrar module, contact limit, replacement policy, expiration, qualification or stale cache. Repeat the same completed inventory.
If the AoR and contacts now agree but calls still fail, continue through endpoint identification, authentication, dialplan, signaling, SDP and media. No PBX, module, manager account, session, AoR, endpoint, contact, registration, REGISTER transaction, qualification exchange, channel, 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 PJSIPShowAors action ↗
- Asterisk 23 AorList event ↗
- Asterisk 23 AorListComplete event ↗
- Asterisk 23 PJSIPShowEndpoint action ↗
- Asterisk 23 AorDetail event ↗
- Asterisk 23 PJSIP_AOR function ↗
- Asterisk 23 PJSIP_CONTACT function ↗
- Asterisk PJSIP configuration sections and relationships ↗
- Asterisk 23 res_pjsip configuration reference ↗
- Asterisk PJSIP troubleshooting guide ↗
- Asterisk AMI v2 specification ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.