📜 ⬆️ ⬇️

Little Secrets of a Large 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 now contact you”? The first thought that comes to mind is usually obscene, the second - “are they, have become completely insolent?!?”. A user who receives such a call is a victim of the clever “predictive dialing” technology, which allows call centers to save hundreds of hours of time, but sometimes leads to amusing results. Under the cut, I'll tell you more about this thing and show how it can be implemented in a few lines of code on our voximplant cloud platform.

What is predictive dialing?


Often, the call center is tasked with calling many customers. Large companies like to communicate with a wide audience to tell them about new interesting offers, ask about the quality of service or report something useless. During such telephone calls, several dozen call center operators ring up tens and hundreds of thousands of people. At the same time, considerable time is spent on dialing the number and waiting for the answer of the subscriber, most of which will not be available or will not pick up the phone. Call centers are aware of this problem, and use many interesting techniques to reduce time losses. And even better - generally eliminate these losses.

One of the methods is called “predictive dialing”, aka PDS, “Predictive Dialing System”. The idea is that the operators do not call anyone - instead of them, the program calls people, and in case of an answer, instantly commutes with the waiting operator. “Predictivity” is that the program knows how many operators are now free, how many are busy, the average talk time, many other factors - and it calls each other in such a way that, on the one hand, maximum operators are busy, and on the other hand - minimize situations as described before kata: when a person answers, but there is no free operator.

How do such things


You can set up asterisk or freeswitch yourself - this is a difficult, interesting, but difficult task, down to complete impracticability. You can use the 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 the 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 to the bell: for example, the person at the end of the line answers. Or reset the call. Or the mobile operator includes voicemail. Or the call ends. Or a network operator lays down ... There are a lot of options, handlers are called on them, in which the javascript code needs to decide what to do with this call. In the case of calling from javascript, a VoxEngine object is available, with the help of which the call is transferred to the tenacious legs of our automation, which will connect 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, the 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 as input, and then starts the predictive mechanics obzovna and starts in parallel to call the required number of javascript scripts. The queue name passed in the queue_id argument is a sign that it is necessary to start the predictive call (the queue itself can be created in your personal account).

Sketches from the field


The first version of the predictive callback relied on very simple formulas for “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 the calculations showed, the system begins to work optimally when 30 operators or more participate in the dialing. With this, the first hundred calls are “warming up” and gathering information for the matmodel, after which dialing goes to the “operating capacity” 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, a working javascript dialing code is about a hundred lines, most of which deal with reporting events and handling a variety of error situations. Plus, many customers use the functions of “fine tuning” dialing. For example, for operators, you can set the “skill set” - on what topics this operator is ready to talk. 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.

For more information on the technical part, you can find in our articles: one and two . And of course, if you have questions, I will answer them with interest in the comments.

Source: https://habr.com/ru/post/272945/


All Articles