Description
Feature name |
EndMidSession |
|---|---|
Applicable contexts |
SIP Service |
SAS Support |
No |
Prerequisite Features |
None |
Sentinel mid session feature to notify the Sentinel core to end the call. When notifying the core the cause code is determined according to the following pseudo-code:
FUNCTION determineCauseCode()
// an error set by another feature takes highest precedence
cause = sessionState.getUserEndSessionCause()
IF cause IS SET
return cause
// otherwise try to determine the release cause from the latest CCA
cause = determineCauseFromCCA(sessionState.getLatestOcsAnswer())
IF cause IS SET
return cause
// otherwise use a default
return SipResponse.SC_FORBIDDEN
FUNCTION determineCauseFromCCA(cca)
//if there was no CCA, we cannot determine a code from there; CALL_REJECTED will be set
if cca IS UNSET
return null
SWITCH (cca.getResultCode())
CASE DiameterCcaResultCode.DIAMETER_USER_UNKNOWN
return SipResponse.SC_NOT_FOUND
CASE DiameterCcaResultCode.DIAMETER_CREDIT_LIMIT_REACHED
return SipResponse.SC_PAYMENT_REQUIRED
CASE DiameterResultCode.DIAMETER_SUCCESS
return determineCauseFromMscc(cca)
DEFAULT
return SipResponse.SC_FORBIDDEN
Supports ‘sip_trigger’, ‘http_trigger’ and ‘sipcall’ session types.
Session state inputs and outputs
Inputs
| Name | Type | Format | Description | Behaviour if null/invalid |
|---|---|---|---|---|
SessionType |
com.opencloud.sentinel.common.SessionType |
One of: sip_trigger, http_trigger, sipcall |
Session type of this call for choosing how to determine cause code from LatestOcsAnswer |
Report featureFailedToExecute, featureHasFinished |
UserEndSessionCause |
Integer |
Any release code |
A pre-determined release cause |
Attempt to determine cause from LatestOcsAnswer |
LatestOcsAnswer |
org.jainslee.resources.diameter.ro.types.CreditControlAnswer |
For determining release cause code if the UserReleaseCause is not set |
Use default call release cause SC_FORBIDDEN |
Feature responses
| Response | Reason |
|---|---|
featureHasFinished |
feature has finished |
featureFailedToExecute |
Invalid session type — trigger should be one of sip_trigger, http_trigger, or sipcall |
