Response Processing
Response Processing
When a Diameter response is received, the DSG-SCP is able to parse the message to determine the actions to take with the call being processed.
Configuration may be applied to:
- Extract and act on the Diameter
Result-Code
AVP value(s) returned. - Provide the granted time to the network, if any.
- Apply (or not) a tone in the case of
Final-Unit-Indication
.
A sample Diameter response configuration might be:
<application name="<application instance name>" module="DsgScpApp">
...
<config>
<diameter>
...
<response>
<result_codes>
<rule code="4011" action="continue_free" />
<rule code="4012" at_terminate="false" action="announcement_release" srf_name="OnSwitch" announcement_id="1" />
<rule code="4012" is_bf="true" action="release" cause="16" />
<rule from="4000" to="4999" action="announcement_release" srf_name="OnSwitch" announcement_id="2" />
<rule from="5000" to="5999" action="announcement_release" srf_name="OnSwitch" announcement_id="3" />
</result_codes>
<tones>
<rule tone="1" tag="network" value="home" />
</tones>
<read_mscc_avps />
<read_root_avps>
<avp code="423"> <!-- Cost-Information -->
<avp code="445"> <!-- Unit-Value -->
<avp code="447" to_tag="cost_value" /> <!-- Value-Digits -->
<avp code="429" to_tag="cost_exp" /> <!-- Exponent -->
</avp>
</avp>
</read_root_avps>
</response>
...
</diameter>
...
</config>
...
This configuration would parse Diameter answers with the following behaviour:
- If the Diameter
Result-Code
value4011
(DIAMETER_CREDIT_CONTROL_NOT_APPLICABLE
) is returned, allow the call to continue without monitoring or rating. - If the Diameter
Result-Code
value4012
(DIAMETER_CREDIT_LIMIT_REACHED
) is returned prior to final interrogation, play announcement ID1
using the SRF endpoint namedOnSwitch
, then release the call with the default release cause. - If the Diameter
Result-Code
value4012
is returned at final interrogation, release the call with release cause16
and mark the EDR as a billing failure. - If the Diameter
Result-Code
value returned is for a transient error (4xxx
), play announcement ID2
using the SRF endpoint namedOnSwitch
, then release the call with the default release cause. - If the Diameter
Result-Code
value returned is for a permanent error (5xxx
), play announcement ID3
using the SRF endpoint namedOnSwitch
, then release the call with the default release cause. - For other Diameter
Result-Code
values, apply default handling. - If the OCS returns
Final-Unit-Indication
or the Result-Code rule action selected iscontinue_period
:- If the tag
network
is set tohome
, set thereleaseIfdurationExceeded
→tone
parameter in theApplyCharging
operation. - Otherwise, use the SSP model
default_release_tone
to settone
.
- If the tag
- Read the value of the
Cost-Information
→Unit-Value
→Value-Digits
andExponent
AVPs and write them to the tagscost_value
andcost_exp
respectively.
Configuration Details
The config
→ diameter
→ response
configuration block holds configuration for the specific handling that is applied
to received Diameter answer messages from the OCS. The available element attributes and children are:
Attribute | Type | Description |
---|---|---|
.result_codes
|
Array |
Array of Diameter Result-Code rules for Diameter answer messages. Regardless of the rules defined
here, default handling is applied afterward if no rules match, as described under
Default Result-Code Rules.
|
.rule
|
Object |
Provisions a Result-Code rule for defining the handling of Diameter
Result-Code values received.
|
.tones
|
Array |
Array of rules for setting the CAMEL releaseIfdurationExceeded → tone in ApplyCharging
messages.Note that these values are only used when the final grant of a call is made, i.e. when the OCS has returned Final-Unit-Indication > or the
Result-Code rule action selected is continue_period .
|
.rule
|
Object |
Provisions a Result-Code rule for defining the handling of Diameter
Result-Code values received.
|
read_mscc_avps
|
Array |
Holds the AVPs to be read from the Diameter
Multiple-Services-Credit-Control AVP.
|
.avp
|
Object |
[Required] Provisions a single read AVP definition for AVPs in the
Diameter Multiple-Services-Credit-Control AVP for writing to
tags.
|
read_root_avps
|
Array | Holds the AVPs to be read from the root of the Diameter message. |
.avp
|
Object | [Required] Provisions a single read AVP definition for AVPs in the root of the Diameter message for writing to tags. |
Read AVP Definitions
Within the read_mscc_avps
and read_root_avps
blocks, an AVP tree can be specified for reading into
tag values from Diameter response messages that are received.
Each avp
definition may be either a leaf AVP, containing a tag destination, or may contain other avp
definitions.
Note that all AVPs listed for reading must be pre-configured in the N2SVCD Diameter codec. Refer to the N2SVCD technical guide for details.
The available element attributes and children for each avp
definition are:
Attribute | Type | Description |
---|---|---|
code
|
String |
[Required] The AVP code for this AVP definition. The combination of the code and
vendor_id must be configured in the N2SVCD Diameter codec.
|
vendor_id
|
String |
The Diameter Vendor-Id for this AVP definition, if required. The combination of the code
and vendor_id must be configured in the N2SVCD Diameter codec.(Default = 0 , IANA AVP code values).
|
to_tag
|
String | [Conditional] A tag to use as the destination for this AVP's value. This must be present for each AVP definition that is not a grouped AVP. |
tag
|
String |
[Conditional] A tag name to require a specific value
for to trigger population of the destination tag from the AVP. If tag is present, value > must also be present.
|
tag_x
|
String |
[Conditional] As for tag , but with x representing a unique pairing, e.g.
tag_1 or tag_a . A matching value_x must also be present.
|
value
|
String |
[Conditional] The string or integer value to match against during destination tag population.
Required when tag is present.
|
value_x
|
String |
[Conditional] As for value , but with x representing a unique pairing, e.g.
value_1 or value_a . A matching tag_x must also be present.
|
originating
|
Boolean |
Whether this AVP should be read for responses for
originating calls (Default: true )
|
forwarding
|
Boolean |
Whether this AVP should be read for responses for
forwarding calls. (Default: true )
|
terminating
|
Boolean |
Whether this AVP should be read for responses for
terminating calls. (Default: true )
|
at_initial
|
Boolean |
Whether this rule applies at the initial OCS interrogation, i.e. the Diameter CC-Request-Type is
1 (INITIAL_REQUEST ).(Default: true )
|
at_update
|
Boolean |
Whether this rule applies at interim OCS interrogations, i.e. the Diameter CC-Request-Type is
2 (UPDATE_REQUEST ).(Default: true )
|
at_terminate
|
Boolean |
Whether this rule applies at the final OCS interrogation, i.e. the Diameter CC-Request-Type is
3 (TERMINATE_REQUEST ).(Default: true )
|