A subscription is not a registration
REGISTER tells a location service where an address can currently be reached. SUBSCRIBE asks to receive changes for an event package. NOTIFY carries the resulting state information. A phone can register successfully while its busy-lamp field remains wrong because the separate event subscription failed. The Event header identifies the package, while Subscription-State describes whether a subscription is pending, active or terminated. Event-package definitions determine the body format and what the state means; a presence document and a dialog-state document are not interchangeable.
Inspect a stale indicator
Capture the initial SUBSCRIBE, its response, the associated NOTIFY and subsequent refreshes. Read expiry values and any termination reason. Check that the monitored identity belongs to the intended tenant and that the subscriber is authorized to observe it. A successful SUBSCRIBE response alone does not prove the phone received or understood the notification body. Follow the NOTIFY transaction too. If the phone displays yesterday's state, investigate refresh failure, a transport reconnect and whether an initial full state was delivered after reconnection.
Design for scale and privacy
Subscriptions multiply with monitored keys: a receptionist monitoring many extensions creates a different workload from a phone with one line key. Estimate both refresh traffic and change-driven notifications before rolling out large BLF templates. Avoid exposing presence or call state to arbitrary authenticated users. Limit the observed resources and event packages to the operator's actual role. During troubleshooting, record the package, target identity and state transitions; redact personal identifiers before sharing a trace. Use event state to explain indicators, not as proof of end-to-end media health.
Keep event, format and resource failures separate
RFC 6665 uses 489 Bad Event when the notifier does not understand the event package named by the Event header. A known event package with no NOTIFY body format acceptable to the subscriber is instead a 406 investigation. A known package can still fail because the target resource is unknown or the subscriber is not authorized, so preserve the exact Request-URI, Event token, Accept values and responder.
An Allow-Events header advertises packages for which that user agent can act as a notifier, but it is not an end-to-end feature or authorization test. Follow the SIP 489 reference and the Asterisk PJSIP investigation before changing phone templates or loading modules.
Separate event-package NOTIFY from manual vendor commands
The Asterisk PJSIP NOTIFY guide keeps RFC subscription state and dialog matching distinct from manually triggered, vendor-defined endpoint messages.
Do not promote an AMI presence event into NOTIFY proof
The AMI presence-state guide separates provider change, hint change, subscription delivery and endpoint rendering.
Do not promote extension state into subscription proof
The AMI extension-state guide separates PBX hint evidence from SUBSCRIBE acceptance, NOTIFY delivery and endpoint rendering.
Watch the explanation
Learn how the X5U’s second display becomes a working directory rather than a list of unexplained buttons. The demonstration searches a company directory, moves between programmed key pages, transfers a caller and contrasts private hold with a shared parking slot. That makes it useful for staff moving between departments or answering calls for colleagues.
Read applicability and editorial notes →Watch this video here
Modern Telecom configuration for a particular customer. Directory contents, key colors, parking slots and dialing rules follow that customer’s template. Review used the available transcript and primary references; audio and screen readability remain unverified.
The player loads only when you choose Watch here. Playback uses YouTube’s privacy-enhanced embed; YouTube processes playback data.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- IETF RFC 6665 ↗
- Asterisk PJSIPNotify dialplan application ↗
- Asterisk PJSIPNotify AMI action ↗
- Asterisk res_pjsip_notify configuration reference ↗
- Asterisk res_pjsip configuration reference ↗
- Asterisk PJSIPNotify application introduction ↗
- RFC 6665: SIP-Specific Event Notification ↗
- Asterisk 23 AMI PresenceState action ↗
- Asterisk 22 AMI PresenceState action ↗
- Asterisk 23 AMI PresenceStateList action ↗
- Asterisk 22 AMI PresenceStateList action ↗
- Asterisk 23 AMI PresenceStateChange event ↗
- Asterisk 22 AMI PresenceStateChange event ↗
- Asterisk 23 AMI PresenceStatus event ↗
- Asterisk 22 AMI PresenceStatus event ↗
- Asterisk 23 AMI PresenceStateListComplete event ↗
- Asterisk 22 AMI PresenceStateListComplete event ↗
- Asterisk 23 PRESENCE_STATE function ↗
- Asterisk 22 PRESENCE_STATE function ↗
- Asterisk presence-state fundamentals ↗
- Asterisk state query and manipulation ↗
- Asterisk extension state and hints ↗
- Asterisk AMI event filtering ↗
- Asterisk 23 AMI ExtensionState action ↗
- Asterisk 22 AMI ExtensionState action ↗
- Asterisk 23 AMI ExtensionStateList action ↗
- Asterisk 22 AMI ExtensionStateList action ↗
- Asterisk 23 AMI ExtensionStatus event ↗
- Asterisk 22 AMI ExtensionStatus event ↗
- Asterisk 23 AMI ExtensionStateListComplete event ↗
- Asterisk 22 AMI ExtensionStateListComplete event ↗
- Asterisk 23 EXTENSION_STATE function ↗
- Asterisk 22 EXTENSION_STATE function ↗
- Asterisk 23 HINT function ↗
- Asterisk 22 HINT function ↗
- Asterisk device-state fundamentals ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.
