SipInterimCdr
is a system feature that is responsible for writing interim Call
Detail Records and/or Diameter Accounting Requests (ACRs) throughout the session.
SipInterimCdr
runs at various key points throughout a session and if any of its write conditions are met it writes either or both of:
-
an interim AVP CDR using the
cdr-ra
-
an ACR using the
rf-control-ra
Interim AVP CDRs and Diameter Accounting Records (ACRs) have substantially similar content and the same triggering logic hence both are supported by this feature.
The feature maintains a timer for the interim CDR period. This timer may be adjusted according to the Rf accounting interval provided by the CDF. The interim CDR timer is armed redundantly if session replication is enabled.
By default, Sentinel runs featurescript OnPostSubscriberCheck { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPMonitor mode "post" run DetermineCauseCode run DiameterServiceInfo run SipInterimCdr } |
Details
Feature script name |
SipInterimCdr |
---|---|
Applicable contexts |
SIP service |
SAS Support |
No |
Prerequisite features |
None, but information from various features is used if available |
Session state inputs and outputs
Control flags indicating that an interim CDR should be written
Name | Type | Description | Where set |
---|---|---|---|
WriteCdrOnSDPChange |
boolean |
Indicates that a meaningful SDP change occurred on a monitored leg |
|
LegForCdrs |
String |
Name of the leg for which CDRs and/or ACRs should be written |
Defaults to |
Inputs
If any of these fields are unset the feature will skip writing the current CDR and/or ACR.
Name | Type | Description | Where set |
---|---|---|---|
CallId |
String |
The unique ID of the call |
|
CallType |
Enumerated |
The type of the call. One of |
|
ChargingResult |
int |
The result code of the Diameter session |
Sentinel SIP service |
DiameterServiceContextId |
String |
The Diameter context ID of the relevant service |
|
EndSessionCause |
Integer |
The end session cause code |
|
EventId |
String |
|
|
ImsInformation |
org.jainslee.resources.diameter .ro.types.vcb0.ImsInformation |
The IMS-Information Diameter AVP |
|
LatestOcsAnswer |
org.jainslee.resources.diameter .ro.types.vcb0.CreditControlAnswer |
The latest OCS response message |
Sentinel SIP service |
PlayedAnnouncementIDs |
int[] |
IDs of the played announcements |
SipPlayAnnouncement feature, SipMidCallPlayAnnouncement feature |
OcsSessionIds |
String[] |
An array of all the OCS session IDs for the call |
Various features |
OcsSessionTerminationCause |
Integer |
The OCS session termination cause |
Sentinel SIP service |
SentinelSelectionKey |
com.opencloud.sentinel .common.SentinelSelectionKey |
The selection key (for example, |
Various features |
SipServiceType |
Enumerated |
The type of service Sentinel is processing. One of |
|
Subscriber |
String |
The subscriber associated with the session |
Statistics
Name | Description |
---|---|
CDRWritten |
Number of times a CDR or ACR was successfully written |
CDRWriteError |
Number of times a CDR or ACR was not successfully written |
EventCDRWritten |
Number of times an Event CDR or ACR was successfully written |
StartCDRWritten |
Number of times a Start CDR or ACR was successfully written |
InterimCDRWritten |
Number of times a Interim CDR or ACR was successfully written |
StopCDRWritten |
Number of times a Stop CDR or ACR was successfully written |
TriggeredOnSDPChange |
Number of times the feature was triggered due to SDP change |
TriggeredOnInterimCdrTimer |
Number of times the 'InterimCdrTimer' fired |
NoLegForCdr |
Number of times the feature ran with no leg for CDRs configured |
RfControlActivityLost |
Number of times rfControlActivity was lost from session state so a CDR or ACR was not successfully written |
Functionality
This feature can be configured to:
-
write CDRs to the local filesystem (through the
cdr-ra
), and/or -
write ACRs using the Diameter Rf protocol (through the
rf-control-ra
)
This feature uses the information from the session state fields mentioned above and constructs a CDR and/or ACR for output. See AVP CDR Format for the format of the CDRs.
Although the feature runs in many execution points, it inspects various session state fields to decide whether or not to write an interim CDR and/or ACR.
An interim CDR and/or ACR will be written under any of the following conditions:
-
On the initial SIP request on the 'LegForCdrs'
-
On the
SipInterimCdr
feature timer, if no CDR has been recently written -
On session end
-
When a feature (e.g. SDP Monitor) sets
WriteCdrOnSDPChange
to true
When the feature is about to write an INTERIM or STOP ACR for a Sentinel Session, if checks if the current Rhino node has an Rf Control Activity for the Diameter Rf session. If it does not, a new Rf Control Activity is started using the same Rf session identifier. This fails over the Rf session.
Also see Charging Information for general information about the contents of CDRs, ACRs and CCRs.
This feature only supports writing binary CDRs. If the cdr-ra is
configured to write text CDRs the feature will fail to execute.
|
Configuration
These parameters configure the feature:
Parameter | Type | Description |
---|---|---|
WriteCdrOnSDPChange |
boolean |
When a meaningful SDP change occurs on a monitored leg, write a CDR |
InterimTimerPeriod |
long |
The maximum duration in seconds between timer driven interim CDRs. Setting this to zero will disable timer based interim CDRs. |
UseCdrRa |
boolean |
Whether interim CDRs should be written to disk using the |
UseRfControlRa |
boolean |
Whether ACRs should be written using the |
Configuration profile naming
Configuration Profile Table Name | Description | Profile Naming |
---|---|---|
SipInterimCdrProfileTable |
SipInterimCdr feature configuration parameters |
SentinelSelectionKey (for example, |
Feature responses
Response | Reason |
---|---|
featureHasFinished |
feature has finished |
featureFailedToExecute |
Cause.invalidSessionState, "rfControlActivity no longer in session state" |
Provisioning interfaces
The feature is provisioned using the Sentinel Features REST API or web interface.