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 the Diameter
Result-CodeAVP 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" srp_name="OnSwitch" announcement_id="1" />
<rule code="4012" is_bf="true" action="release" cause="16" />
<rule from="4000" to="4999" action="announcement_release" srp_name="OnSwitch" announcement_id="2" />
<rule from="5000" to="5999" action="announcement_release" srp_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-Codevalue4011(DIAMETER_CREDIT_CONTROL_NOT_APPLICABLE) is returned, allow the call to continue without monitoring or rating. - If the Diameter
Result-Codevalue4012(DIAMETER_CREDIT_LIMIT_REACHED) is returned prior to final interrogation, play announcement ID1using the SRP endpoint namedOnSwitch, then release the call with the default release cause. - If the Diameter
Result-Codevalue4012is returned at final interrogation, release the call with release cause16and mark the EDR as a billing failure. - If the Diameter
Result-Codevalue returned is for a transient error (4xxx), play announcement ID2using the SRP endpoint namedOnSwitch, then release the call with the default release cause. - If the Diameter
Result-Codevalue returned is for a permanent error (5xxx), play announcement ID3using the SRP endpoint namedOnSwitch, then release the call with the default release cause. - For other Diameter
Result-Codevalues, apply default handling. - If the OCS returns
Final-Unit-Indicationor the Result-Code rule action selected iscontinue_period:- If the tag
networkis set tohome, set thereleaseIfdurationExceeded→toneparameter in theApplyChargingoperation. - Otherwise, use the SSP model
default_release_toneto settone.
- If the tag
- Read the value of the
Cost-Information→Unit-Value→Value-DigitsandExponentAVPs and write them to the tagscost_valueandcost_exprespectively.
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
MO calls (Default: true)
|
forwarding
|
Boolean |
Whether this AVP should be read for responses for
MF calls. (Default: true)
|
terminating
|
Boolean |
Whether this AVP should be read for responses for
MT 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)
|