Little Secrets of a Big Call Center: Predictive Calling
We continue to tell interesting sketches from the life of call centers, telecoms and cloud telephony. Have you ever answered the call and heard “please wait, the operator will contact you now”? The first thought that comes to mind is usually obscene, the second is “Are they completely insolent?!?”. The user who received such a call is the victim of the cunning technology of “predictive calling”, which allows call centers to save hundreds of hours of time, but sometimes leads to funny results. Under the cat, I’ll talk about this thing in more detail and show how it can be implemented in several lines of code on our voximplant cloud platformWhat is predictive dialing?
Often, the call center is tasked with phoning many customers. Large companies like to chat with a wide audience to tell them about new interesting offers, to ask about the quality of service or to report something useless. During such calls, dozens of call center operators ring up tens and hundreds of thousands of people. At the same time, considerable time is spent on dialing and waiting for a subscriber's response, most of which will not be available or will not pick up the phone. Call centers are aware of this problem and apply many interesting tricks to reduce time loss. And even better - to eliminate these losses altogether.
One of the methods is called “predictive dialing”, aka PDS, “Predictive Dialing System”. The idea is that the operators do not call anyone - instead, the program calls people, and in the event of an answer, it instantly commutes with the waiting operator. “Predictability” lies in the fact that the program knows how many operators are currently free, how much is busy, average talk time, many other factors — and calls in such a way that, on the one hand, the maximum operators are busy, and on the other hand, so that minimize situations, as described before the kata: when a person answers, but there is no free operator.
How do such things
You can configure asterisk or freeswitch yourself - this is a complex, interesting, but difficult business, up to complete impracticability. You can use a cloud platform such as Voximplant. Our platform allows you to initiate outgoing calls to customers and operators from the javascipt code, while it is possible to “call” operators directly to a browser or mobile application using our webrtc / flash SDK or mobile SDK. From the point of view of the cloud platform, a call to both the client and the operator is one line of javascript code:
var call = VoxEngine.callPSTN(data.phone_number, "rented or verified phone number");
After a while, something happens with the call: for example, the person on the other end of the line answers. Or drops the call. Or your mobile phone provider includes voicemail. Or the call ends. Or the operator’s network lays down ... There are many options, handlers are called on them, in which the javascript code needs to decide what to do next with this call. In case of calling from javascript, the VoxEngine object is available, with the help of which the call is transferred to the tenacious paws of our automation, which will switch the call with a free operator:
VoxEngine.CallList.reportProgress(true);
var request = VoxEngine.enqueueACDRequest(data.queue_name, call.callerid());
request.addEventListener(ACDEvents.OperatorReached, function (e) {
VoxEngine.sendMediaBetween(e.operatorCall, call);
e.operatorCall.addEventListener(CallEvents.Disconnected, function(e) {
VoxEngine.CallList.reportResult(true, VoxEngine.terminate);
});
});
To ensure stable operation, voximplant architecture adheres to the principle of “one javascript script - one conversation”. Instead of initiating thousands of outgoing calls from javascript code, we have a special HTTP API function that receives the name of the javascript script and the name of the queue, after which it starts the predictive callback mechanics and starts to call the required number of javascript scripts in parallel. The queue name passed in the queue_id argument is a sign that it is necessary to run predictive dialing (the queue itself can be created in your account).
Sketches from the fields
The first version of predictive dialing was based on very simple formulas of “average response percentage”, “average conversation duration” and so on. Unfortunately, this approach was very unstable to “bursts” of answers and subscribers had to hear “wait, the operator will contact you now”.
To remedy the situation, we armed ourselves with MathCAD and built mathematical models of the call center. As calculations showed, the system begins to work optimally when 30 operators or more participate in the call. At the same time, the first one hundred calls “warm up” and collect information for the matmodel, after which the call comes to “working power” and loads call center operators by 80-90%.
As part of the article, I did not go into technical details, limiting myself to a popular excursion. In practice, running javascript calling code is about a hundred lines, most of which deal with reports on events and handling a variety of error situations. Plus, many customers use the “fine-tuning” features of dialing. For example, for operators, you can set a “skill set” - on which topics this operator is ready to communicate. If our client has information about users, then he can “direct” the user to one or another group of operators in order to increase the chances of productive communication. This is done through the creation of different queues.
You can familiarize yourself with the technical part in our articles: one and two. And of course, if you have questions, I will answer them with interest in the comments.