Callflows and Dialers
Introduction
A voice application has two possible entry points:
- Callflows: triggered when an inbound call arrives to the voice application.
- Dialers: started when the voice application receives a call, and continue working indefinitely, without any established call.
Creating a Callflow
When you create a new project, by default a new callflow named “Main.flow” is automatically created. The CFD only allows one callflow per project, so if you need more callflows, you can create a different project for each one.
When the application is built, the generated output package needs to be uploaded to 3CX via the Management Console in “Advanced” > “Call Flow Apps”. Then you can configure your inbound rules to route inbound calls to this app.
Creating Callflow Variables
Callflows usually need variables to perform their job. To create variables for the callflow, go to the “Project Explorer” panel, select the Callflow file, then go to the “Properties" panel and click the button on the right of the “Variables" property.
The Variable Collection Editor is shown.
Creating a Dialer
In a similar way to callflows, a project can only have one dialer. When you upload a project containing a dialer to 3CX, it needs to receive a call to start working. Also, the dialer continues working indefinitely until you restart the 3CX Call Flow Server service.
A CFD project can have both a callflow and a dialer, in which case the callflow is activated when the app receives a call, and also the first call to the app wakes up the dialer.
To create a new dialer, go to the Project Explorer, right click on the project node, and select “New Dialer”. The new dialer file is created and its properties are displayed in the “Properties” panel.
A dialer can be configured in two (2) modes:
- Power Dialer: calls are made at a steady pace.
- Predictive Dialer: make call pace is automatically adjusted based on the number of agents available in a queue at any given moment.
When the dialer mode is Predictive Dialer, you need to configure the following properties under the “Predictive Dialer” section:
- Optimization: select to optimize the dialer for agents or for callees:
- Agents: keeps agents as full as possible, reducing the time in which they're not handling any call. So the dialer makes calls, aiming that every agent has a call every time. This probably causes a few calls to wait in the queue, so some callees may have to wait a few seconds to be connected to the agents, but the dialer tries to reduce the number of calls waiting in the queue as much as possible.
- Callees: here callees are immediately connected to a free agent, and never wait in the queue. This causes some agents to be free for more time than with the previous approach, but the dialer ensures that callees are immediately assisted by an agent.
- Queue: the extension number of the queue to monitor.
On the other hand, when the dialer mode is Power Dialer, you need to configure the following properties under the “Power Dialer” section:
- ParallelDialers: the number of simultaneous dialer instances launched.
- PauseBetweenDialerExecution: the delay duration in seconds for each dialer instance between flow executions.
A simple example to explain: Our dialer gets the numbers to call from a database and then makes the call, based on the dialer flow.
If we set ParallelDialers to 5, and PauseBetweenDialerExecution to 30 seconds, this is what happens:
- A first dialer instance is created. It invokes the database query and makes the first call. Then it waits 30 seconds.
- After 6 seconds, a second dialer instance is created. It invokes the database query and makes the second call. Then this instance waits 30 seconds.
- After 6 seconds, a third dialer instance is created. It invokes the database query and makes the third call. Then this instance waits 30 seconds.
- After 6 seconds, a fourth dialer instance is created. It invokes the database query and makes the fourth call. Then this instance waits 30 seconds.
- After 6 seconds, a fifth dialer instance is created. It invokes the database query and makes the fifth call. Then this instance waits 30 seconds.
- After another 6 seconds, the first instance wakes up from waiting for 30 seconds, and makes another call.
- After another 6 seconds, the second instance wakes up from waiting for 30 seconds, and makes another call.
- And so on…
This iteration continues until the 3CX Call Flow Server service is stopped. Please note that even if you delete the app from the console, or replace it with a new version, the dialer continues executing, as it can’t be unloaded from memory. This is a known issue, to be addressed in an upcoming update.
Creating Dialer Variables
In the same way than callflows, dialers may have variables and you can create or edit them from the Properties panel, after selecting the dialer object. Variables are reset to their default values every time the dialer flow starts.
Important Considerations for Dialers
It is important to note that Dialers start working when the CFD app receives the first call, and continue working indefinitely until you restart the 3CX Call Flow Server service. Even if you delete the app or replace it with a newer version, the old dialer continues working. As a result, it is recommended that you restart the 3CX Call Flow Server service before updating a dialer, or after deleting it.
In addition, it is recommended that you use “Create a Condition” components to decide the schedule for making calls. For example, you can check the time of the day, if today is a holiday or a weekend day, and depending on that you can decide to make calls or not.
Without this logic, the dialer starts making calls as soon as it receives the first call, and does not stop until you stop the 3CX Call Flow Server service.
See also
- 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 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 28 November 2023
https://www.3cx.com/docs/manual/cfd-creating-callflows-dialers/