Description
Feature name |
DetermineRegistrationStatus |
---|---|
Applicable contexts |
SIP service |
Prerequisite Features |
None |
The Determine Registration Status feature is a pre credit check feature early in the feature list (but always after the emergency number feature).
The feature attempts to identify the user’s registration state as one of Registered or Unregistered, which is then stored in the SipRegistrationStatus
session state variable for future features.
Leg Manager inputs
Leg | Name | Type | Format | Description Behaviour if null/invalid |
---|---|---|---|---|
callingParty |
InviteRequest |
org.jainslee.resources.sip.SipRequest |
See Easysip javadoc |
INVITE received from the calling party Runtime exception handled by feature runner |
Error scenarios
Scenario | Handling |
---|---|
Failed to get an INVITE request from the calling party leg |
Report featureCannotStart |
Insufficient information to determine registration status |
Report featureFailedToExecute |
Registration status
The call’s registration status is classified as one of:
-
Registered
-
Unregistered.
A SipRegistrationStatus enum is defined to represent the values, and the registration status is stored in session state variable SipRegistrationStatus.
The session type is determined based on the following pseudo code:
Function determineRegistrationStatus(callingPartyInvite) regState = determineRegistrationStatusBasedOnPServedUser(callingPartyInvite) IF regState is null THEN featureFailedToExecute() ENDIF SipRegistrationStatus Function determineRegistrationStatusBasedOnPServedUser(callingPartyInvite) header = callingPartyInvite.getAddressHeader(P_SERVED_USER) IF header is null THEN return null ENDIF regState = header.getParameter(REGSTATE) IF regState not set THEN return null ENDIF IF regState is REG THEN return Registered ELSEIF regState is UNREG THEN return Unregistered ELSE return null
Feature responses
Response | Reason |
---|---|
featureCannotStart |
CallingParty leg InviteRequest has not been set |
featureFailedToExecute |
Registration status could not be determined |
featureHasFinished |
feature has finished |