The MMTelDetermineFlexibleAlertingMode
feature
determines if and how the Flexible Alerting features will execute based on feature configuration and the HSS Subscriber Data.
.
The Determine Flexible Alerting Mode feature runs before the Flexible Alerting features. It reads subscriber data and configuration profile tables to determine the flexible alerting mode and supplies this information to the MMTelParallelFA and MMTelSequentialFA features as a session state field. |
Feature cheat sheet
B2BUA Instance | SAS Support | Originating/Terminating | Point(s) in Session Plan | Network Operator Data | Subscriber Data | Stateful or Stateless | POJO Feature or SBB Feature |
---|---|---|---|---|---|---|---|
All |
No |
Terminating |
Subscriber Check |
Yes |
Yes |
Stateless |
POJO |
Source Code
This feature’s source code is available in the Sentinel VoLTE SDK in the mmtel-flexible-alerting
module pack.
It can be viewed by using the create-module
command in the SDK with that module pack, for example:
> create-module new-mmtel-flexible-alerting opencloud#mmtel-flexible-alerting#volte/2.9.0;2.9.0.0
This command will prompt you for information needed to create the new modules, once completed the original source for the feature can be found in the new modules.
The module-pack includes the following modules:
Module Name | Description |
---|---|
mmtel-determine-flexible-alerting-mode |
Group module for the Determine Flexible Alerting Mode feature. |
mmtel-determine-flexible-alerting-mode-profile |
The profile for this feature |
mmtel-determine-flexible-alerting-mode-library |
The common library for this module pack |
mmtel-parallel-fa |
The flexible alerting parallel feature. |
mmtel-sequential-fa |
The flexible alerting sequential feature. |
Network Operator Data
The data present in JSLEE profile table MMTelDetermineFAConfigProfileTable
is used to configure the
behaviour of the Flexible Alerting features: MMTelParallelFA and MMTelSequentialFA.
This profile table is scoped by the sentinel key
and the Pilot Number
.
Here is an example of a profile entry:
'SomeOperatorName::::sip:callcentre@someoperator.com': ModeIsParallel: true ParallelMaxWaitTimeout: 5000 SequentialAnyResponseTimeout: 2000 SequentialFinalResponseTimeout: 5000 AddHistoryInfoHeader: false AddMpParam: false
The default profile entry is not scoped by a Pilot Number
:
'SomeOperatorName::::': ModeIsParallel: true ParallelMaxWaitTimeout: 5000 SequentialAnyResponseTimeout: 2000 SequentialFinalResponseTimeout: 5000 AddHistoryInfoHeader: false AddMpParam: false
Variable Name | Type | Comments |
---|---|---|
ParallelMaxWaitTimeout |
int |
Set the amount of time in milliseconds that the MMTelParallelFA waits for a final response before canceling the session for a pilot number. |
ModeIsParallel |
boolean |
Set the mode to parallel (true) or sequential (false). |
SequentialAnyResponseTimeout |
int |
Set the amount of time in milliseconds that the MMTelSequentialFA waits for a any response from the INVITE before start alerting the next member. |
SequentialFinalResponseTimeout |
int |
Set the amount of time in milliseconds that the MMTelSequentialFA waits for a final response from the INVITE before start alerting the next member. |
AddHistoryInfoHeader |
boolean |
Determines whether to add |
AddMpParam |
boolean |
If adding |
Session Input Variables
Variable Name | Type | Comments |
---|---|---|
Complex |
Read from the HSS in SubscriberDataLookupFromHSS |
Session Output Variables
Variable Name | Type | Comments |
---|---|---|
FlexibleAlertingMode |
Enum |
Determines whether the |
FlexibleAlertingGroupMode |
Enum |
Determines whether the |
Statistics
MMTelDetermineFAMode 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 → MMTelDetermineFAMode
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=sentinel.volte.sip,vendor=OpenCloud,version=2.9.0].SbbID[name=sentinel.volte.sip,vendor=OpenCloud,version=2.9.0].feature.MMTelDetermineFAMode"
Statistic | Type | Incremented when… |
---|---|---|
Started |
Counter |
each time the feature runs |
FAModeStarted |
Counter |
each time the feature runs |
FailedDuringExecution |
Counter |
a fatal error occurs while the feature is executing |
FailedToStart |
Counter |
Sentinel VoLTE encounters an error while attempting to start the feature. |
IssuedWarning |
Counter |
a non-fatal problem is encountered and the feature and issues a warning. |
TimedOut |
Counter |
the feature takes too long to complete and Sentinel VoLTE aborts execution. |
FAModeNoFA |
Counter |
the feature fails to trigger Flexible Alerting under FA mode |
FANoProfile |
Counter |
no valid profile is loaded for poilt subscriber |
FAValidPilotNumber |
Counter |
subscriber data equals the requestUri header. |
Behaviour
When the feature starts, it tries to load the configuration profile for the pilot number present in the flexible alerting subscriber data.
The table MMTelDetermineFAConfigProfileTable
is expected to contain a profile with name scoped by the sentinel selection key
and the Pilot Number
, i.e, SomeOperatorName::::sip:callcentre@someoperator.com
.
If there is no profile for the pilot number the feature try to get the configuration from the default profile: SomeOperatorName::::
.
When there is no suitable profile the FlexibleAlertingMode
is set to NONE
and the FlexibleAlertingGroupMode
is set to GROUP_NONE
.
It means that the neither MMTelParallelFA
nor MMTelSequentialFA will run.
When there is a suitable profile, the feature checks if the flexible-alerting is active by checking the authorized
field in the flexible-alerting Subscriber Data.
If the service is not active, i.e authorized="false"
, neither MMTelParallelFA
nor MMTelSequentialFA will run.
The HSS schema for flexible alerting defines two sets of services that can contain the key authorized
: operator-flexible-alerting
and operator-flexible-alerting-group
.
The feature checks both to define if the service is authorized. The table below shows the logic:
operator-flexible-alerting authorized |
operator-flexible-alerting-group authorized |
service status |
true |
true |
active |
true |
null |
active |
null |
true |
active |
false |
any |
inactive |
any |
false |
inactive |
null |
null |
inactive |
When flexible alerting is active, the group type in the Subscriber Data (single-user
or multiple-users
) is written into the Session State variable FlexibleAlertingGroupMode
.
The FlexibleAlertingMode
Session State field is set according to the value in the configuration profile (ModeIsParallel
attribute).
Subscriber data examples
MULTIPLE_USERS
HSS Subscriber Data
<?xml version="1.0" encoding="UTF-8"?> <Sh-Data> <RepositoryData> <ServiceIndication>MMTEL-Services</ServiceIndication> <SequenceNumber>1</SequenceNumber> <ServiceData> <MMTelServices xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:cp="urn:ietf:params:xml:ns:common-policy"> <complete-flexible-alerting> <operator-flexible-alerting authorized="true"/> <operator-flexible-alerting-group authorized="true"> <identity>sip:friends@home1.opencloud.co.nz</identity> <group-type>multiple-users</group-type> <membership>permanent</membership> <members> <member active="true">sip:bob@home1.opencloud.co.nz</member> <member active="true">sip:charlie@home1.opencloud.co.nz</member> <member active="true">sip:daisy@home1.opencloud.co.nz</member> </members> </operator-flexible-alerting-group> </complete-flexible-alerting> </MMTelServices> </ServiceData> </RepositoryData> </Sh-Data>
Profile configuration
ModeIsParallel: true ParallelMaxWaitTimeout: 20000 SequentialAnyResponseTimeout: 2000 SequentialFinalResponseTimeout: 5000
In the example above, the group sip:friends@home1.opencloud.co.nz
has three active members.
The FlexibleAlertingGroupMode is set to MULTIPLE_USERS
, the FlexibleAlertingMode is set to PARALLEL
, and the timeout is set to 20 seconds.
SINGLE_USER
HSS Subscriber Data
<Sh-Data> <RepositoryData> <ServiceIndication>MMTEL-Services</ServiceIndication> <SequenceNumber>1</SequenceNumber> <ServiceData> <MMTelServices xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:cp="urn:ietf:params:xml:ns:common-policy"> <complete-flexible-alerting> <operator-flexible-alerting authorized="true"/> <operator-flexible-alerting-group authorized="true"> <identity>sip:bob@home1.opencloud.co.nz</identity> <group-type>single-user</group-type> <membership>permanent</membership> <members> <member active="true">sip:bob@home1.opencloud.co.nz</member> <member active="true">sip:bob-mobile@home1.opencloud.co.nz</member> <member active="true">sip:bob-desk@home1.opencloud.co.nz</member> </members> </operator-flexible-alerting-group> </complete-flexible-alerting> </MMTelServices> </ServiceData> </RepositoryData> </Sh-Data>
Profile configuration
ModeIsParallel: false ParallelMaxWaitTimeout: 5000 SequentialAnyResponseTimeout: 2000 SequentialFinalResponseTimeout: 5000
In the example above, the group sip:bob@home1.opencloud.co.nz
has three active members.
The FlexibleAlertingGroupMode is set to SINGLE_USER
, the FlexibleAlertingMode is set to SEQUENTIAL
and the
timeout is for receiving any response from a member is set to 2 seconds and the timeout for receiving a final response
from a member is 5 seconds.