Freeze one action, one snapshot and one behavior sample
Record node, release, loaded modules, manager identity and permissions, exact endpoint, requested state, ActionID, initial response, status event and completed show transaction. Separately retain one authorized inbound or outbound attempt with timestamps and the node that handled it.
Classify the first divergence: action missing or denied; endpoint rejected; request accepted but no event; snapshot incomplete; state differs; wrong node queried; new traffic behaves unexpectedly; or an existing dialog is being mistaken for a new origin.
Resolve missing actions before editing endpoints
The maintenance action is documented from Asterisk 20.20.0, 22.10.0 and 23.4.0. Verify the installed patch release, package provenance, loaded res_pjsip components and AMI permissions. A documentation page for the major branch is not evidence that an earlier maintenance release contains the action.
If the action is unknown or denied, correct the supported release, module state or least-privilege manager permission through the normal owner. Repeating it or switching to Endpoint: all does not repair capability.
Prove endpoint and node scope
Use the exact endpoint name and a specific-endpoint PJSIPShowMaintenance request. The unfiltered action lists endpoints currently in maintenance mode; absence there is not proof the endpoint is absent. Retain the terminal PJSIPMaintenanceStatusComplete event before calling the snapshot complete.
On multi-node systems, query every relevant node separately and prove which node receives the SIP request or originates the call. Do not infer cluster-wide state from one manager session.
Distinguish stale telemetry from stale state
Manager event filters, disconnected sessions, reused ActionID values and delayed consumers can hide or misassociate PJSIPMaintenanceStatus. Compare the initial response with a fresh completed show transaction rather than trusting a cached event.
After reload or restart, obtain a new snapshot. The reviewed documentation defines the runtime action and events but does not establish universal persistence across every reload, process restart or distribution.
Read call behavior against the documented boundary
For a new inbound out-of-dialog request, correlate maintenance state with the documented 503 Service Unavailable; remember the SUBSCRIBE and REGISTER exception when Expires: 0. For outbound testing, separate a new Dial() or ARI origin from a call already in progress.
In-progress dialogs are documented as unaffected. A surviving established call is not evidence that maintenance failed, while an unrelated 503, dialplan rejection, registration loss or unreachable contact is not proof maintenance caused the result.
Correct the first owner and verify restoration
Correct only the demonstrated layer: supported release, module load, manager privilege, event delivery, endpoint name, node selection, action state or traffic test. Re-run one exact-endpoint set request and one completed show snapshot before repeating authorized behavior checks.
After the work, set the endpoint off, verify the status change and a fresh snapshot, then confirm expected new inbound and outbound behavior. No PBX, endpoint, dialog, SIP request, channel, ARI operation, 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 PJSIPSetMaintenance action ↗
- Asterisk 23 PJSIPShowMaintenance action ↗
- Asterisk 23 PJSIPMaintenanceStatus event ↗
- Asterisk 23 PJSIPMaintenanceStatusComplete event ↗
- Asterisk 20 PJSIPSetMaintenance action ↗
- Asterisk 22 PJSIPSetMaintenance action ↗
- Certified Asterisk 22.8 PJSIPSetMaintenance action ↗
- Asterisk AMI v2 specification ↗
- Asterisk Dial application ↗
- Asterisk updating and upgrading guidance ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.