Есть работа для чат-бота: виртуальный помощник службы поддержки

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

    Зачем понадобился целый чат-бот при работе всего лишь с одной компанией? Всё дело в размере. Клиент — очень крупный интернет-магазин, которому требуется круглосуточная техподдержка ИТ-инфраструктуры, уведомление о возникающих проблемах, обработка и выполнение входящих заявок в предельно сжатые сроки. Последнее особенно важно, учитывая суточную аудиторию клиента и объёмы торговли.

    Однако высокие требования к качеству и скорости обработки заявок специалистами техподдержки конфликтовали со всевозможной рутиной и отвлекающими факторами. Инженерам приходилось постоянно переключаться между совершенно разными контекстами, что повышало вероятность ошибки и снижало продуктивность. А это, в свою очередь, прямой путь к увеличению количества заявок.



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

    Поэтому желание частично автоматизировать наш рабочий процесс долгое время не давало мне спокойно спать ;). Хотелось придумать способ снять с инженеров часть рутины, снизить количество отвлекающих факторов при выполнении заявок. Ещё желательно было как можно быстрее информировать инженеров и менеджеров, но при этом чтобы им не нужно было безвылазно сидеть за компьютерами и тратить время на авторизацию и поиск. Хотелось объединить систему ведения заявок клиента с нашей системой мониторинга.

    В результате решение нашлось — мы задумали создать чат-бот, который бы рассылал уведомления конкретным сотрудникам или в группы. Писать решили на Python, а в качестве среды выбрали Telegram как один из наиболее распространённых мессенджеров, который можно интегрировать куда угодно. К тому же клиенты Telegram есть практически для всех платформ, кроме какой-нибудь Nokia 3110, так что все сотрудники службы поддержки могут сразу же получать уведомления на свои компьютеры/ноутбуки/смартфоны/планшеты.

    Чат-бот был «инициативой снизу», на него не выделялось ресурсов и рабочего времени, поэтому делали его во внеурочные часы, что заняло немало времени. Итак, что же было реализовано?

    Во-первых, мы интегрировали чат-бот с Assyst — системой ведения заявок у заказчика. Теперь не нужно отдельно уведомлять дежурную смену о появлении новой заявки или инцидента — чат-бот кидает сообщение в соответствующую группу.






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

    Так что инженеры теперь гораздо быстрее разбираются в возвратах, а ответственный всегда известен.

    Ещё мы добавили оповещения о заявках, у которых до окончания срока выполнения осталось менее суток. Такие оповещения рассылаются несколько раз в день, чтобы инженерам было удобно планировать свой рабочий день, а заодно не забыть о какой-нибудь задаче. В сообщении указывается номер заявки, ответственный сотрудник и сколько осталось времени до дедлайна.


    Чат-бот был интегрирован с системой ведения заявок с помощью двух версий REST API — new и legacy. Технически в этом API ничего сложного нет: POST- и GET-запросы, парсинг и преобразование данных.

    Также наш чат-бот умеет управлять некоторыми средствами восстановления работоспособности серверов и уведомляет клиента, когда серверы снова «поднялись».

    Чат-бот проверяет работоспособность серверов на основе данных из системы мониторинга, и своевременно сообщает о возникновении проблем с тем или иным сервером.


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




    Из ключевых моментов здесь можно отметить автоматическую проверку свободного места, чтобы исключить возможность остановки бизнес-приложения, определение PID процесса и добавление прав на чтение для возможности скачивания файлов.

    С помощью чат-бота инженер может запустить сценарий перезагрузки сервера.
    Если инженер решает перезагрузить сбойный сервер, то бот отправляет сообщение, которое изменяется в реальном времени, отображая этапы перезагрузки.






    В рамках сценария выполняется целый букет автоматических задач.

    • В нашей системе мониторинга создаётся режим обслуживания.
    • Бизнес-пользователям на стороне клиента запрещается вносить изменения в «витрину» интернет-магазина (реализовано с помощью Selenium Webdriver), о чём этих пользователей уведомляют с помощью Skype-бота. Теперь дежурную смену не отвлекают звонками «У нас ничего не работает, помогите».
    • Сервер выводится из балансировки, чтобы пользовательские запросы не шли на неработающий сервер.
    • Перезагружается Java-приложение (реализовано с помощью Weblogic Scripting Tool, использующий Jython (это реализация языка Python на языке Java).
    • Сервер снова добавляется в балансировку.
    • Проверяется работоспособность сервера с помощью проверки основных триггеров из системы мониторинга.
    • В системе мониторинга удаляется режим обслуживания.
    • Снимается запрет на изменение «витрины» интернет-магазина, а бизнес-пользователям приходит оповещение в Skype-группу (реализовано с помощью Skype-бота), что серверы снова в строю, можно работать. Опять же ­— это делается автоматически, инженерам не нужно отвлекаться на рутину.



    Наконец, ещё одна задача, которую решает наш чат-бот — подготовка отчёта и прогнозирование сроков выполнения задач техподдержки. Что это такое и почему это важно? Допустим, какая-то заявка на техподдержку подразумевает выполнение нескольких подзадач, которые могут выполняться как последовательно, так и параллельно. Сама задача представляет собой XML-файл со списком подзадач. И в разные дни список этих подзадач может быть разным. У инженера спрашивают: «Когда будет готово?», — и что ему на это ответить? Эта ситуация прекрасно описывается диаграммой Гантта:



    Как мы отвечали на вопрос о сроке завершения работ до внедрения чат-бота:

    • определялось время начала работ и список подзадач,
    • затем определялось, какие подзадачи выполнены, а какие выполняются,
    • для каждой подзадачи из базы данных подтягивалась примерная длительность,
    • на основании всех этих данных инженер мог назвать ориентировочные сроки.

    Чат-бот сильно упростил нам жизнь: он сам автоматически определяет время начала работ, список подзадач (реализовано с помощью рекурсии и модуля lxml), определяет статус каждой подзадачи соответствующими запросами к базе данных (реализовано с помощью cx_Oracle) и строит прогноз на основе усреднённых статистических данных по длительности выполнения подзадач за предыдущие дни.






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



    Наш чат-бот работает всего два месяца, но уже можно подвести какие-то итоги его работы.

    Во-первых, уменьшилось время реакции техподдержки на инциденты и заявки — на 80 % улучшился показатель выполнения OLA (Operational Level Agreement, соглашение об уровнях операционной поддержки).

    Во-вторых, каждый инженер в среднем стал выполнять на 5% заявок больше. В месяц по этому клиенту выполняется 1200—1800 заявок, по 20—70 в день.

    В-третьих, специалисты стали меньше времени тратить на рутинные процедуры вроде помечания заявок: чтобы в Assyst выставить время реакции, нужно нажать несколько кнопок и дождаться загрузки, а в Telegram жмёшь кнопку — и заявка помечена.

    Эксперимент с чат-ботом мы сочли удачным и в будущем планируем клонировать бота для других рабочих групп (уже реализовано для группы SAP BI в части работы с системой ведения заявок), хотим перенести функциональность на другие платформы (Skype, Slack, Whatsapp и Viber) и добавить новые процессы автоматизации.

    Алексей Егоров, старший администратор прикладного ПО, «Инфосистемы Джет»
    Инфосистемы Джет
    Системный интегратор

    Comments 11

      0
      А посмотреть на код бота можно ???..
        0
        Открывать весь репозиторий не можем, но, если вас интересуют конкретные участки, готовы рассказать, как они примерно реализованы.
          0
          >реализовано с помощью Selenium Webdriver

          Это вы сейчас что именно сказали? Причем тут Селениум? Что он у вас там делает?
            0
            На стороне заказчика имеется инструмент, предоставляющий веб-интерфейс для управления бизнес-процессами.
            Selenium WebDriver – это программная библиотека, которая позволяет взаимодействовать с браузером (получать данные, заставлять выполнять различные действия/команды).
            Selenium Python API предоставляет доступ ко всем функциям Selenium WebDriver.
            В нашем случае веб-драйвер используется для авторизации, поиска различных элементов на веб-странице и взаимодействия с ними.

            0
            Очень интересная тема
            А не подскажите на сайт интернет магазина www.gus-svet.ru подходит такой чат бот?
            или сайт не соответствует критериям размещения?
              0
              Чат-бот не привязан к сайту, все зависит от конкретной задачи/задач. Конкретно наш инструмент выполняет роль помощника инженера тех. поддержки
              0
              Очень грамотно. Развитие бота в части ML функций не планируете? Чтобы робот сам решал заявки.
                0
                Планируем, это интересная тема. Сейчас решаем вопрос с шаблонизацией входящих заявок, без которой будет тяжело «разбирать» заявку на части и анализировать её.
                  0

                  Можно пояснить, что именно подразумевается под шаблонизацией заявок?

                    0
                    Шаблонизация заявок — в данном случае это создание единого входящего
                    шаблона для более точной категоризации заявок.
                  0

                  Не обязательно решать задачу ML для того чтобы реализовать данный функционал.

                Only users with full accounts can post comments. Log in, please.