Introduction
N2FE Flow - Introduction
The N2FE Flow Operation data structures are the key containers for Flow representation during the editing process. Flows are stored within the Oracle NCC database in the Oracle “Control Plan” format. We convert these into N2FE “Flow Operations” for editing purposes. On writeback, the flow is converted back into an Oracle Control Plan for saving and run-time execution.
The N2FE Flow is represented in JSON as follows.
Attribute | Type | Description |
---|---|---|
always_present_calling
|
Integer |
[Privileged] This parameter causes the service logic to override the Presentation
Indicator for the Calling Party Number. If always_present_calling is set to 1 then
any AttemptTermination operations performed as part of this flow will always
force the Calling Party Number Presentation Indicator to Presentation Allowed.
|
operations
|
Object | See the following section. |
Note features marked as [Privileged] are not available to all users, and the API and GUI will perform appropriate checking when the flow is created or updated.
Operation Attributes
The operations
is a Hash of Operation Objects, keyed by the operation id
.
All Operation Objects have the following parameters.
Parameter | Type | Description |
---|---|---|
id
|
Integer |
[Required] The numeric operation ID. This must match the Object's key in the operations hash.
|
type
|
String |
[Required] Name of the operation type, e.g. Start , Menu , etc.
|
exits
|
Array of Integer |
[Required] Array of all of the "next operation" IDs to which this operation is connected.
Indexes into this array should be zero-based (unlike NCC which uses branch numbers
which start with 1 ).The Array element may also be null , which indicates that this exit leads to the
end of all processing. If the caller is still on the line when this exit is taken,
the call will be disconnected by the switch.
|
config
|
Object |
Most Operation Objects will have a config describing the particular configuration of
this operation instance. The structure of this config depends on the operation type .
|
base_node
|
Integer |
When the Operation Object has been constructed by converting an NCC Control Plan, the
base_node parameter indicates the ID of the primary Feature Node which was used
in the creation of this operation. This is used primarily for debugging purposes.
|
merged_nodes
|
Array of Integer |
When the Operation Object has been constructed by converting an NCC Control Plan, the
merged_nodes parameter will be present if more than one NCC Feature Node was
used to construct this operation, and will list the IDs of all additional Feature Nodes
used in the creation of this operation. This is used primarily for debugging purposes.
|
Announcement Attributes (NCC)
Several operations have announcements as part of their config
structure. All announcement configuration
Objects have the following parameters when integrated with the NCC platform.
Parameter | Type | Description |
---|---|---|
set
|
String | [Required] Name of the (public or private) announcement set which contains this announcement on the NCC platform. |
entry
|
String | [Required] Name of the announcement entry on the NCC platform, which must be an announcement configured within the specified announcement set. |
repetition
|
Integer |
Number of times this announcement entry should be repeated.
Support for this feature is specific to the individual announcement audio platform (IVR/UIP/SRP). (Default = 1). |
duration
|
Integer |
If specified to a value greater than zero, the announcement will be extended to the indicated duration in seconds.
Support for this feature is specific to the individual announcement audio platform (IVR/UIP/SRP). (Default = 0). |
Announcement Attributes (N-Squared TollFree)
Several operations have announcements as part of their config
structure. All announcement configuration
Objects have the following parameters when integrated with the N-Squared TollFree platform.
Parameter | Type | Description |
---|---|---|
type
|
String |
[Required] This must be the string announcement , indicating to the pre-processors
that this should be parsed for announcement content.
|
announcement_entry_id
|
Integer |
[Required] A value from the column n2tf .announcement_entry .announcement_entry_id .
|
repetition
|
Integer |
Number of times this announcement entry should be repeated.
Support for this feature is specific to the individual announcement audio platform (IVR/UIP/SRP). (Default = 1). |
duration
|
Integer |
If specified to a value greater than zero, the announcement will be extended to the indicated duration in seconds.
Support for this feature is specific to the individual announcement audio platform (IVR/UIP/SRP). (Default = 0). |
Buffer Names
Some Operations act on “Buffers”, and the operation configuration specifies the name of the buffer which is to be used. This must be either a “System Buffer” or a “User Buffer”.
System Buffers are pre-defined. The following values are permitted for System Buffer names.
Buffer | Description |
---|---|
system.service_number
|
This is the Service Number (e.g. Toll-Free Number) associated with the flow. For services other than Toll-Free, this may be undefined. |
system.network_calling_party
|
This is the address which best describes the Calling Party's location within the network. If Mobile Location Information (MoLI) has been determined for this call, then this will be the Moli Region, prefixed by the Moli Marker. Otherwise this will be the Calling Party's network address. If Number Portability is present in the system, this should be the physical, unported address. |
system.logical_calling_party
|
This is the address which best describes the Calling Party's public number. If Number Portability is present in the system, this should be the ported address, i.e. the "Directory Number". |
system.account_code
|
This is the Account Code collected by a preceding AccountCodeEntry operation. It may be undefined. |
system.pin
|
This is the PIN collected by a preceding PinAuthorisation operation. It may be undefined. |
system.destination_address
|
This is the Destination Address constructed by either a preceding ExtensionDialling or BreakoutDialing operation. It may be undefined. |
system.pending_tn
|
This is buffer that NCC uses to determine the phone number to connect to when using the "Connect to Pending TN" NCC control plan node. It may be used as a normal buffer for user input, and for geographical routing. |
User Buffers may be of any name of the form user.<name>
, where name begins with
lowercase a
-z
or (underscore), and contains only digits
0
-9
, lowercase a
-z
or (underscore).
E.g. the following are valid User Buffer names.
name.postcode
name._3post
name.post_code12
The following are not valid User Buffer names.
4abc
(begins with a digit)PostCode
(contains uppercase letters)post-code
(contains invalid character)post code
(contains spaces)
Pattern Matching (NCC)
When entering pattern matching strings, the default NCC behavior is that the entered pattern
must be a complete match. E.g. the pattern 4566
will NOT match the pattern 145661
.
In order to perform partial matches, the following special patterns should be used.
Pattern | Description |
---|---|
?
|
This matches any single character in the pattern. |
?%
|
This matches any string of zero or more characters in the pattern. |
?+
|
This matches any string of one or more characters in the pattern. |
[ , ] , -
|
These characters have their standard "Regular Expression" range interpretations. |
( , ) , |
|
It is not recommended to use sub-expressions or choices. These characters should be avoided. |
0 through 9 , aA through fF , * , and #
|
These match the actual telephony digitis used. Note that * matches an actual * character; it is not a wildcard.
|
Examples:
- To match any address which begins with
432
, use the pattern432?%
. - To match any address which ends with
432*
, use the pattern?%432*
. - To match any address which matches
4327xyz
,4328xyz
or4329xyz
, use the pattern432[7-9]???
.
In the last example, you could also use three separate patterns in the Array of permitted patterns
if the operation supports this (E.g. BreakoutDialing
or ExtensionDialing
).
Example Flow
An example JSON representation of a flow and its operations could be as follows:
{
"operations": {
"5": {
"id": 5,
"type": "Start",
"base_node": 1,
"exits": [ 4 ]
},
"4": {
"id": 4,
"base_node": 2,
"type": "Location",
"exits": [ 1, 2 ],
"config": {
"rules": [
{
"geography_entry": "Auckland 2",
"exit_idx": 1
},
{
"geography_entry": "Gisborne 6",
"exit_idx": 1
},
]
}
},
"2": {
"id": 2,
"type": "AttemptTerminate",
"base_node": 6,
"exits": [ null ],
"config": {
"destinations": [ { "number": "032420002" } ]
}
},
"1": {
"id": 1,
"type": "AttemptTerminate",
"base_node": 3,
"exits": [ null ],
"config": {
"destinations": [ { "number": "032420003" } ]
}
}
}
}
This represents a flow which performs geographic routing, and terminates to 032420002
for callers from Auckland
/Gisborne
and 032420003
otherwise.