This feature analyses the request-uri of an originating trigger to determine if the dialed digits match the dial plan
Feature cheat sheet
B2BUA Instance | SAS Support | Originating / Terminating | Point in Session Plan | Network Operator Data | Subscriber Data | Stateful or Stateless | POJO Feature or SBB Feature |
---|---|---|---|---|---|---|---|
MMTEL |
Yes |
Originating |
|
No |
No |
Stateless |
POJO |
Prerequisite features
DialPlanEnforcement should run after the DetermineVoltePlanId feature.
Session input and output variables
Session input variables
Session state variable name | Variable type | Comments |
---|---|---|
SentinelSelectionKey |
SentinelSelectionKey |
|
Session output variables
Session state variable name | Variable type | Comments |
---|---|---|
RejectedCallAsDialPlanDoesNotMatch |
boolean |
The call is being rejected |
AnnouncementID |
int |
The announcement to play (for SipPlayAnnouncement) |
EndSessionAfterAnnouncement |
int |
End the session with this sip response, after playing an announcement (for SipPlayAnnouncement) |
Statistics
DetermineInitialLegNames statistics are tracked by the sentinel.volte.sip SBB
and can be found under the following parameter set in REM:
SLEE-Usage → sentinel.volte.sip service → sentinel.volte.sip SBB → feature → DialPlanEnforcement
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=sentinel.volte.sip,vendor=OpenCloud,version=3.1.0].SbbID[name=sentinel.volte.sip,vendor=OpenCloud,version=3.1.0].feature.DialPlanEnforcement"
Name | Description |
---|---|
FeatureStarted |
Incremented each time the feature runs |
FeatureFailedToStart |
Incremented when Sentinel VoLTE encounters an error while attempting to start the feature |
FeatureIssuedWarning |
Incremented when a non-fatal problem is encountered and the feature issues a warning |
FeatureFailedDuringExecution |
Incremented when a fatal problem is encountered and the feature cannot execute correctly |
FeatureTimedOut |
Incremented when the feature takes too long to complete and Sentinel VoLTE aborts execution |
IgnoringAddress |
Incremented when analysis is not required |
DialPlanMatched |
Incremented when the call is allowed as the dialed digits match the dial plan |
DialPlanIsNotMatched |
Incremented when the call is rejected as the dialed digits do not match the dial plan |
Configuration
The DialPlanEnforcement feature uses configuration data from the DialPlanEnforcementConfigProfileTable
and the NormalizationFeatureConfigProfileTable
.
DialPlanEnforcementConfigProfileTable
The profiles within this table have the following fields:
Parameter | Type | Description |
---|---|---|
|
boolean |
Whether a session should be ended with an announcement if the dialed digits do not match the dial plan |
|
int |
The announcement to play if the dialed digits do not match the dial plan. The announcement ID should correspond to an ID that has been configured for SipPlayAnnouncement |
|
int |
The SIP response code to use when ending the session |
|
String[] |
Set of prefixes to check for in the dialed digit string. PrefixesToCheck may be empty. The length of PrefixesToCheck, MinimumNumberOfDigitsPerPrefix and MaximumNumberOfDigitsPerPrefix must be the same |
|
int[] |
Minimum allowed length of dialed digits (after the prefix) per prefix. Must have the same number of elements as PrefixesToCheck. The value of each element may be 0 and must be less then the corresponding element in MaximumNumberOfDigitsPerPrefix |
|
int[] |
Maximum allowed length of dialed digits (after the prefix) per prefix. Must have the same number of elements as PrefixesToCheck. The value of each element in MaximumNumberOfDigitsPerPrefix must be greater than the corresponding element in MinimumNumberOfDigitsPerPrefix |
|
int |
The required length of dialed digits if there are no prefixes configured or matched. The value must be within the range 7 .. 20. |
DialPlanEnforcement checks for prefixes in order from the longest prefix first. |
NormalizationFeatureConfigProfileTable
The DialPlanEnforcement uses the following fields from profiles within this table:
Parameter | Type | Description |
---|---|---|
|
String |
National dialling prefix (for example, 0) |
|
String |
Escape code for dialing international numbers (for example, 00) |
|
Integer |
The minimum length of an address for it to be normalizable |
Behaviour
The first step is to determine if DialPlanEnforcement should be applied to the incoming trigger. The following conditions must be satisfied:
-
the sentinel selection key plan ID field is MMTEL_ORIG
-
the request-uri is a phone number (either a Tel URL or a SIP URI with a phone number in the user part)
-
the DialPlanEnforcement feature is enabled (
config.EndSessionOnEnforcement
is true) -
the number of dialed digits is greater than, or equal to, the minimum number for analysis
The minimum number for analysis is the minimum value of these properties:
|
If DialPlanEnforcement should be applied, then the following analysis of the request-uri is conducted.
-
If the dialed digits is an international number, starts
normalizerconfig.NationalPrefix
or starts withnormalizerconfig.InternationalEscapeCode
then accept the trigger otherwise continue analysis. -
Check for prefixes in the dialed digit string in order from the longest prefix first. If there is a prefix match, then compare the number of digits after the prefix to the allowed minimum and allowed maximum configured for that prefix. If the number of digits in within range accept the trigger, otherwise reject the trigger by requesting an announcement to be played (
config.EndSessionAnnouncementID
) and ending the session. -
If no prefix match is made, compare the number of dialed digits to
config.DefaultMaximumNumberOfDigits
. If the number of digits is less than, or equal to,config.DefaultMaximumNumberOfDigits
then accept the trigger otherwise reject the trigger by requesting an announcement to be played (config.EndSessionAnnouncementID) and ending the session.
A SAS event is generated when DialPlanEnforcement accepts a trigger or rejects a trigger. |