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:
- when a call is released by an End Call node that doesn’t specify a reason
- when a call is released by an End Call node that specifies a reason which isn’t mapped to protocol-specific release details (see SCP and SIP)
- when a call is implicitly released at the end of a flow
"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:
- The flow editor, for no-answer timer placeholders/indications and validation in the Connect, Follow Me, Breakout Dialing, Extension Dialing, and Speed Dial nodes.
- API validation, to ensure that the no-answer timer limit is honoured.
- At runtime, when the no-answer timer value has not been specified.
"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
- Menu
- PIN Authorisation
- User Input
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
}
Menu
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:
- customise field names
- constrain valid field values and customise validation error messages
- hide non-applicable product fields
- expose deployment-specific profile fields in dedicated fields (currently flow editor only)
- make field visibility and/or writability conditional on user permissions
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:
- visible to users with one or more of the following authorisation groups:
service_number_fields_read:protected_service_fields
service_number_fields_update:protected_service_fields
admin_read
admin_write
- changeable by users with one or more of the following authorisation groups:
service_number_fields_update:protected_service_fields
admin_write
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:
- flow editor
- Connect node number termination number range validation
- API
- Connect node number termination number range validation
- service follow me number termination number range validation
- alternative termination number termination number range validation
- runtime
- alternative termination number substitution
- Calling Party node prefix matching
- Dialled Number node prefix matching
- Original Called Party node prefix matching
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": []