This feature handles the SIP side of the USSI conversation.
Feature cheat sheet
Feature Name | Network Operator Data | Used in PlanId(s) | Stateful or Stateless | POJO Feature or SBB Feature |
---|---|---|---|---|
HandleUssiInvite |
No |
USSI |
Stateless with FSM encoded into session state |
POJO |
Session Input variables
The feature reads the following fields in Session State
Session State variable name | Variable type | Comments |
---|---|---|
UssdTextAsText |
String |
The data to put in the <ussd-string> element of the <ussd-data> xml in the message body |
UssdLanguageDcsMapping |
enum |
An enum that indicates the supported language to put in the <language> element of the <ussd-data> xml |
UssdConversationComplete |
boolean |
Set by the Handle Mobile Initiated Ussd feature to indicate the USSD conversation is finished. |
UssiErrorCode |
int |
Set by the Handle Mobile Initiated Ussd if the response from the HLR is an error |
Session Output variables
The feature sets the following fields in Session State
Session State variable name | Variable type | Comments |
---|---|---|
MSISDN |
String |
The MSISDN extracted from the 'P-Asserted-Identity' header. |
UssdTextAsText |
String |
The <ussd-string> element of the <ussd-data> xml from the message body of the INVITE |
UssdLanguageDcsMapping |
enum |
And enum that represents the <language> element of the <ussd-data> xml from the message body of the INVITE |
Statistics
HandleUssiInvite statistics are tracked by the sentinel.ipsmgw SBB
and can be found under the following parameter set in REM:
SLEE-Usage → sentinel.ipsmgw service → sentinel.ipsmgw SBB → feature → HandleUssiInvite
or with rhino-stats:
"SLEE-Usage.Services.ServiceID[name=sentinel.ipsmgw,vendor=OpenCloud,version=4.1].SbbID[name=sentinel.ipsmgw,vendor=OpenCloud,version=4.1].feature.HandleUssiInvite"
Name | Description |
---|---|
Started |
Incremented when the feature is started. |
FailedToStart |
Incremented when Sentinel encounters an error while attempting to start the feature. |
IssuedWarning |
Incremented when a non-fatal problem is encountered and the feature and issues a warning. |
FailedDuringExecution |
Incremented when a fatal problem is encountered and the feature cannot execute correctly. |
TimedOut |
Incremented when the feature takes too long to complete and Sentinel aborts execution. |
ReceivedUssiInvite |
Incremented when the feature receives an INVITE that has a multipart/mixed message body with both USSD XML and SDP. |
SavedUssiData |
Incremented when the USSD XML data is successfully saved in session state. |
SentInvite200Response |
Incremented when the feature sends a 200 OK response to the INVITE. |
ReceivedInviteAck |
Incremented when the feature receives the ACK for the 200 OK. |
SentByeWithSuccess |
Incremented when the feature sends a BYE with successfully retrieved USSD data. |
SentByeWithError |
Incremented when the feature sends a BYE with a error in the USSD text. |
ReceivedBye200Response |
Incremented when the feature receives the 200 OK to the BYE. |
EndSessionInError |
Incremented when the feature ends the session due to an error. |
Behaviour
This features handles all of the SIP messaging for a USSI conversation.
It starts by receiving the INVITE and checking it for an SDP body with media ports set to 0, as well as the presence of the ussd-data XML body. When this is confirmed it will save the 'ussd-string' and 'language' fields into session state as well as extracting the MSISDN from the 'P-Asserted-Identity' header.
It will then send a '200 OK' response with the following set:
-
Recv-Info header field containing the g.3gpp.ussd info-package name
-
The 'Accept' header field containing the 'application/vnd.3gpp.ussd+xml', 'application/sdp' and 'multipart/mixed' MIME types
-
SDP answer as described in subclause 4.5.2 of 3GPP TS 24.390
The feature then waits for the 'ACK' to the '200 OK', as well as for the MAP conversation to complete which is handled by the Handle Mobile Initiated Ussd feature. When both of these requirements are satisfied the feature will send a 'BYE' with a application/vnd.3gpp.ussd+xml MIME body, as described in subclause 5.1.3 of 3GPP TS 24.390 including a <ussd-string> element and a <language> element. Or a 'BYE' with a application/vnd.3gpp.ussd+xml MIME body, as described in subclause 5.1.3 of 3GPP TS 24.390 including a <error-code> element.