Learn how Voximplant PDS (predictive dialing system) works in detail and how to use it for your calling campaigns.
The Voximplant predictive dialing system works as follows:
The system (instead of operators) calls customers. If customers answer, the system instantly connects them with the waiting operators. Predictiveness here means that the system knows how many operators are free now, how many are busy, the average call time, etc. The system makes calls in such a way that the maximum number of operators are busy so as to minimize situations when a customer answers, but there are no free operators.
- A PDS client sends the maxAbandonRate to the Init stream. The abandon rate is the percentage of inbound phone calls made to a call center that are abandoned by the customer before speaking to an agent. It is best to specify the value in the range of 0.01 - 0.5. Optionally, a PDS client also sends the statistics to set up the system: average call time, percentage of successful calls, and average time of a complete call cycle, including post-processing. It takes about 5 minutes, during which the statistics adapt to reality. A PDS client here is the client you create on your side. See the example of how to create one in GO on our GitHub page.
- The PDS server requests the number of tasks (Get Calling task) from the PDS client and then gets the message with the UID type and JSON custom data. This data is used in the VoxEngine scenario, so make sure to specify the phone numbers to call in there. Then the server starts the scenario, distributes the calls to operators using our ACD, and sends their results to the Voximplant PDS server to be taken into account by the system. Please note that sending the status of the task is on you, not the system.
To send the call results to the PDS server, you can use the scenario shown in the Read.me. It is important to send
DIAL_COMPLETEon the Connected event, and
FAILon the Failed event so the PDS works correctly.
- PDS all works for both ACD version 1 and SmartQueue. When referring to ACD, write:
acd_version = V1; to SmartQueue:
acd_version = V2. Please note that in ACD, you have to change the operator statuses manually, which is important to do in time for the system to work correctly. SmartQueue changes the statuses by itself. The minimum number of operators is 10, otherwise the calling process takes much more time than it should. You can use https://phone.voximplant.com/ to set up operators’ workspaces and manage their statuses for ACD v1.
- If the connection to the PDS server isinterrupted and you have to reconnect, the accumulated statistics are not lost in this case. It can be retrieved through the session_id.
- Use HTTP requests in your main scenario to update information in your database if needed. It can be any information you’d like to keep on your side.
The system calculates the time of the next start of the task based on statistics. If the time comes, it starts. If there are no tasks, the system waits.
For predictive, the system passes this to Init:
rpc Start (stream RequestMessage) returns (stream ServiceMessage);
The system calculates the number of tasks that the system can run at the moment.
If there are not enough tasks to run, it makes a request to the client (GetTask).
rpc StartProgressive (stream RequestMessage) returns (stream ServiceMessage);
The difference between the two types is that the predictive type runs the tasks based on statistics data (one by one). In progressive, the system runs as many tasks as it can at the moment.
To use the PDS for your case, do the following:
- Create a Voximplant application.
- Create a scenario and add the code shown below.
Modify the scenario so it will call customers’ phone numbers. Use the callPSTN method with the data obtained from the PDS client and a real caller ID. For example:
var call = VoxEngine.callPSTN(data.users_data.phone_number, "11111111111");.
- Create users (operators) and remember their credentials. You can use https://phone.voximplant.com/ as workspaces.
- Create a queue and attach operators to it.
- Create a PDS client. Find an example on our GitHub page. If you want to use some other language, use this proto file.
- Start the calling process.
If you need help setting up your PDS scenario please contact our technical support.