Workflows Designer

The Integra Designer is the IDE (Integrated Development   Environment) to develop call flows.

With this tool is possible to build DialPlan flows, this flows tells the system how an incoming or outgoing call should behave.


This web tool is developed in HTML5 and JavaScript, is a drag and drop application, each activity is a Dialplan application and it's possible to change the application behaviour via its properties. The application generates the code needed to be deployed on the server, and it also deploys and loads the call flows directly to and from the server.

Once a flow is deployed, it gets activated immediately.

Every DSN, Audio, Queue, etc. created on the Administrator Portal, will be visible for the Dialplan designer and those will be suggested by the system to be selected as options for the properties. You can also load and deploy Dialplan flows, once a Dialplan is loaded it will get the edition mode active, so every change made on edition mode, will be committed on the deploy and be active immediately.

Visualisation Path Helper
For a better understanding of the application path if you select a connection the color will turn to Light Green if is the default path, if is not, then the color would be red, this helps to check the flows easily.

At the bottom of the Page we have the mode that is active, for new workflows or if you are editing a workflows.


Basics

The basic toolbar is there for basic operations

  • New: Creates a new flow (will lose all changes that were not saved).

  • Open: Loads an JSON saved file.

  • Save: Saves as an JSON file the flow.

  • Undo: To undo the last action.

  • Redo:To redo the actions you undid.

  • Copy: To copy the selected portion of the draw (is possible to copy and paste in different Browser tabs).

  • Paste:To paste any part or application copied or cut (this includes connections and properties)

  • Remove: To permanently delete them. You can also use the standard Ctrl V, C, X.

  • Zoom In: To zoom in the view.

  • Zoom Out: To zoom out the view.Lock: To lock in place the selected portion of the draw. 

  • Group: This is useful when we have many items and they are overlapped, so we can manage their position, for editing or moving them.

  • Align: These are basic tools to get the draw looks the way we want.

  • Find on diagram: Finds an item on the diagram. The items that matches the search will appear with its name on red.

  • Deploy, Load and Debug: These buttons are the basic actions of the designer, we have 2 for dialplan operations, Deploy and Load, and we also have an option for debugging purposes (we can check the generated code in the console).

Selecting an item

  • Engine: Allows to see and edit the properties of the selected item.

  • Arrow: Allows to create a connection from one item to another.

    • To draw the connection click and drag. 

  • Copy: Creates a copy of the selected item.

  • Question: Shows the description of the application, this is very useful for documentation purposes.

Properties


Extensions 

Dialplan consists of a collection of contexts as a way of organising and separating, as it is for separating features and tools, as well as reinforcing security between the different contexts, among other uses. 

The main way of using contexts is for Asterisk to carry out different actions depending on from where the call is coming from. When Asterisk has a call connection, being an income call or from an intern extension, this call belongs to a unique context, depending on the channel from where the call came. 
If the dialled extension does not exist in the specified context, Asterisk will reject the call.  The context option is what tells Asterisk to direct the call from the endpoint to the context we build in our system.

Contexts are a collection of extensions. An extension can be one of two types: a literal or a pattern (do not confuse with telephone extensions). 

A literal extension can be a number, like 123, or characters as_1234.

i  : Invalid

s  : Start 

h  : Hangup 

t  : Timeout 

T  : Absolute Timeout

a : Asterisk Extension

o : Operator

i: Used when dialling an unknown extension in a context or unknown input in an IVR menus.

s: Used for marks and analogue lines, is when or numbers or letters does not came.

h: Runs at the end when a call is cut before the number is saved in the system, can set some variables according the result o runs more activities.

t: When it delay typing something while  a reproduction of an audio .

T: Global like the previous one.

a: Called when user presses ' * ' during a voicemail greeting

o: Operator extension, used for operator exit by pressing zero in  voicemail

X matches any digit from 0-9 

Z matches any digit from 1-9 

N matches any digit from 2-9 

[1237-9] matches any digit or letter in the brackets(in this example, 1,2,3,7,8,9) 

. wildcard, matches one or more characters 

! wildcard, matches zero or more characters immediately

Examples 

_NXXXXXX matches a NANP 7 digit telephone number such as 555-1212 

_1NXXNXXXXXX matches an area code and phone number proceeded by a one such as 1-860-555-1212 

_9011. matches any string of at least five characters that starts with 9011,but it does not match the 9011 its 

_9011! matches 9011 too 

_# matches a single # key press 

_X! matches any numeric pattern of one or more digits (not * or #) 

_[*#0-9]! same as previous entry but also includes * and # characters 

_[*0-9]! same as the previous entry except excludes the # character 

s if there is no pattern at all, then using s will often match 

Do not use a pattern of _. Instead use something like _X. or _X which will not match special extensions. 

Ok, so a "context" has a name, such as "john". And in each context, you can define one or more "extensions". For each extension, you define a set of commands that are the ones that are done via the designer. 

The context and extension are defined in the StartActivity, it's the main activity of flows initiation, the contexts are associated with Agents o Providers.


Flow Management

Load

This window is for loading Diaplan flows, this flows are grouped into contexts, and inside the contexts in extensions.

All calls originating form a device will look for flows that map against extensions that exist in context, if you mapped an extension of that flow steps are executed.  All flows together are the system dial plan.

In controls all calls that pass through the system. The entire system behaviour, and there are standard flows that make easier the settings are configured.

  • Historic
    Registers the actions done on every Workflow. The different types of actions are: INSERT(created Workflows), UPDATE(updated Workflows), DELETE(deleted Workflows).
    The advantage of having a history log is that the Workflows that were deleted can be restored and the user has the option of keep working on them without losing data.
    Different filters can be applied for the Context column and Exten one, by writing what the user wants to search for and click the magnifying glass search logo.

  • Delete
    Deletes the selected Workflow from the list.

  • Load
    Loads the selected Workflow.

  • Open in an Additional Tab
    Allows to open the selected Workflow in a new tab. Facilitating the work with more than one Workflow at once.

Deploy

This Window is activated of a flow and a description is added for then know what to do, once completed its begins to take the systems changes.

If you load a flow to activate we will suggest the previous comment.

Save to Disk

It is possible to save in disk a file of flows if it requires then activate in another server or installation.

Variables Management

Asterisk uses global, shared and channel variables.

  • Global: This variables can be referenced by any channel in the system at any time. 

  • Channel: This ones can only be used by the channel in where this variable is defined in. Each channel gets its own variable space, so there is no chance of collisions between different calls, and the variable is automatically trashed when the channel is hung up.

  • Shared: Two or more channels can gain full access to this type of variables, to what otherwise would be a channel variable.

Examples:

  • Assignation

  • Comparison

     


Activities

All Activities are documented in Application Description