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:

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:

Configuration Details

The configdiameterresponse 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 releaseIfdurationExceededtone 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)