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

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

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

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

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


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

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

В результате решение нашлось — мы задумали создать чат-бот, который бы рассылал уведомления конкретным сотрудникам или в группы. Писать решили на 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) и добавить новые процессы автоматизации.

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


x

Ещё Hi-Tech Интересное!

9 лет инкапсулированного развития — как работает проектная команда в корпорации из 2500 человек

Но я бы хотел рассказать не только их, а, скорее, то, на что похожа работа внутри большой компании. У нас тут масса историй, начиная с того, как мы переманили MS-разработчика в Питон, и заканчивая тем, как разработка поставила тикет найти ...

Typegram — дзэн блог платформа

Решил показать вам движок, который я потихоньку разрабатываю. Привет, Хабр. Это блог платформа, по возможностям очень близкая к медиум и подобным проектам. Базовые возможности: Публикации, комментарии, избранное, подписки, уведомления, рейтинги, голосования. Минималистичный, текстовый дизайн: Игровая площадка Есть игровая площадка, на ...