Common

Overview

N2ACD has some configuration that is shared between frontends, APIs, and/or runtime components. Configuration can be applied for the following features:

Configuration Field Description
Default Release Details From B-Leg Configuration that determines the source for call release details when release reason is not explicitly specified.
No Answer Timer The no-answer timer configuration for termination attempts.
Node Types Node-specific configuration.
Service Configuration specifically associated with services.
User Input Normalisation Normalisation rules applied to user-entered telephone numbers or prefixes.
Default Release Details From B-Leg

N2ACD allows call release details to be explicitly specified programmatically or via the End Call node’s reason field. When not specified, the default_release_details_from_b_leg property in the common configuration block determines how release details are selected.

This configuration applies:

    "common": {
        "default_release_details_from_b_leg": false
        , ...
    }

Value false means calls that are released without an explicit reason will be released using the platform’s default release details.
Value true means calls that are released after a termination attempt without an explicit reason will be released using details from the b-leg (when available). When b-leg details are not available or termination has not been attempted, the platform’s default release details will be used.

Defaults to false.

No Answer Timer

The no-answer timer controls how long N2ACD may wait for a particular termination attempt to be answered before the attempt is determined to have failed because the called party hasn’t answered.

Specifying the no_answer_timer property in the common configuration block enables the default timer value to be specified, and a limit to be placed on user-entered timer values.

This configuration is used by:

    "common": {
        "no_answer_timer": {
            "default": 15,
            "default_last": 30,
            "maximum": 120
        }
        , ...
    }
Configuration Field Type Default Description
default number 15 The default no-answer timer value to use when further logic will be executed if the termination attempt is not answered.
default_last number 15 The default no-answer timer value to use when no further logic will be executed if a termination attempt is not answered.
maximum number 180 The maximum user-specified no-answer timer value to allow.

The unit for all of the above fields is seconds.
All field values must be positive integers.

Note that the distinction between default and default_last exists because in some cases switches may not honour the N2ACD-specified no-answer timer. From an N2ACD perspective this only matters when further logic would be executed if the termination attempt is not answered. The value for default should be chosen such that it is known (to a desired degree of certainty) that all switches that N2ACD interacts with will honour the value. On the other hand, the value for default_last can be chosen independently.

Defaults to:

    "no_answer_timer": {
        "default": 15,
        "default_last": 15,
        "maximum": 90
    }

Node Types

Various flow editor nodes require or support configuration.

The node-type configuration that affects more than one N2ACD subsystem and/or is not protocol-specific is specified in the node_types sub-section of the common configuration block.

Defaults to:

    "common": {
        "node_types": {
            "Account Code Entry": {
                "edr_mask": true
                , "edr_write": false
            }
            , "Menu": {
                "suppressed_digits": []
            }
            , "PIN Authorisation": {
                "edr_mask": true
                , "edr_write": false
            }
            , "User Input": {
                "min_digits_min": 3
                , "min_digits_max": 5
                , "max_digits_min": 3
                , "max_digits_max": 5
            }
        }
        , ...
    }

The following nodes can be configured within the node_types sub-section:

Account Code Entry

The Account Code Entry node has configuration to control associated EDR content.

Configuration Field Type Default Description
edr_mask boolean true Should the ACD EDR’s AC_CODE field content be masked when the account code is valid/correct.
edr_write boolean false Should the ACD EDR include the AC_CODE field (containing the user-supplied account code).

Defaults to

    "Account Code Entry": {
        "edr_mask": true
        , "edr_write": false
    }

The Menu node has configuration to control available/valid digits for the flow editor and API validation.

Configuration Field Type Default Description
suppressed_digits array [] Which exits should never be available.
Values allowed in the array: None, T , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , *, #

Defaults to:

    "Menu": {
        "suppressed_digits": []
    }
PIN Authorisation

The PIN Authorisation node has configuration to control associated EDR content.

Configuration Field Type Default Description
edr_mask boolean true Should the ACD EDR’s PIN field content be masked when the PIN is valid/correct.
edr_write boolean false Should the ACD EDR include the PIN field (containing the user-supplied PIN).

Defaults to

    "PIN Authorisation": {
        "edr_mask": true
        , "edr_write": false
    }
User Input

The User Input node has configuration to constrain the minimum and maximum number of digits field values for the flow editor and API validation.

Configuration Field Type Default Description
min_digits_min number 3 The minimum valid value for the node’s minimum digits field.
min_digits_max number 5 The maximum valid value for the node’s minimum digits field.
max_digits_min number 3 The minimum valid value for the node’s maximum digits field.
max_digits_max number 5 The maximum valid value for the node’s maximum digits field.

All field values must be non-negative integers.
min_digits_min must be less than or equal to min_digits_max, and max_digits_min must be less than or equal to max_digits_max.

Defaults to:

    "User Input": {
        "min_digits_min": 3
        , "min_digits_max": 5
        , "max_digits_min": 3
        , "max_digits_max": 5
    }

Service

Services are a core N2ACD concept. In any given deployment, particular aspects or features of services may require customisation.

The fields sub-section within the service sub-section within the common section makes it possible to:

The following configuration example shows how each of these may be achieved.

    "common": {
        "service": {
            "fields": {
                "follow_me_number": {
                    "name": "My Number"
                }
                , "pin": {
                    "format": "^[0-9]{3,5}$"
                    , "min_length": 3
                    , "max_length": 5
                    , "validation_error": "PINs may have between 3 and 5 numeric digits."
                }
                , "bar_payphone_callers": {
                    "show": false
                }
                , "custom_boolean": {
                    "name": "Custom Boolean"
                    , "client_type": "boolean"
                    , "profile_path": "custom_boolean_1"
                }
                , "custom_choice": {
                    "name": "Custom Choice"
                    , "client_type": "select"
                    , "auth_group": "protected_service_fields"
                    , "profile_path": "custom_choice"
                    , "values": [
                        { "id": "value1", "name": "Value 1" }
                        , { "id": "value2", "name": "Value 2" }
                        , { "id": "value3", "name": "Value 3" }
                    ]
                }
            }
        }
        , ...
    }

