The Call Flow Designer Workspace
On this topic
The Call Flow Designer is composed by the main designer/workspace in the centre, and a set of docking panels. When a Project is created or opened, a new tab is shown containing the Start Page. The Start Page contains common tasks to be performed on a Project, like opening files, creating a callflow, dialer or component, or building the Project. Another tab is shown each time you open a file. The actual designer is shown when you open or create a new file (callflow, dialer or component). The designer allows customizing the view, by using the buttons available in the application toolbar, or the Tools menu. The available actions are:
- Change the zoom level: set it to a specific percentage or fit all the components into the designer view.
- Navigation tool: the Navigation Tool hand mouse pointer let the user "grab" and shift the view of a flow in the current designer.
- Default: the Default arrow mouse pointer let the user select components in the designer.
The docking panels contain important controls to manage your project.
Types of flows
For each call flow, the designer creates three flow types (main flow, error handler flow and disconnect handler flow) for callflows and components, and two flow types (main flow and error handler flow) for dialers.
A flow is a sequence of built in or user defined components. You can drag components from the toolbox and drop them into the designer in the desired position. Once a component has been placed into the designer, the user can change its properties, using the Properties Window or the configuration form.
The Main Flow
The execution path in normal conditions. Each component will be executed sequentially in the main flow as long as no error occurs, or the call gets disconnected. When an error occurs, the execution will continue on the error handler flow. When the call gets disconnected, the execution will continue on the disconnect handler flow. Call related components cannot be used in the disconnect handler flow.
The Error Handler Flow
If an error occurs while executing the main flow or the disconnect handler flow, the execution continues on the error handler flow.
A user defined component is always executed from a callflow, a dialer or another user defined component containing it. Therefore:
- When an error occurs while executing a callflow, the error handler of the callflow is executed and then the call is finalized.
- When an error occurs while executing a dialer, the error handler of the dialer is executed and then the loop ends, and the dialer pauses until the next iteration.
- When an error occurs while executing a user defined component, the error handler of the user defined component is executed, and then the execution continues on the main flow of the parent. But if the error handler is empty, the execution continues on the error handler flow of the parent. It behaves as a catch block.
For example, a call arrives, starts executing Callflow1, which calls Component1, which calls Component2. If an error occurs in the main flow of Component2, the error handler of Component2 is executed (for example, this error handler is empty, so not handling the error), then the error handler of Component1 is executed (for example, some component in this error handler, so it’s handling the error here), and finally execution continues on the main flow of Callflow1 (because the error was handled on a child component).
The Disconnect Handler Flow
If the call gets disconnected in a callflow, when the disconnect handler flow ends its execution, the whole execution ends. On the other hand, if the call gets disconnected on a user defined component, when the disconnect handler flow ends its execution, execution continues on the parent disconnect handler flow.
The behaviour is similar as the one used for error handling, but in this case the call gets disconnected. For example, a call arrives, starts executing Callflow1, which calls Component1, which calls Component2. If the connection is disconnected there, the disconnect handler of Component2 is executed, then the disconnect handler of Component1 is executed, and finally the disconnect handler of Callflow1 is executed. The main flow is not executed again for this call.
The toolbox contains the built in components provided out of the box, and the custom components created by the user for a specific project.
Here we have a brief description of each component, under each category:
- Call Options
- Menu: Plays a menu with single DTMF digit options.
- User Input: Collects DTMF digits from the caller.
- Authentication: Collects an ID and PIN from the caller, for later validation.
- Credit Card: Collects credit card number, expiration date and security code from the caller, for later validation, avoiding call recording while entering digits.
- Prompt Playback: Plays back a prompt.
- Record: Records audio from the caller.
- Transfer: Transfers the call.
- Disconnect Call: Disconnects the call.
- Make Call: Makes a call from one extension to a specific number.
- Flow Control
- Assign a Variable: Sets a value to a variable.
- Increment Variable: Increments a numeric variable.
- Decrement Variable: Decrements a numeric variable.
- Create a Condition: Selects different branches depending on a condition.
- Date & Time Condition: Selects different branches depending on the date and time, also applying filters to the DID used to reach 3CX.
- Loop: Loops while a condition is met.
- Logger: Writes information to the 3CX Queue Manager log file.
- Exit Callflow: Finalizes execution immediately.
- 3CX Control
- Get DN Property: Reads a property value for a specific DN.
- Set DN Property: Writes a property value to a specific DN.
- Get Global Property: Reads a global 3CX parameter.
- Set Global Property: Writes a global 3CX parameter.
- Get Extension Status: Gets the extension current profile (considering overrides), and checks if the extension is in a call or not.
- Get Queue Extensions: Gets the list of agent extensions for a specific queue, considering if the agent is logged in or not to that queue.
- Advanced Features
- Encryption: Encrypts/decrypts data using TripleDES, and computes MD5 hashes.
- Database Access: Executes SQL statements on SQL Server or PostgreSQL databases.
- E-Mail Sender: Sends emails with attachments.
- Launch External Script: Executes external C# code (.NET Core).
- Read / Write to File: Reads or writes data to files.
- Open a Socket: Opens a TCP or UDP connection, sends data through the connection and optionally waits for a response from the remote endpoint.
- HTTP Requests: Performs HTTP requests.
- Web Service REST: Executes REST Web Services, providing out of the box authentication.
- Web Service (POST): Executes simple Web Services.
- User Defined Components
- User Defined Components: These are components created by the user that are automatically added to the toolbox.
For further information about all the components of the CFD, please refer to the Chapter Components.
Project Explorer Window
This control allows exploring the files of the Project. Each Project is composed by callflows, dialers and user defined components, which can be grouped into folders. The entry point of a call is always a callflow, while a dialer is the entry point to start automatically making outbound calls.
The Project Explorer allows performing the following actions:
- Save the Project or file
- Rename the Project, folder or file
- Close the Project or file
- Create a new folder, callflow, dialer or component
- Add an existing callflow, dialer or component
- Remove an existing folder, callflow, dialer or component
- Build the Project
These actions can be performed by right clicking on an item and selecting the option in the context menu. Files and folders can be moved to other locations within the Project using drag and drop. If the CFD cannot find a file or folder referenced by the Project, it will be shown in red font, with a hint indicating that the file or folder is missing.
The Properties window shows information of the currently selected object. If the object contains actions, they are shown too, so that they can be quickly executed. For example, the “Create a condition” component contains an “Add Branch” action, which allows adding child conditional branches easily.
Error List Window
The error list window is used to display messages during the build process. These messages can be of three types:
- Errors: the Project could not be built because of errors in the configuration of one or more of the components. The output could not be generated. The user must correct the errors first.
- Warnings: this is something that could be wrong, but the output can be generated. Users should pay attention to this message and verify if they must perform some corrective action.
- Messages: this is information that may be considered by the user, but it is not an error and the output can be generated.
Every message includes information related to the component to review, including the file location. Double clicking or pressing <Enter> on a message, will automatically open the file being referred, and select the component.
The CFD offers the ability to filter the list of messages by pressing the button of the desired message type.
The output window shows the actions performed by the compiler during the build process. For example, the CFD informs when the build process begins, when a file starts being compiled, etc.
- Install the 3CX Call Flow Designer
- Accessing a database from a CFD voice app
- Sending e-mails from a CFD voice app
- How to play a sequence of digits from a 3CX Call Flow Designer voice app
- Creating a Phone Support Portal with the 3CX Call Flow Designer – Part 1, 2, 3, 4
- Routing Calls Based on the Time of Day
- Creating an outbound dialer
- Time-Based Routing without Programming
- Using the Authentication component to validate customers
- Using the Credit Card Component
- Text to Speech with the 3CX Call Flow Designer
- Creating a predictive dialer with the 3CX CFD