Creating a Predictive Dialer with the 3CX CFD

Introduction

In this guide we have explained how to create a power dialer using the 3CX Call Flow Designer, i.e. a dialer that makes outbound calls at a steady pace. But what happens when we connect calls to internal agents, and some calls take longer to be served by agents? Or during time periods with more or fewer agents to take calls? Wouldn’t it be great if the dialer could adapt the pace to the number of agents available at any time? The predictive dialer comes to solve this!

This article explains how to create a predictive dialer using the 3CX Call Flow Designer. Using a predictive dialer we can automatically make outbound calls to external numbers, and connect them to an internal queue, adapting the pace to the number of agents available for the queue, and therefore reducing the time in which agents are not handling any call.

💡 Tip: The project for this example application is available via the CFD Demos GitHub page, and is installed along with the 3CX Call Flow Designer in your Windows user documents folder, i.e. “C:\Users\YourUsername\Documents\3CX Call Flow Designer Demos”.

As this project uses a Dialer, it is important to note that Dialers start working when the callflow app receives the first call, and continue working indefinitely until the 3CX Call Flow Server service is stopped. Therefore, you may want to use “Create a Condition” components to decide if it’s a good moment to make calls, even if the predictive dialer adapts the pace to the number of agents available. For example, you can check the time of the day, if today is a holiday or a weekend day, so the dialer only makes calls during the defined time frame.

The list of numbers to call can be anywhere, for example in a text file, in a database, and so on. In this example we get the numbers to call from a database, also restricting outbound calls for a specific time range between Monday to Friday.

Create the Application Callflow

Step 1: Create the Project

First, we need to create a new project. Open the CFD and go to File” > “New” > “Project, select the folder where you want to save it, and enter a name for the project, e.g. PredictiveDialerDemo.

The project includes a callflow named “Main.flow” by default. We are not using this callflow, so you can delete it. Then add a new Dialer to the project, by going to the “Project Explorer" panel, right-clicking on the project name and selecting “New Dialer".

Set the name to MainDialer and select the new dialer object in the “Project Explorer" panel, to show its properties 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.

In this example we use the Predictive Dialer mode, so we need to configure 2 properties under the “Predictive Dialer” section:

  • Optimization: select to optimize the dialer for agents or for callees.
  • Queue: the extension number of the queue to monitor.

As soon as the Call Flow app receives the first call, the dialer wakes up and checks how many agents the queue has, and how many of them are free. Then it starts making calls, until the limit set by the configured optimization mode is reached. Τhe dialer makes more or less calls, depending on optimization for:

  • 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.

Step 2: Check Time to Make Calls

For this demo, we want our dialer to make calls only from Monday to Friday, between 9am and 5pm. To accomplish this, we use the Date & Time condition component.

Date & Time condition component in 3CX CFD

Drag it from the toolbox and drop it into the designer. Set the name of this new component to checkTimeToCall. This component needs only one branch: timeToCall, executed when making a call.

Date Time Condition Collection Editor in 3CX CFD

To configure the branch timeToCall to be executed between Monday and Friday, from 9am to 5pm, we need to set the DID Filter to “AllDIDs” and the date and time period in the “Date Time Condition Collection Editor”.

Step 3: Get the Number to Call from the Database and Make Call

For this example, we get the number(s) to call from a database query, returning the next number to call, or an empty string if there is no number to call.

Database Access component configuration in 3CX CFD

We need to use a Database Access” component to execute the query, configuring it as the above example. The query returns a single value, so we use the “Scalar” statement type. Please note that you need to edit this query and database access settings according to your real environment.

Now that we have the “Database Access” component ready, we need to check if it returned a number to call or not, before making the call. For this, a Create a condition” component is needed to verify if there is a number available, using this expression in the “Condition” property:

GREAT_THAN(LEN(TRIM(getNextNumber.ScalarResult)),0)

When this condition is met, we have a number to call using a “Make Call” component.

Make Call component configuration in 3CX CFD

The “Make Call” component needs to be configured with the value returned from the database as origin, and the queue extension number as destination.

checkTimeToCall flow in 3CX CFD

After applying these changes the dialer flow resembles the example above.

Step 4: Build and Deploy to 3CX Phone System

The project is ready to build and upload to our 3CX Phone System server, with these steps:

  1. Select “Build” > “Build All” and the CFD generates the file “PredictiveDialerDemo.zip”.
  2. Go to the “3CX Management Console” > “Advanced” > “Call Flow Apps” > “Add/Update”, and upload the file created by the CFD in the previous step.
  1. The dialer is ready to start making calls as soon as the Call Flow app receives a call. Please also note that the dialer continues running until the 3CX Call Flow Server service is stopped, even if the app is deleted or replaced by a new version. So, always restart the 3CX Call Flow Server service when you delete a dialer or update it with a new version.

See Also

Last Updated
This document was last updated on 29th April 2021
https://www.3cx.com/docs/cfd-predictive-dialer/