Tag Configuration

Tag Configuration

The DSG-SCP can store values in “tags” for later use. Tags are referred to by a freeform name, and can hold string or integer values, either read from received messages from the network or configured as literals.

Tags may be used by other configuration rules within the DSG-SCP to control call and rating behaviour.

This section’s tagging configuration is applied only at the start of a call. Other configuration (e.g. result code mapping) may add tags or change existing tag values, as defined in that section’s own configuration.

The initial setting of tag values uses Selector Rules to select the rule to apply for each tag. Each tag may be given a maximum of one value from its list of rules; as soon as a match is found, the remaining rules for that tag are not used.

A sample Diameter request tagging configuration might be:

    <application name="<application instance name>" module="DsgScpApp">
      ...
      <config>
        ...
        <diameter>
          <tags>
            <tag name="network">
              <rule vlrNumber_prefix="6421" literal="home"/>
              <rule vlrNumber_prefix="64" literal="national_roaming" />
              <rule literal="roaming" />
            </tag>

            <tag name="msc" mandatory="1">
              <rule idp="mscAddress_digits" />
            </tag>

            <tag name="vlr">
              <rule idp="vlrNumber_digits" />
            </tag>

            <tag name="location">
              <rule originating="true" idp="vlrNumber_digits" />
              <rule forwarding="true" idp="mscAddress_digits" />
              <rule terminating="true" idp="vlrNumber_digits" />
            </tag>

            <tag name="logical">
              <rule originating="true" idp="callingPartyNumber_digits_n" />
              <rule forwarding="true" idp="redirectingPartyID_digits_n" />
              <rule terminating="true" idp="calledPartyNumber_digits_n" />
            </tag>

            <tag name="bearer">
              <rule bearerCap_itc="0" literal="voice"/>
              <rule bearerCap_itc="8" literal="video"/>
              <rule literal="other" />
            </tag>
          </tags>
          ...
        </diameter>
        ...
      </config>
      ...

This tag configuration sets the following tags:

Tags are assigned their values in the order configured. Later tag rules may therefore refer to previous tag values if required, e.g.:

            ...
            <tag name="network">
              <rule vlrNumber_prefix="6421" literal="home"/>
              <rule vlrNumber_prefix="64" literal="national_roaming" />
              <rule literal="roaming" />
            </tag>

            <tag name="time_request">
              <rule tag="network" value="roaming" literal="60"/>
              <rule literal="300"/>
            </tag>
            ...

In this configuration, the time_request tag’s value is set differently for roaming calls.

Tag names and their values are also written to EDRs automatically, e.g. for the previous configuration the EDR may contain:

...|NETWORK=roaming|TIME_REQUEST=60|...

All tags defined must have a name parameter applied, and must contain at least one rule. Note that no catch-all rule is required for tags; if no rule applies no value will be given to the tag (and it will not be created).

Configuration Details

The configdiametertags configuration block holds the rules that are applied to perform initial assignment of tag values. The available element attributes and children are:

Attribute Type Description
tag Array A single tag definition to apply to received calls.
name String [Required] A unique name for this tag.
mandatory Boolean Whether the tag is required to be populated or not. If no suitable value can be found for a tag marked as mandatory, the call will be released as per the error handling rules.
(Default = 0, tag is not mandatory).
suppress Boolean Whether the tag value should be written to EDRs produced for this call or not. If enabled, the suppressed tag will not appear in EDRs written, but its value will still be used for call processing rule selection.
(Default = 0, tag is written to EDRs).
.rerun_after_external Boolean Whether or not a tag value selection should be re-run after each External Action has been processed.
(Default = 0, don't re-run selection).
.rule Object [Required] Provisions a Selector Rule for setting a tag's value.