Мы продолжаем рассказывать интересные зарисовки из жизни колл-центров, телекомов и облачной телефонии. Случалось ли вам отвечать на звонок и слышать “пожалуйста подождите, оператор сейчас свяжется с вами”? Первая мысль, которая приходит в голову обычно нецензурна, вторая — “они что, вконец обнаглели?!?”. Получивший такой звонок пользователь — жертва хитрой технологии “предиктивного обзвона”, которая позволяет колл-центрам экономить сотни часов времени, но иногда приводит к забавным результатам. Под катом я расскажу про эту штуку подробнее и покажу, как она может быть реализована в несколько строк кода на нашей облачной платформе voximplant
Часто перед колл-центром ставится задача обзвонить множество клиентов. Крупные компании любят пообщаться с широкой аудиторией, чтобы рассказать им о новых интересных предложениях, спросить о качестве обслуживания или сообщить что-нибудь бесполезное. Во время таких обзвонов несколько десяток операторов колл-центра обзванивают десятки и сотни тысяч людей. При этом значительное время тратится на набор номера и ожидание ответа абонента, большая часть которых будет не доступна или не возьмет трубку. Колл-центры об этой проблеме знают, и применяют множество интересных приемов, чтобы сократить потери времени. А еще лучше — вообще эти потери устранить.
Один из способов называется “предиктивный обзвон”, он же PDS, “Predictive Dialing System”. Идея заключается в том, что операторы никому не звонят — вместо них людям звонит программа, и в случае ответа мгновенно коммутирует с ожидающим оператором. “Предиктивность” заключается в том, что программа знает, сколько операторов сейчас свободно, сколько занято, среднее время разговора, множество других факторов — и ведет обзвон таким образом, чтобы, с одной стороны, максимум операторов были заняты, а с другой стороны — чтобы минимизировать ситуации, как описано до ката: когда человек отвечает, а свободного оператора нет.
Можно самим настроить asterisk или freeswitch — дело сложное, интересное, но тяжелое вплоть до полной невыполнимости. Можно воспользоваться облачной платформой — такой, как voximplant. Наша платформа позволяет инициировать исходящие звонки к клиентам и операторам из javascipt кода, при этом есть возможность “звонить” операторам прямо в браузер или мобильное приложение, используя наш webrtc/flash SDK или мобильный SDK. С точки зрения облачной платформы, звонок как клиенту, так и оператору это одна строчка javascript кода:
Через некоторое время со звонком что-нибудь случается: например, человек на том конце провода отвечает. Или сбрасывает звонок. Или оператор сотовой связи включает голосовую почту. Или звонок обрывается. Или ложится сеть оператора… Вариантов много, на них вызываются обработчики, в которых javascript коду нужно принять решение, что с этим звонком делать дальше. В случае обзвона из javascript доступен объект VoxEngine, с помощью которого звонок передается в цепкие лапки нашей автоматики, которая скоммутирует звонок со свободным оператором:
Для обеспечения стабильной работы архитектура voximplant придерживается принципа “один javascript сценарий — один разговор”. Вместо того, чтобы инициировать тысячи исходящих звонков из javascript кода у нас есть специальная HTTP API функция, которая получает на вход имя javascript сценария и имя очереди, после чего запускает механику предиктивного обзовна и начинает параллельно вызывать нужное количество javascript сценариев. Переданное в аргументе queue_id имя очереди является признаком того, что нужно запускать именно предиктивной обзвон (саму очередь можно создать в личном кабинете).
Первая версия предиктивного обзвона опиралась на очень простые формулы “среднего процента ответа”, “средней продолжительности разговора” и так далее. К сожалению, такой подход был очень неустойчив к “всплескам” ответов и абонентам приходилось слышать “подождите, оператор сейчас свяжется с вами”.
Для исправления ситуации мы вооружились MathCAD и построили математические модели работы колл-центра. Как показали расчеты, система начинает оптимально работать, когда в обзвоне участвуют 30 операторов или более. При это на первых ста звонках идет “разогрев” и сбор информации для матмодели, после чего обзвон выходит на “рабочую мощность” и нагружает операторов колл-центра на 80-90%.
В рамках статьи я не углублялся в технические детали, ограничившись популярным экскурсом. На практике работающий javascript код обзвона это порядка ста строк, большая часть которых занимается отчетами о произошедших событиях и обработкой разнообразных ошибочных ситуаций. Плюс к этому, многие клиенты используют функции “тонкой подстройки” обзвона. К примеру, для операторов можно задать “skill set” — на какие темы готов общаться этот оператор. Если у нашего клиента есть информация о пользователях, то он может “направлять” пользователя к той или иной группе операторов, чтобы повысить шансы на продуктивное общение. Делается это через создание разных очередей.
Более подробно с технической частью вы можете ознакомиться в наших статьях: раз и два. Ну и конечно, если у вас есть вопросы — я с интересом отвечу на них в комментариях.
Что такое предиктивный обзвон?
Часто перед колл-центром ставится задача обзвонить множество клиентов. Крупные компании любят пообщаться с широкой аудиторией, чтобы рассказать им о новых интересных предложениях, спросить о качестве обслуживания или сообщить что-нибудь бесполезное. Во время таких обзвонов несколько десяток операторов колл-центра обзванивают десятки и сотни тысяч людей. При этом значительное время тратится на набор номера и ожидание ответа абонента, большая часть которых будет не доступна или не возьмет трубку. Колл-центры об этой проблеме знают, и применяют множество интересных приемов, чтобы сократить потери времени. А еще лучше — вообще эти потери устранить.
Один из способов называется “предиктивный обзвон”, он же PDS, “Predictive Dialing System”. Идея заключается в том, что операторы никому не звонят — вместо них людям звонит программа, и в случае ответа мгновенно коммутирует с ожидающим оператором. “Предиктивность” заключается в том, что программа знает, сколько операторов сейчас свободно, сколько занято, среднее время разговора, множество других факторов — и ведет обзвон таким образом, чтобы, с одной стороны, максимум операторов были заняты, а с другой стороны — чтобы минимизировать ситуации, как описано до ката: когда человек отвечает, а свободного оператора нет.
Как делают такие штуки
Можно самим настроить asterisk или freeswitch — дело сложное, интересное, но тяжелое вплоть до полной невыполнимости. Можно воспользоваться облачной платформой — такой, как voximplant. Наша платформа позволяет инициировать исходящие звонки к клиентам и операторам из javascipt кода, при этом есть возможность “звонить” операторам прямо в браузер или мобильное приложение, используя наш webrtc/flash SDK или мобильный SDK. С точки зрения облачной платформы, звонок как клиенту, так и оператору это одна строчка javascript кода:
var call = VoxEngine.callPSTN(data.phone_number);
Через некоторое время со звонком что-нибудь случается: например, человек на том конце провода отвечает. Или сбрасывает звонок. Или оператор сотовой связи включает голосовую почту. Или звонок обрывается. Или ложится сеть оператора… Вариантов много, на них вызываются обработчики, в которых javascript коду нужно принять решение, что с этим звонком делать дальше. В случае обзвона из javascript доступен объект VoxEngine, с помощью которого звонок передается в цепкие лапки нашей автоматики, которая скоммутирует звонок со свободным оператором:
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);
});
});
Для обеспечения стабильной работы архитектура voximplant придерживается принципа “один javascript сценарий — один разговор”. Вместо того, чтобы инициировать тысячи исходящих звонков из javascript кода у нас есть специальная HTTP API функция, которая получает на вход имя javascript сценария и имя очереди, после чего запускает механику предиктивного обзовна и начинает параллельно вызывать нужное количество javascript сценариев. Переданное в аргументе queue_id имя очереди является признаком того, что нужно запускать именно предиктивной обзвон (саму очередь можно создать в личном кабинете).
Зарисовки с полей
Первая версия предиктивного обзвона опиралась на очень простые формулы “среднего процента ответа”, “средней продолжительности разговора” и так далее. К сожалению, такой подход был очень неустойчив к “всплескам” ответов и абонентам приходилось слышать “подождите, оператор сейчас свяжется с вами”.
Для исправления ситуации мы вооружились MathCAD и построили математические модели работы колл-центра. Как показали расчеты, система начинает оптимально работать, когда в обзвоне участвуют 30 операторов или более. При это на первых ста звонках идет “разогрев” и сбор информации для матмодели, после чего обзвон выходит на “рабочую мощность” и нагружает операторов колл-центра на 80-90%.
В рамках статьи я не углублялся в технические детали, ограничившись популярным экскурсом. На практике работающий javascript код обзвона это порядка ста строк, большая часть которых занимается отчетами о произошедших событиях и обработкой разнообразных ошибочных ситуаций. Плюс к этому, многие клиенты используют функции “тонкой подстройки” обзвона. К примеру, для операторов можно задать “skill set” — на какие темы готов общаться этот оператор. Если у нашего клиента есть информация о пользователях, то он может “направлять” пользователя к той или иной группе операторов, чтобы повысить шансы на продуктивное общение. Делается это через создание разных очередей.
Более подробно с технической частью вы можете ознакомиться в наших статьях: раз и два. Ну и конечно, если у вас есть вопросы — я с интересом отвечу на них в комментариях.
Комментарии (11)
CAJAX
14.12.2015 16:01Так вот как это называется. Сколько секунд в среднем приходится ждать абоненту, есть какие-то «хорошие» (если такое слово применительно) практики?
Мне какая-то компания вот таким образом названивала с месяц. Сперва я бросал трубку после второй секунды, потом решил узнать, что же им от меня нужно. После 30 секунд бросил и добавил их номер в черный список.
maxru
Ха!
eyeofhell
Я ожидал этот комментарий, поэтому поменял свое обычное «невозможно» на более мягкий вариант. Возможно. Но помучиться придется преизрядно ^_^.
maxru
Любая настройка самостоятельно немного сложнее, чем «занести денег за готовое решение».
Но не сказал бы, что прямо уж «преизрядно».
eyeofhell
Согласен, сильно зависит от ситуации. У нас много кейсов, когда клиенты, полгода-год настраивавшие asterisk или openswitch переходили на наш сервис просто потому, что толковому специалисту можно найти более важное для бизнеса применение, чем постоянно возиться с инфраструктурой и ночами мониторить что все нормально.
maxru
Толковый специалист настроит так, чтобы ночью не нужно было мониторить.
А аутсорсеров криворуких по астериску развелось порядком, ага.
/>
Слава роботам! :)
eyeofhell
Нет у нас астериска :). У нас собственные демоны на плюсах.