Description
Feature name |
DetermineCallType |
---|---|
Applicable contexts |
SIP service |
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-URI
has acause
parameter with one of the following values:302
,404
,408
,480
,486
,487
,503
. -
There is a
History-Info
header present on the request.
If neither condition is met, the call type will be determined to be MobileOriginating
.