The follow_me_number, pin, and bar_payphone_callers fields are standard product fields with default configuration (as shown below).

Specifying follow_me_number.name overrides the default field name/label.
Specifying pin.format, pin.min_length, and pin.max_length constrains the valid values for the PIN field.
Specifying pin.validation_error overrides the error message displayed when the PIN field value is not valid.
Specifying bar_payphone_callers.show hides the corresponding field for all users.

The service profile is a generic JSON fragment that can be used to store arbitrary deployment-specific data. custom_boolean and custom_choice are custom fields derived from the contents of that profile.

custom_boolean defines a custom boolean (yes/no) field stored in the profile’s custom_boolean_1 property.
custom_choice defines a custom select/dropdown field with three possible values, also stored in the service profile.
custom_choice.auth_group ensures that the Custom Choice field will be:

Property Type Description
name string [Required] The label displayed for the field.
client_type enumerated [Required] The type of the field, which determines the type of user interface control used to display/edit the field value. Valid values are:
* boolean
* integer
* select
* string
* flow
* language
* restrictionList
show boolean [Optional] A boolean flag controlling whether the field is visible (subject to auth_group). Defaults to true.
auth_group string [Optional] By default field access will be restricted by service_number_fields_read and service_number_fields_update. When auth_group is specified, field access will be restricted by service_number_fields_read:<auth_group> and service_number_fields_update:<auth_group>.
profile_path string [Optional] When the field is stored in the profile, this is the JSON path to the field’s value.
format string [Optional for client_type integer and string] A regular expression used to validate the field value.
min_length number [Optional for client_type integer and string] The minimum number of digits or characters valid field values may have when a value is specified. Note that integer and string field values are always optional.
max_length number [Optional for client_type integer and string] The maximum number of digits or characters valid field values may have.
validation_error string [Optional for client_type integer and string] An error message displayed when the field value is invalid.
none_text string [Optional for client_type flow and language] The text to use to indicate the field does not have a value, when applicable.
values array [Required for client_type select] The valid field values. Each array element representing a value is an object with id and name properties.

In addition to display control, the client_type, format, min_length, max_length, and values properties are used for client-side and server-side validation.

Defaults to:

    "fields": {
        "bar_payphone_callers": {
            "name"          : "Bar Payphone Callers"
            , "client_type" : "boolean"
        }
        , "bar_cellphone_callers": {
            "name"          : "Bar Cellphone Callers"
            , "client_type" : "boolean"
        }
        , "follow_me_number": {
            "name"               : "Follow Me Number"
            , "client_type"      : "string"
            , "format"           : "^[a-fA-F0-9]{0,32}$"
            , "max_length"       : 32
            , "validation_error" : "Follow Me Numbers may have up to 32 telephony digits (0-9 a-f A-F)."
        }
        , "toll_free_beeps_required": {
            "name"          : "Toll Free Beeps Required"
            , "client_type" : "boolean"
        }
        , "default_announcement_language_id": {
            "name"          : "Language"
            , "client_type" : "language"
            , "none_text"   : "Customer Default"
        }
        , "pin": {
            "name"               : "PIN"
            , "client_type"      : "string"
            , "format"           : "^[a-fA-F0-9]{1,12}$"
            , "min_length"       : 1
            , "max_length"       : 12
            , "validation_error" : "PINs may have between 1 and 12 telephony digits (0-9 a-f A-F)."
        }
        , "schedule_override_flow_id": {
            "name"          : "Override Flow"
            , "client_type" : "flow"
            , "none_text"   : "No Override Flow"
        }
        , "ignore_barring_list": {
            "name"          : "Ignore Restrictions"
            , "client_type" : "boolean"
        }
        , "restriction_list": {
            "name"          : "Restriction List"
            , "client_type" : "restrictionList"
        }
        , "allow_barring_list_digits": {
            "name"          : "Restriction Type"
            , "client_type" : "select"
            , "values"      : [
                { "id": false, "name": "Barred" }
                , { "id": true, "name": "Allowed" }
            ]
        }
    }

User Input Normalisation

A variety of N2ACD features including flow node types (such as the Calling Party node) involve matching user-entered telephone numbers or prefixes with network-sourced telephone numbers. For matching to be successful, the user-entered numbers need to be in the same format as the network-sourced numbers. Network-sourced telephone numbers are normalised to a configurable standard format before being made available for use in N2ACD logic. Given that users may not be familiar with that standard format (or even telephone number formats in general), N2ACD also applies behind-the-scenes normalisation to user-entered numbers. The overall intention of user input normalisation is to transparently improve how easy it is to use N2ACD for everybody.

User input normalisation currently applies to:

For example, the following normalisation rules could be used to standardise arbitrary-format user-entered telephone numbers or prefixes to E.164 international format in a New Zealand context.

    "common": {
        "user_input_normalisation": [
            {
                "leading": "00",
                "trim": 2,
                "prepend": ""
            },
            {
                "leading": "0",
                "trim": 1,
                "prepend": "64"
            }
        ]
        , ...
    }
Property Type Default Description
leading string `` |trim and prepend are only applied to user-entered numbers if they start with leading. If leading is empty, trim and prepend will be applied to all numbers.|
trim number 0 How many digits to remove from the start of the user-entered number.
prepend string `` |Digits to prepend onto the user-entered number after trim is applied.|

Defaults to:

    "user_input_normalisation": []