SetOcsAnnouncementID schedules configurable announcements to the subscriber based on Credit-Control-Answers
The feature schedules charging announcements as defined by TS 32.281 as well as announcements for out-of-credit (4012 CCA result code), low balance (Low-Balance-Indicator AVP), and for custom OC-Play-Announcement-Id AVPs.
The feature runs on every successful and 4012 credit check result and analyses the CCA for announcement triggers:
-
Multiple-Services-Credit-Control
AVP containingAnnouncement-Information
AVP; -
OC-Play-Announcement-Id
AVP; -
low balance AVP; or
-
result code 4012.
If the CCA contains such a trigger then the feature schedules the relevant announcement either immediately or on a timer relative to quota exhaustion. The feature is able to schedule multiple announcements to be played.
The feature also runs on each party request for a terminating call to determine whether the session has been established and so if a reauthorization request should be triggered or whether any timers should be set relative to quota exhaustion to start announcements. The feature runs on timer expiry to start any announcements that were scheduled on timers.
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 | Other notes |
---|---|---|---|---|---|---|---|---|
MMTEL. |
Yes |
Originating, Forwarding, and Terminating |
|
Yes |
No |
Stateless |
POJO |
Behaviour
Announcements requested in the Announcement-Information AVP are played in preference to other announcements. Announcements requested in the OC-Play-Announcement-Id AVP are played if no Announcement-Information announcements are present and configured announcement IDs for out-of-credit (4012 CCA result code) or low balance (Low-Balance-Indicator AVP) are only played if no Announcement-Information or OC-Play-Announcement-Id AVPs were present.
Call phase | Announcement-Information AVP | Low Balance Indicator AVP | 4012 Out-of- Credit | Behaviour |
---|---|---|---|---|
Early media |
Present |
Not present |
Not present |
Charging announcement played, call continues |
Early media |
Present |
Present |
Not present |
Charging announcement played, call continues (configured low balance announcement not played) |
Early media |
Present |
Not present |
Present |
Charging announcement played, call ends |
Early media |
Not present |
Present |
Not present |
Low balance feature configured announcement played, call continues |
Early media |
Not present |
Present |
Present |
Out of credit feature configured announcement played, call ends |
Mid call |
Present |
Not present |
Not present |
Charging announcement played, call continues |
Mid call |
Present |
Present |
Not present |
Charging announcement played, call continues (configured low balance announcement not played) |
Mid call |
Present |
Not present |
Present |
Charging announcement played, call ends |
Mid call |
Not present |
Present |
Not present |
Low balance feature configured announcement played, call continues |
Mid call |
Not present |
Present |
Present |
Out of credit feature configured announcement played, call ends |
Announcements for terminating user
It is not possible to play announcements to the terminating subscriber after the initial credit check as the session has not yet been established. Announcements requested by Announcement-Information AVPs to be played to the terminating party in the initial credit check are not played. If other announcements were requested when running as a terminating instance then a reauthorization request will be sent once the session is established. Any announcements in the response to this subsequent reauthorization request will be played. The reauthorization request can be delayed for a number of milliseconds using the ChargingReauthDelayMillis
configuration field.
Mid call announcements to the terminating subscriber will be played immediately.
Charging Announcements
The Announcement-Information AVP and its child AVPs were introduced in 3GPP Rel. 13 but Sentinel does support receiving them in Rel. 12.
Child AVP | Behaviour |
---|---|
Announcement-Identifier |
Contains the ID for the announcement. This must be present and non-zero. |
Variable-Part |
Ignored |
Time-Indicator |
If present and non-zero a timer will be set relative to quota exhaustion and the announcement scheduled on timer expiry. If zero the announcement will be scheduled once the quota is exhausted and the call ended. If a credit check occurs before the timer fires or quota is exhausted then the announcement will not be played. An announcement with Time-Indicator 0 will only be played if the CCA contained a Final-Units-Indication AVP. |
Quota-Indicator |
If present this determines whether the user will be charged for the announcement. If not present, local announcement configuration will be used instead. This is ignored for early media announcements. |
Announcement-Order |
If multiple announcements are set in the CCA this should be used to order them. |
Play-Alternative |
If present determines whether the announcement should be played to the served or remote user. If not present the announcement will be played to the served user. If multiple announcements are present only announcements to the party with the lowest Announcement-Order will be played. |
Privacy-Indicator |
Ignored. The announcement is only to the requested party. |
Language |
If present this will be used in the request to the MRF, otherwise the determined language will be used. |
Low Balance Announcements
If the LowBalanceIndicator AVP is set in a successful CCA-I or CCA-U then a low balance announcement will be played (either configured or via the OC-Play-Announcement-Id-AVP) and a session state field is set to mark that a low balance announcement has been played. Subsequent credit checks will not trigger another low balance announcement unless the previous credit check response did not have the LowBalanceIndicator AVP set.
Out of Credit Announcements
If a credit check response contains a 4012 result code then:
-
For early originating sessions, the feature will schedule the configured early dialog announcement if an announcement was not supplied in the CCA and then end the session with the appropriate sip error response according to the CCA result code.
-
For early terminating and forwarding sessions, the feature will not schedule an announcement and will end the session with a 480 Temporarily Unavailable response.
-
For confirmed originating and terminating sessions, the feature will schedule the configured mid session announcement if an announcement was not supplied in the CCA and then end the session.
Session state input variables
Attribute Name | Type |
---|---|
LatestOcsAnswer |
org.jainslee.resources.diameter.ro.types.vcb0.CreditControlAnswer |
LegForCdrs |
String |
CallType |
com.opencloud.sentinel.common.CallType |
LowBalanceReauthTimerId |
javax.slee.facilities.TimerID |
Session state output variables
Attribute Name | Type | Description |
---|---|---|
EarlyMediaAnnouncementInfoQueue |
List |
A List of early dialog announcements to play, if any |
MidCallAnnouncementInfoQueue |
List |
A list of the mid call announcements to play, if any |
EndSessionAfterAnnouncement |
int |
The Sip response error code for the SipPlayAnnouncement feature to use on endSession. |
EndSessionWithAnnouncement |
boolean |
Set to true if session should end after announcement is played. |
MidCallAnnouncementPlayedParty |
String |
Leg name indicating which party the announcement will be played to |
MidCallEndSessionWithAnnouncement |
boolean |
Set to true if session should end after announcement is played. |
UserEndSessionCause |
int |
The Sip response error code to use on endSession, if applicable. |
LowBalanceAnnouncementPlayed |
boolean |
Set to true when a low balance announcement has been scheduled. Set to false when a CCA is received without a |
OcsAnnouncementPlayed |
boolean |
Set to true when |
AnnouncementTimersMapping |
Map |
A map of TimerID to the SipAnnouncementInformation to be scheduled on the timer firing. |
AnnouncementTimersPostponed |
Boolean |
Set to true if the initial CCA requested an announcement to be played on a timer. |
Configuration
SetOcsAnnouncementID
uses two JSLEE configuration profile tables: LowBalanceAnnouncementConfigProfileTable
and SetOutOfCreditAnnouncementIDConfigProfileTable
.
Attribute Name | Profile Table | Type | Description |
---|---|---|---|
EarlyDialogLowBalanceAnnouncementID |
LowBalanceAnnouncementConfigProfileTable |
int |
The ID of the early dialog announcement to play, if any |
MidSessionLowBalanceAnnouncementID |
LowBalanceAnnouncementConfigProfileTable |
int |
The ID of the mid call announcement to play, if any |
ChargingReauthDelayMillis |
LowBalanceAnnouncementConfigProfileTable |
long |
When a terminating call is ACKed and the latest CCA indicates a low balance, a delayed credit check will be performed to postpone playing an announcement. The reauth will be delayed by the amount specified here (0 triggers an immediate reauth.) This allows time for the ACK to propagate through the network to ensure the played party is fully connected before triggering the announcement after receiving another CCA-U with low balance indicator. |
OutOfCreditAnnouncementID |
SetOutOfCreditAnnouncementIDConfigProfileTable |
int |
The ID of the early dialog announcement to play, if any |
MidSessionOutOfCreditAnnouncementID |
SetOutOfCreditAnnouncementIDConfigProfileTable |
int |
The ID of the mid call announcement to play, if any |
Statistics
SetOcsAnnouncementID
statistics are tracked by the SetOcsAnnouncementID
feature and can be found under the following parameter set:
SLEE-Usage ▶ sentinel.volte.sip service ID ▶ sentinel.volte.sip SBB ID ▶ SetOcsAnnouncementID.
Name | Type | Description |
---|---|---|
Started |
Counter |
Incremented each time the feature runs. |
FailedToStart |
Counter |
Incremented when Sentinel VoLTE encounters an error while attempting to start the feature. |
IssuedWarning |
Counter |
Incremented when a non-fatal problem is encountered and the feature issues a warning. |
FailedDuringExecution |
Counter |
Incremented when a fatal problem is encountered and the feature cannot execute correctly. |
TimedOut |
Counter |
Incremented when the feature takes too long to complete and Sentinel VoLTE aborts execution. |
InvalidExecutionPoint |
Counter |
Incremented whenever the feature is invoked in an invalid execution point. Indicates misconfigured feature scripts. |
IgnoringRepeatLowBalance |
Counter |
The feature will not trigger a second announcement for ongoing low balance indicators. |
ClearLowBalancePlayed |
Counter |
If a CCA is received with no low balance indicator, any subsequent low balance will trigger another announcement. |
StartReauthTimer |
Counter |
Incremented when a terminating call is ACKed but the latest CCA indicates an announcement is requested. |
LowBalanceReauthTimerEventReceived |
Counter |
Incremented whenever a reauthorization timer event is received. |
DoCreditReauth |
Counter |
Incremented whenever the feature issues a credit reauth. |
ScheduledOcPlayAnnouncementId |
Counter |
Incremented whenever an OC-Play-Announcement-Id announcement is enqueued. |
EarlyDialogLowBalanceAnnouncementIDSet |
Counter |
Incremented whenever a configured early media Low Balance Announcement ID is enqueued. |
MidSessionLowBalanceAnnouncementIDSet |
Counter |
Incremented whenever a configured mid call Low Balance Announcement ID is enqueued. |
EarlyDialogOutOfCreditAnnouncementIDSet |
Counter |
Incremented whenever a configured early media Out of Credit Announcement ID is enqueued. |
MidSessionOutOfCreditAnnouncementIDSet |
Counter |
Incremented whenever a configured mid call Out of Credit Announcement ID is enqueued. |
EndSessionCauseSet |
Counter |
Incremented whenever a session is terminated due to running out of credit. |
NoOutOfCreditAnnouncementID |
Counter |
Incremented whenever an early media Out of Credit Announcement cannot be played as there is no configured announcement ID. |
NoMidSessionOutOfCreditAnnouncementID |
Counter |
Incremented whenever a mid call Out of Credit Announcement cannot be played as there is no configured announcement ID. |
UnableToDetermineEndSessionCause |
Counter |
Incremented whenever the end of session cause code could not be determined. |
MissingLegForCdrs |
Counter |
Incremented whenever the leg to play announcements too could not be determined. |
ScheduledAnnouncementInformation |
Counter |
Incremented whenever an Announcement-Information AVP announcement is scheduled. |