This feature inspects the initial SIP request to determine the subscriber address and subscription ID for the current session.
Description
Feature name |
SipSubscriberDetermination |
|---|---|
Applicable contexts |
SIP service |
SAS Support |
Yes |
Prerequisite features |
DetermineCallType |
Leg Manager inputs
| Leg | Name | Type | Purpose |
|---|---|---|---|
calledParty |
MessagesToSend |
SipMessageQueue |
Retrieve the outbound SIP request on the called party leg. |
Session state inputs and outputs
Inputs
| Name | Type | Purpose |
|---|---|---|
CallType |
CallType enum |
Determines which header to inspect for the subscriber address if P-Served-User is not present. |
Subscriber |
String |
Checked to ensure the feature does not overwrite an already determined subscriber address. |
SubscriptionId |
String |
Checked to ensure the feature does not overwrite an already determined subscription ID. |
Outputs
| Name | Type | Purpose |
|---|---|---|
Subscriber |
String |
Set to the determined subscriber address, if it was not already set. |
SubscriptionId |
String |
Set to the determined subscription ID, if it was not already set. |
SubscriptionIdType |
SubscriptionIdType enum |
Set to the type of the determined subscription ID. |
Error scenarios
| Scenario | Handling |
|---|---|
Calling or Called party leg not found. |
Report featureFailedToExecute |
No outbound request on called party leg. |
Report featureFailedToExecute |
Failure to parse SIP headers |
Report featureFailedToExecute |
No Call Type in session state |
Report featureFailedToExecute |
No subscriber address could be determined from any of the expected headers |
Report featureFailedToExecute |
Feature responses
| Response | Reason |
|---|---|
featureFailedToExecute |
Any of the error scenarios described above/ |
featureHasFinished |
Feature completed execution, regardless of whether a subscriber address was successfully determined or not. |
Behaviour
The feature examines the outbound SIP request towards the called party to determine the subscriber address and subscription ID for the session. Examining the outbound request ensures the feature sees any modifications made by earlier features in the call flow (e.g. Normalisation).
The feature determine two pieces of information: the subscriber address and the subscription ID.
Subscriber address
The subscriber address is determined through the following steps:
-
Check if the
Subscribersession state field is already set. If so, use that value as the subscriber address. -
Check if the outbound SIP request contains a
P-Served-Userheader. If so, use the URI in that header as the subscriber address. -
Check the Call Type in session state.
-
For
MobileOriginating,MobileForwarded, andNetworkInitiatedcall types, check if the outbound SIP request contains aP-Asserted-Identityheader. If so, use the URI in that header as the subscriber address. -
For
MobileTerminatingcall types, use the Request-URI as the subscriber address.
-
If after these steps a subscriber address has been determined,
any URI parameters will be removed and the resulting value set in the Subscriber session state field.
If no subscriber address could be determined, the feature reports and error and finishes execution.
Subscription ID
The subscription ID is derived from the source as the subscriber address determined in the previous steps.
There are two parts to the subscription ID:
-
the subscription ID value, to be set in the
SubscriptionIdsession state field, and -
the subscription ID type, to be set in the
SubscriptionIdTypesession state field.
If the SubscriptionId session state field is already set, the feature will not modify the subscription ID value or type.
If it is not set, the feature will attempt to determine the subscription ID value and type as follows:
If the data source for the subscriber address is:
-
A
tel:URI, or -
A
sip:URI with the user part being a valid local or global phone number according to RFC 2806, and theuser=phoneparameter set
then the number will be extracted from the URI and set in the SubscriptionId session state field.
The SubscriptionIdType field will be set to END_USER_E164.
Otherwise, the URI will be stripped of any parameters and set in the SubscriptionId session state field.
The SubscriptionIdType field will be set to END_USER_SIP_URI.
