DIY: Popular do-it-yourself auto-dialer with minimal cost

    An article from the heading "Very good hands."

    Today we will tell you how to make your own “Callback” service (aka “dialer”, “callback”, “leadback”, etc.) using 7 plastic bottles, scotch tape, one programmer and the VoxImplant service. We have it called the "Secretary."


    Bit of theory

    In a nutshell, let me remind you what it is and how it is useful for sites. This is the phone icon, which is a dynamic call order form. Dynamic, because it is present on the site during the entire session of the visitor and can be located anywhere in the browser - top, bottom, left, right. If you click on the icon, a form pops up asking you to leave a phone number and promising to call back soon (in 15-30 seconds). After the visitor has left his phone number, the service automatically and almost instantly connects your operator and the customer of the call.

    It may look different. Below are several versions that we have implemented for our customers.



    In general, a convenient, useful, and mega-popular service (according to my subjective calculations, there are now more than 100 clones of the same type on the market that compete only in the marketing packaging of the product).

    A bit of our statistics

    On a site with traffic of about 4,500 people a day, our “Secretary” attracts an average of 2230 minutes of calls per month. Which is more than 1.5 days of pure time. The average duration of a conversation is 4 minutes, that is, 500-600 calls per month.

    Parameters and values:
    1. Attendance - 4500 per day
    2. Total time - 2230 minutes per month
    3. Avg. duration - 4 minutes
    4. Avg. the number of leads (calls) - 550

    The results speak for themselves. And there is nothing stopping me from recommending this service to use.

    A bit of practice

    Now that we have remembered what this service is, why it is needed and given examples of its practical benefits, we propose to start assembling “our” constructor.

    We will need:
    • Designer, 1 person. He should draw a widget that you will use on your site. Cost: from 1,000 rubles to 10,000 rubles, depending on which specialist you take.
    • Layout designer, 1 person. He must make up a drawn widget. Cost from 1000 rubles to 15000, depending on the complexity of the display algorithms, widget adaptability for different devices and the number of browsers that your tool supports.
    • Programmer, 1 person. Most often, this is the same layout designer who should hang up the call redial function on the desired button. Cost from 3000 to 10000. Again, it depends on the complexity of implementation.

    I will not dwell on the item "how to draw and layout a widget." It seems to me that this question will not cause difficulties. We turn right now to how all the dialer mechanics are implemented.

    I met several options for solving this issue:
    • Using a cloud PBX + API
    • Using CRM functionality
    • Using Asterisk
    • Using VoxImplant

    We will consider the option with VoxImplant. The remaining options, I suspect, are not much more complicated. Immediately make a reservation that the purpose of this article is to show the simplest example of auto redial, but nothing will stop you from adding something more complicated using api voximplant.


    1. Register in the VoxImplant service
    2. In the "Users" section, create the user that will be needed for authorization in the application.
    3. In the "Scripts" section, create a script. This is the code that will be executed on the voximplant side when making a call.

    An API description can be found at
    Here is a small example of a similar scenario:

    var call1, call2, phone;
    VoxEngine.addEventListener(AppEvents.Started, handleScenarioStart);
    VoxEngine.addEventListener(AppEvents.HttpRequest, handleHttpRequest);
    function handleHttpRequest(e) {
      // Handle HTTP request sent using media_session_access_url
    function handleScenarioStart(e) {
      // Data can be passed to scenario using customData
      // script_custom_data param in StartScenarios HTTP request will be available to scenario as customData
      // in this scenario we will pass phone string via script_custom_data
      phone = VoxEngine.customData();
      // start scenario - calling number 1
      call1 = VoxEngine.callPSTN(phone, '74991112233'); // Office phone
      // assign event handlers
      call1.addEventListener(CallEvents.Connected, handleCall1Connected);
      call1.addEventListener(CallEvents.Failed, handleCall1Failed);
      call1.addEventListener(CallEvents.Disconnected, handleCall1Disconnected);
    function handleCall1Failed(e) {
      // Fail handler
    function handleCall1Disconnected(e) {
      // Disconnect handler
    function handleCall1Connected(e) {
      // first call connected successfully, play message
      call1.say("Приветствие", Language.RU_RUSSIAN_FEMALE);
      call1.addEventListener(CallEvents.PlaybackFinished, function(e1) {
      	// after message played - calling number 2
        call2 = VoxEngine.callPSTN(phone, '74991112233');
        // assign event handlers
      	call2.addEventListener(CallEvents.Connected, handleCall2Connected);
      	call2.addEventListener(CallEvents.Failed, function(e2) { 
          call1.say("Ничего не получилось", Language.RU_RUSSIAN_FEMALE);
          call1.addEventListener(CallEvents.PlaybackFinished, function(e3) { VoxEngine.terminate(); });      
      	call2.addEventListener(CallEvents.Disconnected, function(e2) { VoxEngine.terminate(); });
    function handleCall2Connected(e) {
      // connect two calls with each other - media 
      VoxEngine.sendMediaBetween(call1, call2);
      // and signalling
      VoxEngine.easyProcess(call1, call2);

    4. In the "Applications" section, create an application to which we attach the created user. We create the same rule in which the script we wrote is executed.
    5. If necessary, we buy a number to which you and your customers will be called. Theoretically, for each scenario, you can configure a separate number.
    6. Return to our folded widget. When making a call, for example, when you click the Order Call button, you need to call your own function, which will send a request to the API. Let's say it's called makeCall (phone). The makeCall function should call the StartScenarios method, into which you need to pass:

    • account_id (on the page ),
    • rule_id (rule number),
    • api_key,
    • phone (the value of our customer’s number. This parameter is set in script_custom_data)
    Description of the StartScenarios method -

    Voila, a simple version of the dialer is ready. At will, it can be developed further, as your heart desires. For example, dial up to the client only if your call center answered and pressed the connection button. Or iterate over several numbers of your managers and choose the one that is free.

    Some text in small print

    Now we will talk about what should be considered at startup, when everything is ready for it.
    1. The work of your call center.
    Check that your call center has the ability to quickly respond to incoming applications. After all, reaction speed is half the success. It is optimal to buy a dedicated number from VoxImplant, and also select a number on your side and receive these calls “past” the answering machine. Thus, fulfilling the promise to call back in 25 seconds. Otherwise, you must admit, it will look strange if your client picks up the phone in the hope of receiving an answer to the question, but instead hears: "Stay on the line, your call is very important to us." Accordingly, solve this issue either by software or organizational.


    2. Night time.
    If you do not have a round-the-clock call center, this must be taken into account. Either simply turn off the form at the end of the working day, or change the text to "We will call you back in the morning." In any case, this is a simple task for your typesetter.
    3. Mobile version.
    It is worth seriously considering this. Do you have adaptive website layout for mobile traffic? If there is, then this should be taken into account in the technical specifications for layout layouts. If not, it’s better not to use the tool on mobile traffic at all. You will not lose much, but people will not be dissatisfied. In any case, this issue is resolved with the designer and layout designer at the stage of drawing the widget.

    A little bit about money

    The budget of the event is very trivial! A minute of conversation will cost from 1.6 cents per minute for city lines to 2.6 cents for mobile. On two lines, a call will cost you a ruble of 3.5 on average.

    Integration costs nothing at all, except for the costs of a programmer.

    Dedicated number - $ 4.6975 per month.

    Total total costs on average:
    1. Designer - 6,000 rubles
    2. Layout-programmer - 12,000 rubles
    3. Dedicated number - 300 rubles
    4. Total *: 18,300 rubles

    * costs can be half as much or zero if you have the necessary staff.

    That's all simple manipulations, thanks to which you have your own callback service. More precisely, only part of it. The fact is that many lead capture algorithms are based on a more intelligent or simply technically more complex model. And they take into account many factors - when, to whom and taking into account what conditions to force a callback form to not annoy visitors and at the same time increase the number of calls, the time of receiving calls by day of the week, the ability to exclude specific phone numbers, etc. All this also gives an additional effect. But this is a topic for a separate article.

    I can recommend representatives of online stores to read my article about Smart Offers- Another of our services, whose presence on the site guarantees high performance, especially when used in tandem with the "Secretary". At the same time, the display of “Smart Offers” is blocked at the moment the visitor fills out the “Secretary” form. This ensures maximum loyalty to your visitors.


    PS You ask why 7 plastic bottles and scotch tape?

    Scotch - so that the programmer is not bored. Better to take a 12 year old. And 7 plastic bottles were not useful. Additional savings are obtained.

    Also popular now: