Description
Feature name |
DetermineCallType |
|---|---|
Applicable contexts |
SIP service |
SAS Support |
No |
Prerequisite Features |
None |
The Determine Call Type 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 call’s type, one of MobileOriginating, MobileTerminating, or MobileForwarded, which is stored in the CallType 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 (respectively, in the NetworkInitiated case, sent to) the calling party |
Runtime exception handled by feature runner |
Configuration
| Parameters | Type | Description |
|---|---|---|
additionalCallForwardingDetection |
boolean |
When true, additional parameters will be considered when distinguishing between |
Configuration feature naming
| Configuration Profile Table Name | Description | Profile Naming |
|---|---|---|
DetermineCallTypeConfigurationTable |
Sentinel configuration table |
SentinelSelectionKey (for example, |
Statistics
| Statistic | When incremented |
|---|---|
Started |
The feature is invoked. |
FailedToStart |
The feature fails to start. |
IssuedWarning |
The feature encounters a non-fatal error and alerts the core. |
FailedDuringExecution |
The feature encounters any fatal error and alerts that core. |
TimedOut |
The feature fails to complete execution within the allowable time frame. |
CallTypeIsMobileOriginating |
The feature determines that the call type is |
CallTypeIsMobileTerminating |
The feature determines that the call type is |
CallTypeIsMobileForwarded |
The feature determines that the call type is |
Error scenarios
| Scenario | Handling |
|---|---|
Failed to get INVITE request from calling party leg |
Report featureCannotStart |
Insufficient information to determine call type |
Report featureFailedToExecute |
Feature responses
| Response | Reason |
|---|---|
featureCannotStart |
CallingParty leg InviteRequest has not been set |
featureFailedToExecute |
Call type could not be determined |
featureHasFinished |
feature has finished |
Behaviour
The call’s session type is classified as one of:
-
MobileOriginating -
MobileTerminating -
MobileForwarded
A CallType enum is defined to represent the values, and the session type is stored in session state variable CallType.
The feature uses either one of two headers on an incoming SIP request to determine the call type: P-Served-User and Route.
The P-Served-User header is the preferred source of information.
The Route header is only checked if the call type cannot be determined from the P-Served-User header.
P-Served-User Header
There are two parameters of interest on the P-Served-User header.
The first is a valueless orig-cdiv parameter, if this is present the call type will be classified as MobileForwarded.
Otherwise, the feature will look for the sescase parameter, the value of that parameter will determine the call type as follows:
| Parameter Value | Resulting Call Type |
|---|---|
|
|
|
|
|
|
If none of these parameters or values are present, the feature will check the Route header instead.
Route Header
The feature always looks at the top-most route header of the incoming message. It will look for the following valueless parameters on the header to determine the call type:
| Parameter Name | Resulting Call Type |
|---|---|
|
|
|
|
|
|
If none of these parameters or values are present, the feature will use the default call type: MobileTerminating.
Additional Call Forwarding Detection
When a parameter on the P-Served-User or Route header indicates the call type is MobileOriginating
and the AdditionalCallForwardingDetection config option is set to true,
the feature will execute additional checks to determine if the call has been forwarded.
There two additional checks, one on the Request-URI the other on the History-Info header.
The call type will be determined to be MobileForwarded if either one of the following conditions are met:
-
The
Request-URIhas acauseparameter with one of the following values:302,404,408,480,486,487,503. -
There is a
History-Infoheader present on the request.
If neither condition is met, the call type will be determined to be MobileOriginating.
