The Call Flow Designer Workspace
Introduction
The Call Flow Designer interface is composed by these controls:
- The “Components” toolbox - built-in and custom components to use in your project.
- Design workspace - shown when you open or create a new callflow, dialer or component. The “Start Page” is also shown in this space in a separate tab, containing useful information to get started with this tool, like links to articles, videos, recent projects, and documentation about featured components.
- Design view customization - use these tools available in the application toolbar, or under the “Tools” menu:
- “Zoom Level” - set to a specific percentage or fit all components into the design view.
- “Navigation Tool” - the hand cursor enables you to "grab" and shift the design view.
- “Default” - use the arrow cursor to select components in the design view.
- “Project Explorer” and “Properties” panels - control and configure project and component options.
- “Error List” and “Output” panels - view error and informational messages for your project.
Flow Types
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 at the desired position. Once a component has been placed into the designer, the user can change its properties, using the “Properties” panel or the “Configure” dialog.
For each call flow, CFD creates three flow types for callflows, i.e. Main Flow, Error Handler Flow and Disconnect Handler Flow, and two flow types for dialers, i.e. Main Flow and Error Handler Flow.
The Main Flow
The typical execution path: each component is executed sequentially in the “Main Flow” as long as no error occurs, or the call gets disconnected. When an error occurs, the execution continues on the “Error Handler Flow”. When the call gets disconnected, the execution continues 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
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 to the one used for error handling, but in this case the call gets disconnected. For example, a call arrives, starts executing
Components Toolbox
The toolbox contains the built-in components, and the custom components created by the user for a specific project, grouped under relevant categories:
- “Call Control”
- Menu: Plays a menu with single DTMF digit options.
- User Input: Collects DTMF digits from the caller.
- Voice Input: Collects voice input from the caller using speech recognition.
- Authentication: Collects caller ID and PIN 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.
- Survey: Enables asking questions, collecting the caller’s answers in a CSV file.
- Prompt Playback: Plays back an audio prompt.
- Record: Records audio from the caller.
- Record and Email: Records audio from the caller, and sends it attached to an email message.
- Transfer: Transfers a call.
- Attach Call Data: Attaches data to an active call.
- Get Attached Call Data: Reads data previously attached to the current call.
- Disconnect Call: Disconnects the call.
- Make Call: Makes a call between two numbers.
- “Call Flow”
- Assign a Variable: Sets a variable to a value.
- 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.
- Parallel Execution: executes many branches at the same time.
- Loop: Loops while a condition is met.
- Logger: Writes information to the 3CXCallFlow.log file.
- Exit Callflow: Finalizes execution immediately.
- “Application Tools”
- Encryption: Encrypts or decrypts data using TripleDES, and computes MD5 hashes.
- CRM Lookup: Executes queries on the CRM configured in the 3CX Management Console.
- Database Access: Executes SQL statements on SQL Server, PostgreSQL or MySQL databases.
- E-Mail Sender: Sends emails with attachments.
- Execute C# File: Executes C# code (.NET Core) from a file.
- Execute C# Code: Executes C# code (.NET Core) provided in the same component.
- 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.
- JSON / XML Parser: Allows parsing JSON or XML text, mapping specific nodes to variables.
- CSV Parser: Allows parsing CSV formatted text, returning a table with all the values.
- Transcribe Audio: Allows converting speech to text, taking the audio from a WAV file.
- “3CX Internal Properties”
- Get DN Property: Reads a DN property value.
- Set DN Property: Writes a DN property value.
- Get Global Property: Reads a global 3CX parameter.
- Set Global Property: Writes a global 3CX parameter.
- Get Extension Status: Gets an extension’s active profile, including overrides, and checks if it is in a call.
- Set Extension Status: Sets the extension’s active profile.
- Get Queue Extensions: Gets the list of agent extensions for a queue, based on logged-in status.
- Get Queue Status: Gets the status for a specific queue from the 3CX server, returning the number of calls waiting, calls being served, and available agents.
- Set Queue Extension Status: Allows changing the queue login status for an extension, either globally or specifically for a particular queue.
- “User Defined Components” - These user-created components created are automatically added to the toolbox.
For more info on the CFD components refer to the CFD Components guide.
Project Explorer
This panel allows exploring the Project’s files, including 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” enables you to perform these 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 is shown in red font, indicating that it is missing.
Properties
The “Properties” panel shows information on the currently selected object. If the object contains actions, these are shown so they can be quickly executed. For example, the “Create a condition” component contains an “Add Branch” action, used to add child conditional branches easily.
Error List
The “Error List” panel is used to display these types of messages during the build process:
- Errors: the project could not be built because of errors in the configuration of one or more of the components. The user needs to correct the error(s) before output can be generated.
- Warnings: some issue(s) exist but the output can be generated. Users need to consider the message(s) and verify if some corrective action is required.
- Messages: information to be considered by the user without affecting output generation.
Each message includes information related to the component to review, including the file location. Double-clicking or pressing <Enter> on a message, automatically opens the referenced file and selects the component.
The CFD enables filtering the list of messages by clicking on the button for each message type.
Output
The “Output” panel 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.
Getting Help
You can open the web-based user’s manual at any time from the “Help” > “Documentation” menu item.
When configuring a component, to open the relevant documentation you can:
- click on the included help button on the dialog’s title bar
- press the <F1> key with a component selected in the designer
- right-click a component and select “Help” from the context-sensitive menu.
See Αlso
- Install the 3CX Call Flow Designer
- Accessing a database from a CFD voice app
- Sending emails from a CFD voice app
- How to play a sequence of digits from a 3CX Call Flow Designer voice app
- Automated Telephone Ordering Voice app with CRM integration via the 3CX API
- 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 and Speech to Text with the 3CX Call Flow Designer
- Creating a predictive dialer with the 3CX CFD
- Using the Loop component to navigate upwards
- Registering and making callbacks
- Using the survey component
- Using the CRM Lookup component
- See how to integrate 3CX with the CRM API
Last Updated
This document was last updated on 30th May 2023