Error Handling Rules
Error Handling Rules
If a call cannot be handled normally due to an error (e.g. failure to find a value for a mandatory tag), the application can be configured to behave differently depending on the available information for the call. Rules are applied in the order listed until a match is made.
Once matched, various actions can be taken: release the call, play an announcement, etc. If a rule does not specify any matching criteria, it will always match; this should only be used as a catch-all.
Configuration Details
Each rule can support the following attributes:
(Default: `true`) | | `forwarding` | Boolean | Whether this rule applies for [MF calls](/applications/dsg_scp.html#traffic-type-determination).
(Default: `true`) | | `terminating` | Boolean | Whether this rule applies for [MT calls](/applications/dsg_scp.html#traffic-type-determination).
(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`). Note that [some actions](#error-handling-rule-actions) are not applicable at interim interrogation.(Default: as for [Error Handling Rule Actions → Valid At](#error-handling-rule-actions)) | | `at_terminate` | Boolean | Whether this rule applies at the final OCS interrogation, i.e. the Diameter `CC-Request-Type` is `3` (`TERMINATE_REQUEST`). Note that [some actions](#error-handling-rule-actions) are not applicable at final interrogation.
(Default: as for [Error Handling Rule Actions → Valid At](#error-handling-rule-actions))) | | `cause` | Integer | The release cause to send to the network if the `action` releases the call.
(Default:
31) |
| `announcement_id` | Integer | **[Required with `action` = `announcement_release` or `announcement_connect`]** The announcement ID to play to the caller, if appropriate to the `action`. |
| `srp_name` | Integer | **[Required with `action` = `announcement_release` or `announcement_connect`]** The SRP name (as configured in the `ScpApp`) to use to play an announcement to the caller, if appropriate to the `action`. |
| `divert_to` | String | **[Required with `action` = `connect` or `announcement_connect`]** The normalised destination digits to connect the call to, if approrpiate to the `action`. |
| (other available fields) | (various) | Any number of selector rule [available fields](/config/dsg_scp/diameter/selector_rules.html#available-fields). |
Error Handling Rule Actions
Each error handling rule allows the specification of a single action to take when an error condition is encountered during processing.
Note that if the calling party is no longer present in the call (i.e. they have hung up or been disconnected), no action will be able to be applied.
The following actions are available:
| Action | Required Parameters |
Optional Parameters |
Valid At | Description |
|---|---|---|---|---|
release |
- | cause |
(all) | Release the call immediately with the given cause. |
connect |
divert_to |
- | initial |
Terminate the call to the provided divert_to with no further rating interaction. |
announcement_release |
announcement_idsrp_name |
cause |
(all) | Play announcement ID announcement_id on the resource srp_name (as configured under SRP Endpoints) and then apply handling as for release. |
announcement_connect |
announcement_idsrp_namedivert_to |
- | initial |
Play announcement ID announcement_id on the resource srp_name (as configured under SRP Endpoints) and then apply handling as for connect. |
abort |
- | - | (all) | Send a TC_ABORT to end the call immediately. |
Default Error Handling Actions
The below default rules are always applied after all configured error handling action rules to act as a fallback. They may not be disabled, but earlier rules will be used in preference (including rules with no selectors which will always be chosen as fallbacks):
<error_handling>
<rule action="release" />
</error_handling>