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.

Variable Collection Editor in 3CX CFD

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.

Properties of a CFD Project

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.

Dialer component flow in 3CX CFD

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:

  1. A first dialer instance is created. It invokes the database query and makes the first call. Then it waits 30 seconds.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. After another 6 seconds, the first instance wakes up from waiting for 30 seconds, and makes another call.
  7. After another 6 seconds, the second instance wakes up from waiting for 30 seconds, and makes another call.
  8. 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

Last Updated

This document was last updated on 28 November 2023

https://www.3cx.com/docs/manual/cfd-creating-callflows-dialers/