Наша команда поддержки пользователей работает с 10 проектами Plarium Kharkiv, обрабатывает около 1 300 обращений в день и общается с игроками на 9 языках, включая японский и корейский. Чтобы улучшить пользовательский опыт, мы регулярно анализируем работу департамента и по возможности оптимизируем процессы.
Недавно мы внедрили в работу два инструмента, с помощью которых автоматизировали часть ежедневных задач агентов. Первый помогает команде переводить ответы для зарубежных игроков. Второй — задавать вопросы или передавать баг-репорты программистам прямо из тикета в нужный канал Slack.
После их запуска нам удалось сократить время первого ответа на 30% и снизить нагрузку c агентов поддержки. При этом мы не обращались за помощью к разработчикам.
Ответы игрокам на иностранном языке
Все агенты поддержки свободно владеют английским, русским и украинским языками, но для ответов на испанском, итальянском, немецком, французском, японском и корейском нужна помощь переводчиков.
Процесс ответов с переводом включал много рутинных действий, вроде переключения между программами, вкладками и документами. Мы решили избавиться от лишних шагов и начали искать решение, которое могли бы воплотить своими силами.
Довольно быстро я нашел книгу Google Apps Script: Web Application Development Essentials. В ней рассказывается о возможностях автоматизации работы с таблицами, документами и другими сервисами Google.
Затем важно было понять, как Zendesk (программа, которую мы используем для работы с игроками) может обрабатывать данные со своей стороны. Благо, проблем с этим не возникло: у Zendesk довольно широкий API, который позволяет получить доступ практически ко всем функциональностям. Он дает возможность разрабатывать кастомные приложения и интегрировать их в свой софт. И, что немаловажно, на официальном портале можно найти много хороших уроков для начинающих.
Когда мы поняли, что идею вполне реально реализовать, я взялся за техническую часть. На протяжении двух недель после работы я изучал основы JavaScript, чего вполне хватило для наших задач.
Флоу агента до автоматизации
После автоматизации агенту нужно только разобраться в ситуации и написать ответ на английском в Zendesk. Остальное сделает скрипт.
Флоу после автоматизации
В итоге большая часть процесса выполняется программно. Рассмотрим его подробнее.
Для автоматического перевода запросов на английский мы используем Google Translate. На данном этапе нам очень помогает Zendesk с его встроенными функциями.
Каждый раз, когда игрок создает или обновляет тикет в Zendesk, срабатывает триггер, который отправляет соответствующий http-запрос в Google Apps Script с номером тикета и текстом, который нужно перевести. После перевода мы возвращаем сообщение обратно в тикет (через Zendesk API) в виде приватного комментария (доступен для просмотра только агентам). Весь процесс занимает считанные секунды.
Скрипт, который выполняет функцию перевода
function doGet(e)
— функция получает URL от Zendesk и парсит его, выделяя ticket ID (e.parameter.id), текст, который необходимо перевести (comment = e.parameter.comment), и язык, с которого нужно переводить (locale = e.parameter.locale).
function translateComment (comment, locale)
— функция делает перевод с соответствующего языка на английский, используя Google Language service.
function sendTranslatedComment (ticketId, locale, translated)
— функция получает переведенный текст и отправляет его назад в Zendesk с помощью Zendesk API Tickets End Point.
Агент видит сообщение от игрока в Zendesk в таком виде:
Далее агент проверяет ситуацию, готовит ответ на английском и оставляет его заметкой к тикету с хештегом #to translate.
Программа распределяет ответы по таблицам Google в зависимости от языка запроса. То есть ответ агента и сопроводительные данные (например, название игры и автор ответа) автоматически копируются в ту таблицу, с которой работает соответствующий переводчик.
Когда перевод готов, в соответствующей колонке таблицы переводчик меняет статус на Done.
Используя быстрое меню, переводчик отправляет ответ игроку прямо из таблицы.
Игрок получает персонализированный ответ в следующем виде:
В результате мы избегаем шагов, когда агенту нужно использовать дополнительные переводчики, переходить в таблицу и искать там перевод ответа, а потом снова возвращаться в HelpDesk.
Процесс коммуникации (Slack Messenger)
Чат с разработчиками — самый быстрый способ решить вопросы игроков, но с ростом количества проектов чаты перерастают в своеобразных убийц времени. Информация теряет последовательность и структурированность, часто тяжело найти подробности по кейсу, который передал твой коллега. Чатов становится слишком много, чтобы успевать их все отслеживать (у меня самого больше 70).
Мы поставили цель оптимизировать процесс передачи информации разработчикам и структурировать информацию так, чтобы ее легко было отслеживать.
Изначально флоу агентов состоял из таких шагов:
После автоматизации агенты отправляют информацию разработчикам прямо из HelpDesk, не выходя из тикета. После чего пишут игроку, что решением его вопроса уже занимаются. Рассмотрим процесс подробнее.
Мы разработали приложение, которое отображается в виде формы прямо в интерфейсе Zendesk и доступно агенту в любом тикете.
Если игрок задает вопрос, связанный с разработкой, или сообщает о возможном баге, агент вносит текст сообщения в форму, выбирает тип запроса (Question или Bug Report), выбирает из списка канал по проекту и нажимает «Отправить».
После этого происходит несколько параллельных действий.
Первое: скрипт генерирует сообщение, которое включает необходимый разработчикам набор данных по игроку. Для быстрого понимания приоритетности со стороны программистов, мы визуально разделили сообщения.
Так выглядит сообщение в Slack с типом Bug Report:
Так выглядит сообщение в Slack с типом Question:
Второе: в тикете игрока создается примечание с информацией о том, в какой канал Slack мы передали данные и сообщение. Мы сохраняем эту информацию на случай, если к работе с запросом будут подключаться другие агенты — так они будут в курсе того, что уже было сделано.
Третье: программа случайным образом подбирает один из шаблонов ответа для игрока. Агент сначала читает его, при необходимости адаптирует под ситуацию и отправляет.
Результаты
- Информация в чате имеет структурированный вид (все дополнительные вопросы по ситуации и решения от разработчиков собираются в тред).
- За счет визуализации разработчики знают, на что реагировать в первую очередь, а что имеет более низкий приоритет.
- Агент не тратит время на переключение между инструментами.
В будущем мы видим много возможностей для работы приложения и дальнейшей оптимизации процесса. Думаем над тем, чтобы ответы на наши вопросы автоматически попадали из Slack обратно в тикет. Также хотим добавить в сообщения кастомные кнопки для быстрого отображения статуса переданного вопроса или баг-репорта.
Инструменты, о которых я рассказал, не единственные наши нововведения, но они достаточно универсальны, просты в реализации и не требуют финансовых затрат.
Для меня самое важное, что идеи по оптимизации исходили от самой команды. С одной стороны, мы постоянно улучшаем пользовательский опыт, с другой — это положительно влияет и на нас.