Как робот «Совести» общается с клиентами

    Расскажем, как финтех-проект группы QIWI — карта беспроцентной рассрочки «Совесть» — перевел часть разговоров контакт-центра на робота, который не только отвечает на вопросы, но и сам задает их при исходящих обзвонах. Статья про применение на практике HTTP-запросов, синтеза речи и распознавания голоса.



    Шаг 1: Интеллектуальный IVR


    Вопрос денег — один из немногих, которые клиенты до сих пор предпочитают решать устно, так что загруженность колл-центров банков отнюдь не падает в связи с появлением чатов на сайтах и в мобильных приложениях. Операторы «Совести» ежедневно получают более четырех тысяч звонков, связанных с оформлением и использованием карты рассрочки. Поскольку большинство обращений типичны и не требуют особенной компетенции для оказания консультации, их обработку можно передать роботу.

    // Модуль, который потребуется для распознавания речи абонента
    require(Modules.ASR);
    ​
    let call;
    ​
    // Данные, которые будем собирать во время звонка
    let data = {};
    ​
    const PHRASES = {
     hello: "http://some_url_to_mp3_sound_for_start_question"
    };
    ​
    // Соответствие категории и dtmf, который будет отправлять Qiwi
    const dtmf = {
     operator: { name: "Оператор", digit: "0" },
     balance: { name: "Баланс", digit: "1" },
     pin_code: { name: "Пин-код", digit: "3" }
    };

    Как это устроено? Обращаясь по номеру горячей линии, клиент попадает в голосовое меню и озвучивает тему своего вопроса — система распознает сказанное и направляет звонок на дальнейшую обработку. Клиенту нужно просто озвучить в свободной форме свою проблему, дополнительного нажатия каких-либо клавиш на телефоне не требуется.

    // Получаем входящий звонок от «Совести», запускаем обработчик события входящего звонка
    VoxEngine.addEventListener(AppEvents.CallAlerting, e => {
     // Сохраняем объект звонка в глобальную переменную
     call = e.call;
    ​
     // Получаем номер телефона звонящего для будущей обработки
     data.phone = e.callerid;
    ​
     // При переадресации звонка по SIP есть возможность передать на платформу строковую информацию в заголовках.
     // В случае с «Совестью» платформа получает идентификатор звонка в заголовке X-CID
     // Сохраняем для будущей обработки
     data.xcid = e.headers["X-CID"];
    ​
     // Отвечаем на звонок
     call.answer();
    ​
     // Вешаем обработчик на событие соединения с клиентом
     call.addEventListener(CallEvents.Connected, HandleConnected);
    ​
     // Обрабатываем событие старта аудиозаписи
     call.addEventListener(CallEvents.RecordStarted, record => {
       // Сохраняем URL записи для дальнейшей обработки
       data.record_url = record.url;
     });
     // Обрабатываем событие отключения абонента
     call.addEventListener(CallEvents.Disconnected, HandleDisconnected);
    });
    ​
    async function HandleConnected(e) {
     // Запускаем запись разговора
     call.record(true);
    ​
     // Задаем вопрос абоненту
     await startPlayback(call, PHRASES.hello);
    ​
     // Начинаем слушать его ответ
     startASR();
    }

    Если потребителя интересуют общие инструкции — например, активация карты, способы ее пополнения, смена ПИН-кода и так далее, он слышит записанный аудиоролик с пошаговым объяснением.

    // Функция, которая позволяет воспроизвести mp3-сообщение абоненту
    function startPlayback(call, url, loop = false) {
     return new Promise(resolve => {
       call.startPlayback(url, loop);
       call.addEventListener(CallEvents.PlaybackFinished, function callback() {
         resolve(call.removeEventListener(CallEvents.PlaybackFinished, callback));
       });
     });
    }

    Таким образом, первая функция колл-центра, которую легко автоматизировать — это воспроизведение стандартных хауту и ответы на распространенные вопросы.

    Вторая группа обращений, для закрытия которых не нужен человек — это информирование об актуальном балансе, размере задолженности, сумме ближайшего платежа.

    С точки зрения информационной безопасности весь процесс приведен в соответствие с требованиями российского законодательства и отраслевых стандартов: Voximplant не имеет доступа к персональным данным клиентов. Решение определяет тематику и передает обработку звонка в IVR «Совести», где с помощью синтеза речи озвучивается информация из карточки клиента, авторизация происходит на стороне QIWI. Сценарии голосовой обработки разделяют общие вопросы и вопросы, связанные с персональными данными.

    Показать код
    // Функция запускает модуль ASR и получает в виде строки информацию, которую произнёс абонент
    function startASR() {
     const asr = VoxEngine.createASR({ lang: ASRLanguage.RUSSIAN_RU });
    ​
     // Получаем ответ от абонента
     asr.addEventListener(ASREvents.Result, asrevent => {
       asr.stop();
    ​
       speech_processing(asrevent.text);
     });
    }
    ​
    // Функция обрабатывает фразу абонента
    function speech_processing(text) {
     /* Поиск ключевых слов/словосочетаний, чтобы сопоставить тематику разговора абонента */
    ​
     /* Каждое условие if - это выбор той или иной тематики разговора.
        Поиск ключевых слов лучше выводить в отдельную функцию,
        которая возвращает булево значение.
        Для демонстрационных целей используется метод строки
        includes и оператор &&
     */
     if (
       text.includes("хочу") &&
       text.includes("узнать") &&
       text.includes("баланс")
     ) {
       // Записываем название распознанной категории для дальнейшей обработки
       data.category = dtmf.balance.name;
    ​
       // Отправляем тоновый сигнал на сторону «Совести»
       sendDigits(dtmf.balance.digit);
     } else if (
       text.includes("хочу") &&
       text.includes("узнать") &&
       text.includes("пин")
     ) {
       data.category = dtmf.pin_code.name;
    ​
       sendDigits(dtmf.pin_code.digit);
     } else {
       // Если не распознали категорию, ставим по умолчанию - Оператор
    ​
       data.category = dtmf.operator.name;
    ​
       sendDigits(dtmf.operator.digit);
     }
    }
    ​
    // На платформу звонок попадает из IVR «Совести»,
    // и «Совесть» планирует этот звонок получить обратно, когда платформа узнает, какая категория вопроса интересует абонента.
    // Способ общения с IVR на стороне «Совести» реализован с помощью sendDigits,
    ​
    /* К каждой категории "привязан" тоновый сигнал, и «Совесть» знает об их соответствиях, то есть, получая dtmf - 1, IVR «Совести» информирует абонента о балансе, а получая dtmf - 3, обрабатывает запрос от абонента “узнать свой пин-код” */
    ​
    function sendDigits(digit) {
     // отправляем сигнал
     call.sendDigits(digit);
    ​
     // Завершаем звонок абонента через 1.5 секунды, чтобы гарантировать успешную доставку DTMF. 
     setTimeout(call.hangup, 1500);
    }
    ​
    // Обработчик события момента, когда звонок с абонентом завершен.
    async function HandleDisconnected(e) {
     // У объекта события Disconnected мы можем узнать продолжительность разговора и сохранить для дальнейшей обработки.
     data.duration = e.duration;
    ​
     // По завершении звонка у нас есть объект с данными, полученными по ходу выполнения сценария. Мы можем отправить его в CRM.
     await sendToCrm(data);
    ​
     // Обязательно завершаем сессию. Хоть у нас уже и завершён входящий звонок и больше нет активных плечей, сессия будет активна еще в течение 60 секунд. Так как нам это не нужно, принудительно завершаем её.
     VoxEngine.terminate();
    }
    ​
    async function sendToCrm(data) {
     // Для демонстрационных целей - мы просто логируем наш объект с данными.
    ​
     Logger.write(JSON.stringify(data));
    ​
     // В другом случае - именно в этой функции мы можем осуществить http - запрос с помощью функции Net.httpRequestAsync
    }


    Благодаря этому удалось не только повысить скорость и качество обслуживания клиентов, но и существенно снизить нагрузку на операторов. Сейчас больше ста тысяч звонков в месяц обрабатывается роботом. Если для решения вопроса всё же необходимо непосредственное участие оператора, IVR переключает звонок на нужного специалиста, который в письменном виде получает транскрипцию всей предварительной беседы бота с клиентом: данные попадают в CRM-систему «Совести» по API.


    Шаг 2: Голосовые уведомления


    Как снизить затраты на обслуживание входящей линии мы разобрались, переходим к исходящим. Одна из типичных причин, по которой оператор звонит владельцу карты — напоминание о внесении ежемесячного платежа: это необходимо делать по телефону, так как сообщение или push-уведомление могут быть пропущены. В то же время, совсем не обязательно тратить на этот процесс время операторов. С помощью сервиса Smartcalls «Совесть» дозванивается клиенту — всего робот делает три попытки — и проговаривает посредством синтеза речи, когда и какую сумму необходимо положить на счет.


    Сценарий уведомления

    Количество исходящих звонков может достигать двух тысяч в минуту, а режим работы позволяет задействовать его при необходимости 24/7. Это существенно оптимизирует рутинную работу операторов, не допуская необходимости раздувания штата и фонда оплаты труда, а также позволяет задействовать специалистов исключительно для решения критичных и чувствительных задач контактного центра.



    Шаг 3: Сбор обратной связи


    Последний момент — это автоматизированный сбор информации для исследований. До использования Smartcalls проекту удавалось обзванивать выборку в 3 000 – 5 000 человек в месяц. Сейчас робот совершает 40 000 исходящих звонков ежемесячно, при этом всех сотрудников, ранее занятых обзвонами, перевели на другой функционал. С помощью сервиса происходит контроль качества обслуживания, замеры оценки эффективности клиентского сервиса (CES), лояльности и удовлетворенности клиентов (NPS и CSI).


    Сценарий NPS

    Как это устроено? Бот просит клиента оценить по десятибалльной шкале один из параметров работы проекта, и дальнейший сценарий зависит от выставленной оценки. Если это «восемь» и выше, робот благодарит собеседника и завершает разговор. Если же «семь» и ниже — просит оставить развернутый комментарий, указав причины неудовлетворенности. Речь транскрибируется и выгружается в письменном виде для дальнейшего анализа.


    Сегодня технологии позволяют создать бота по-настоящему дружественным. Его способность понимать речь человека постоянно улучшается в результате непрерывного обучения новым фразам и часто используемым словам. В языковую модель добавляются не только названия промоакций или опций карты, но и множество вариантов формулировок одних и тех же запросов.
    Voximplant
    140,34
    Облачная платформа голосовой и видеотелефонии
    Поделиться публикацией

    Комментарии 20

      +14
      это необходимо делать по телефону, так как сообщение или push-уведомление могут быть пропущены

      хах, у меня нет этой карты, и после такого утверждения я её и не оформлю
      Какоето время назад, по какойто из кредиток, не помню какого банка, такуюже охренеть полезную функцию включили
      сижу на совещании… звонок непонятно от кого, сбрасываю… через 5 минут опять звонок… сбрасываю… опять, беру трубку… там 'дата платежа через 7 дней вы должны...'… черт чтоб вы сгорели там со своим платежом и настырностью.
      я понимаю если по просрочке звонят, но так… у вас там в маркетинге совсем уже неалё?
        +2
        У них суровый маркетинг в стиле «Купи слона. Нам нужно продать, а что нужно тебе, нам неважно» :) Меня достали звонками с «супер-пупер-выгодным предложением, которое заменяет кредитную карту» :) Причем, уверения, что мне это неинтересно, не помогали. Только черный список (только хардкор) в телефоне решил проблему.
        +10

        Банк настолько не уважает своих клиентов, что не хочет даже принимать звонки от них, а отправляет их прослушивать заранее записанные инструкции.

          +1
          Пфф, кажется, что в наших реалиях слова «банк» и «уважает» не сочетаются. Встречал довольно много и хамства, и откровенных подстав от банков разных уровней: от хипстерских банков без отделений до казалось бы элитных подразделений «private banking». Заставлять слушать тугого робота — это уже почти стандарт.
            0

            Иногда тупого настырного биоробота. "А почему вы не хотите нашу мультиплатиновую мегакарту?" и ответ "потому что я не собираюсь тратить деньги" не устраивает (был вклад на короткий срок в ожидании другого вложения, просто чтобы не под подушкой лежали и брать карту, чтобы их тратить, как-то не выглядит разумным, но биороботам об этом не сказали).


            PS. Интересен не "робот совести", а совесть робота.

            0
            Если это быстро решает проблемы клиента, почему нет? Если бы можно было через робота решить все проблемы, по которым я обращался на горячую линию банка, я был бы только рад. К сожалению таких умных роботов ещё не изобрели.
              0
              Здравствуйте. Никто не говорит о том, что мы не хотим помочь. Мы как раз хотим помочь каждому обратившемуся к нам клиенту.
              Но вы удивитесь, сколько людей звонит уточнить какие-то базовые вопросы: зачем нужны баллы в программе лояльности, могу ли я расплатиться картой за границей, какой у меня размер задолженности сейчас и т.д. В этих случаях достаточно участия робота. Если у него нет ответа на заданный вопрос, то звонок будет переведен на специалиста. Клиент тоже может в любой момент переключиться на сотрудника, сказав об этом роботу. На наш взгляд, здесь нет никакого неуважения.
              +3
              Обычно, когда люди звонят в колл-центр, у них есть четкая цель — поговорить с человеком, а не с машиной. Иногда очень выбешивает, когда во время звонка бот начинает откровенно тупить, задавая одни и те же вопросы, а у одного ОпСоСа он еще и пытается давить на жалость.
                +1
                Когда я звоню в колл-центр, у меня чёткая цель — решить мою проблему или узнать ответ на интересующий меня вопрос. Сделает это бот или живой человек, мне вообще-то неважно. Я помню, написал в онлайн чат вопрос, но который бот сразу предоставил мне ссылку с интересующей меня информацией. Я был вполне себе доволен.

                Вы просто, скорее всего, не звоните в колл-центр с типичными вопросами и знаете, что бот вам вряд ли поможет. В таком случае да, попытки пробраться через IVR до живого человека очень раздражают.
                  +1
                  Вот вот. Когда я хочу почитать умную вику — я пишу в чат. А если я звоню, то мне нужен человек, а не бот, который будет мне голосом зачитывать то, что по его мнению мне нужно.
                  Максимум я готов мириться с парой (не больше) уровней меню, которое выведет в нужный отдел в обход первой линии.
                    +2
                    Ну вот не так давно пропал у меня интернет. Я звоню в колл-центр а там бот умным голосом мне говорит, что по моему адресу авария на линии, этим занимаются. Всё, человек мне больше не нужен и мне не надо 15-30 минут дожидаться освободившегося оператора.

                    Я к тому, что разные ситуации бывают. Как указано в топике, большинство всё же обращаются с типичными ситуациями. Если они получают всю необходимую им информацию от робота, то это замечательно.
                      +1
                      большинство всё же обращаются с типичными ситуациями

                      помню звоню… вроде это был ВТБ, тогда ещё 24… по какомуто срочному вопросу в стиле «карту банкомат толи съел толи бабло не выдал и сказал что выдал»

                      вобщем, потыкав по меню с роботом… он мне сказал что 'ну в данный момент все операторы заняты… позвоните ПОЗДНЕЕ… короткие гудки...'

                      не ну а чо, 90% звонящих звонят по типовым вопросам, а остальные подождут пока банк на коллцентре экономит
                        +3
                        большинство всё же обращаются с типичными ситуациями

                        Еще бывает, что ситуация нетипичная, а прорваться через бота к живому человеку просто невозможно, нет такой опции. Бесит неимоверно.
                          +1
                          Вам повезло, а я две минуты за свой счёт должен был слушать, где по всей области обрывы, когда надо узнать, почему статический айпишник отвалился.
                      0
                      Приветствуем вас. Если есть четкая цель поговорить со специалистом, то достаточно озвучить свое желание роботу и ваш звонок переведут на сотрудника. ;-)
                      0
                      Я работал в одном из контакт центров. Из ста звонивших только у половины были вопросы по делу, а не просто поболтать. Из «вопросов по делу», 90% были однотипные: сколько денег на балансе, сколько стоит услуга ххх, как настроить услугу yyy.
                      Это значит, что после ввода робота:
                      1) 72% — позвонившие по делу с однотипным вопросом получат ответ не ожидая в очереди к оператору
                      2) 20% — те, кто звонит поболтать, они звонить перестанут
                      3) 8% — те, у кого не стандартный вопрос быстрее его решают потому что очереди в контакт центр нет

                      В итоге все в плюсе. НО! Люди боятся говорить с роботом, им кажется что это безждушная тупая машина, хотя люди не думают, что у этой машины нет человеческого фактора: что-то неправильно сказали, недосказали, сказали не совсем понятными терминами. Такого нет, потому что перед записью текст для робота тчательно вычитывается, согласовывается с юристами и проверяется на соответствие правилам, стандартам и т.д.
                        +1
                        3) 8% — те, у кого не стандартный вопрос быстрее его решают потому что очереди в контакт центр нет

                        мысль верная, а вывод нет

                        эти 8% будут ждать как минимум столькоже, потому что
                        1) сократят персонал контакт-центра (а это самая основная причина всей этой затеи, а то чтобы помочь людям это даже не 3 и не в 4 очередь мысль доходит)
                        2) люди вместо ожидания ответа будут пробиваться сквозь 3-4 уровневые голосовые меню, где зачастую нет 'ожидайте чтобы связаться с оператором' и не 'нажмите решетку' а 'нажмите 9' (или 0 или 8, чтобы не жали сразу пока не прослушают все 10 пунктов)

                        Такого нет, потому что перед записью текст для робота тчательно вычитывается, согласовывается с юристами и проверяется на соответствие правилам, стандартам и т.д.

                        серьезно звучит… особенно если вспомнить что у банков есть некоторые ф-ции которые они выполняют только если попросить живого оператора самостоятельно и очень уверенно и убедительно и ОЧЕНЬ убедительно буквально заставляя и иногда даже прося поменять оператора, потому что «мы так делаем но ни в коем случае не афишируем и не наталкиваем клиента на мысль что так можно и всячески уводим его от этого» (это реальные (!!) слова в одной техподдержке от руководства)"
                          –1
                          Вы не правы: у нас не было цели сократить штат операторов колл-центра, была цель его не раздувать, и максимально эффективно использовать различные ресурсы для помощи клиентам. Ну, и мы не совсем подходим под описание «типичный банк» ;)
                            +1
                            не раздувать, и максимально эффективно использовать различные ресурсы для помощи клиентам

                            Конечно, решить задачу 'максимально эффективно использовать ресурсы для бизнес-задачи 'помочь клиенту', а не действительно ему помочь. ну это бизнес же

                            Ну, и мы не совсем подходим под описание «типичный банк» ;)

                            Ну конечно ;) у вас всёравно под капотом обычные банковские продукты, те-же самые правила МПС, теже требования ЦБ и законов РФ

                            ну спозиционировали вы себя чуть по другому, поправили описания продуктов чуть иначе, но суть одинаковая

                            И ваша фраза что 'надо информировать о платеже любыми путями' — лишь выдает вашу реальную ЦА у который очень большой процент просрочки.

                            ===
                            Это всё риторически, вы всёравно не сможете ответить иначе чем официальное маркетинговое позиционирование и заученные фразы что «да мы для людей, других таких на рынке нет»
                              0
                              Это всё риторически, вы всёравно не сможете ответить иначе чем официальное маркетинговое позиционирование и заученные фразы что «да мы для людей, других таких на рынке нет»
                              Это достаточно «читаемая» методика: если компания не будет делать ничего экстрааморального, то через какое-то время люди устанут писать похожие обличающие комментарии, тогда останутся только официальные маркетинговые заявления.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое