{"id":14270,"url":"\/distributions\/14270\/click?bit=1&hash=a51bb85a950ab21cdf691932d23b81e76bd428323f3fda8d1e62b0843a9e5699","title":"\u041b\u044b\u0436\u0438, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a \u2014 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0433\u043e\u0440\u0435","buttonText":"\u041d\u0430 \u043a\u0430\u043a\u043e\u0439?","imageUuid":"f84aced9-2f9d-5a50-9157-8e37d6ce1060"}

Nihao, team! — корпоративный чат-бот для вашей компании

В статье рассказываю о сервисе для запуска корпоративного чат-бота, который снимает рутинные HR (и не только) задачи.

Апдейт от 2023 года - мы выпустили новый сервис для создания корпоративного чат-бота - Стаффи. Узнайте подробнее в статье на VC:

Привет! Меня зовут Кирилл, я CTO компании ISS.Digital. Сейчас расскажу о результатах запуска чат-бота, который снимает рутинные корпоративные задачи.

Потребность в таком инструменте внутри нашей компании росла вместе с самой компанией — выходят новые сотрудники, и возникают однотипные вопросы и задачи. Например: как пойти в отпуск, как попасть на парковку, что за новый парень в синем свитере, как зовут главного бухгалтера, как получить справку 2НДФЛ, где пообедать — наверняка вы и сами можете добавить что-то в этот список.

Как и многие компании, внутренние знания мы ведём во внутренней wiki (Confluence), а лучшие HR на планете делают у нас лучший интро по основным вопросам для новых коллег. Но так бывает, что напутствия лучших HR вылетают из головы через минуту, и хочется более быстрого инструмента для поиска ответа на свой вопрос, чем Confluence или богоподобный Notion.

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

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

Информация о коллегах

Первое (и самое простое), что хотелось сделать — дать возможность быстро найти контакт коллеги, если ты с ним раньше не общался или просто лень искать его данные в привычной Google табличке «Список сотрудников».

Открываем Telegram, пишем «кто такой Александр Пушкин»:

Готово, перед нами информация об Александре.

Было бы слишком скучно остановиться на этом — вжух-вжух, и наш бот умеет работать с разными формами имён. Теперь у бота можно спрашивать и так и сяк о конкретном человеке:

● «подскажи, кто такой Саша Пушкин»

● «как выглядит Саня»

● «контакты Шурика»

Если среди ваших коллег несколько Александров, бот заботливо уточнит, о ком идёт речь:

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

Кстати, запрос к боту «как выглядит Саня» — пример из реальной жизни. В компанию выходят новые сотрудники, и иногда действительно нужно понять, как выглядит новый коллега.

Часть информации о себе сотрудник может изменить непосредственно из бота — например, добавить ссылки на свои соц. сети или обновить фотку.

Оставим пока Саню в порядке, двигаемся дальше.

Информация о проектах

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

Если вы в компании недавно, со списком проектов можно ознакомиться прямо в боте:

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

Кстати, спросить о проекте можно у бота и напрямую, написав ему что-то в духе «Расскажи о проекте Паркоматика».

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

P.S. Паркоматика — это один из проектов компании ISS, подробнее я рассказывал в этой статье.

Пропуск на парковку

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

Нет проблем, открываем бот и пишем: «нужен пропуск на парковку». Небольшое видео для ясности процесса:

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

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

Назначение встреч и бронирование переговорок

Допустим, вам необходима одна из переговорных вашего офиса завтра на 13 часов. Всё просто — вы открываете бот и пишете «нужна переговорка завтра с 13 до 15». Далее активизируется светлая магия — как она работает можно посмотреть на видео:

Разберём по шагам что делается внутри бота:

1. Проверяем, свободна ли переговорка

Бот проверит, свободна ли выбранная переговорка завтра с 13:00 до 15:00, и если да, то предложит указать тему встречи и дать описание. Данная информация будет занесена в событие вашего календаря.

2. Зовём на встречу коллег

Далее бот уточнит, каких коллег следует пригласить на встречу.

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

3. Создаём встречу

После уточнения данных событие будет создано в вашем календаре. В настоящее время умеем работать с Google календарём (пользователю при первом использовании функционала нужно пройти авторизацию через Google аккаунт и предоставить доступ к своему календарю). Планируем в ближайшем будущем выпустить релиз с поддержкой календаря Битрикс24.

Сколько радостных мук и бессонных ночей подарил модуль работы с датами! Это важная составляющая продукта, которой мы занялись сами, потому что ни одно из существующих решений не удовлетворяло нас своим качеством. Например, «завтра с 13 до 14», «в следующий четверг с 15:30 на пару часов», «27 марта в 13:00» — эти и многие другие варианты написания будут корректно распознаны ботом. Распознавание дат и времени нам ещё пригодится в других модулях.

Заявление на отпуск

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

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

Разобравшись с датами, бот будет готов что-то сделать с вашей заявкой на отпуск — в нашем случае генерируется заявление в PDF, которое необходимо распечатать и отнести на подпись руководителю. Однако, может быть и другой сценарий — например, отправить данные заявления через API в вашу внутреннюю систему.

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

Отпускные дни

Пойти в отпуск — это замечательно. Но сколько у меня осталось отпускных дней? Вопрос довольно простой для корпоративного чат-бота:

Информация об отпускных днях сотрудника запрашивается через API внутренней системы (привет, 1С!) в момент обращения к боту. О технических деталях я ещё напишу чуть ниже.

Поиск в корпоративном хранилище

Порой нужно что-то найти в корпоративном Confluence, Google диске или Dropbox. А бывает такое, что не помнишь точно, в каком именно хранилище лежит нужный тебе документ — тогда точно надо воспользоваться функционалом поиска.

Открываем бот, пишем: «/search дев-дев»

По вашему запросу бот ищет сразу в нескольких подключенных хранилищах и выдает ссылки на найденные результаты.

В настоящее время умеем работать с Confluence, Google Drive и совсем недавно подключили Dropbox. В планах — подключение Notion, Яндекс.Диск, Miro. Слышим от потенциальных клиентов запросы на поиск по корпоративному файловому хранилищу (WebDav, сетевые диски и даже FTP) —думаем над этим.

Pulse опросы

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

Вообще этот модуль должен превратиться в HR-инструмент для сбора интересных метрик о коллективе (удовлетворённость, вовлечение и прочие социальные волнения). Пока смотрим на отзывы и думаем, в какую сторону развивать это направление — возможно, нужно было бы интегрироваться с существующими решениями.

Рассылки и дайджесты

Конечно, можно о чем-то сообщить коллегам в виде информационной рассылки.

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

Можно назвать это обычной рассылкой, но с фишечкой, которую мы назвали дайджесты.

Каждое отправляемое сообщение отмечается типом (дайджестом). Например, сообщения о релизах отмечаются дайджестом «Апдейты».

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

Есть и системные дайджесты — например, дайджест о днях рождениях в этом месяце (отправляется в первый день месяца) или дайджест с основными метриками всех прокатов компании — общая сводка для всех о том, что происходит (отправляется по понедельникам, а текст сообщения формируется через API запрос к сторонней системе, которая и собирает сводку по метрикам проектов).

Музыкальный бот

Сокровищница, откуда можно узнать о музыкальных предпочтениях коллег. Всё очень просто: отправляете боту ссылку на ваш любимый музыкальный трек из стриминг сервиса (Яндекс.Музыка, Spotify, YouTube, Apple Music), далее считывается название трека и публикуется в Telegram канале, на который подписаны коллеги.

Конечно, всё это обязательно с лайками и статистикой лучших треков за 30 дней.

Авторизация

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

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

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

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

Другие действия

Всё, о чём я рассказал выше, — в нашей терминологии это намерения пользователя или «интенты» (англ. intent — намерения), которые пользователь выражает боту в виде своего запроса.

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

Например, запрос пользователя «Хочу в отпуск» запустит выполнение интента «Отпуск», который знает о том, что от пользователя надо получить 2 даты. Запрос «Хочу провести встречу в переговорке» запустит выполнение интента «Переговорка», который умеет проверять доступность переговорных комнат, создавать встречи в календаре и пр.

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

Конечно, список приведённых выше интентов — это небольшая вырезка из созданных интентов, например, для нашей компании. Для нас мы настроили более 50 интентов, которые помогают пользователю по разным вопросам — как получить нужную справку, что делать, если есть проблема с техникой/рабочим местом, как быть, если потерял пропуск, где пообедать рядом с офисом и т.д.

Что хочет пользователь

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

Задача бота — сориентироваться здесь и сейчас и понять, что вы от него хотите, какой интент вам необходим.

За это отвечает нейросеть, которая обучена на примерах для каждого интента (ну а какой стартап без нейросети в 2022).

Такой подход помог добиться относительной свободы в том, как вы можете обратиться к боту и запустить тот или иной интент. Например, «хочу в отпуск на недельку», «хочу на море», «как взять отгул в счёт отпуска» и другие запросы запустят выполнение интента «Заявление на отпуск».

Источник данных

Наверняка у вас уже возник вопрос — откуда бот знает о сотрудниках, проектах, интентах и как это вообще всё настраивается.

Это происходит в панели управления ботом, где можно управлять всеми данными: сотрудники, проекты, интенты, интеграции и пр.

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

Продукт, планы

Сейчас пилотируем бот в пяти компаниях (включая нашу) — это компании, где работает от 35 до 100 сотрудников.

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

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

А пока продолжаем работать с обратной связью от компаний, прорабатываем новые интеграции с некоторыми сервисами, готовим ещё два канала для взаимодействия с ботом — это Slack и отдельное мобильное приложение со встроенным чатом для тех компаний, которые не хотят использовать Telegram и Slack в качестве корпоративного чат-бота.

Технические детали

Упомяну о самом главном: всё предприятие написано на Python и немного Golang. Спроектировано и запущено, как это сейчас принято, на микросервисах. И в нашем случае это вполне оправдано —например, какие-то компоненты системы требует GPU (видеокарты) и сложного деплоя, а что-то может работать на обычном и привычном CPU.

Та самая нейросеть для определения намерения пользователя построена на базе языковой модели BERT.

Ansible, Docker (k8s), Python (TensorFlow, Flask), Golang, PostgreSQL, ElasticSearch, Redis, ReactJS —вот и весь сказ о ключевых технологиях :) Намекните в комментариях, если хочется узнать о чём-то подробнее.

Конец

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

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

Спасибо за внимание, всех с наступившим 2022 ;)

0
12 комментариев
Написать комментарий...
PCT URL

Выглядит вполне симпатично 👍

Два вопроса:

1: сейчас, спустя некоторое время (когда первый wow-эффект уже прошёл), подопытные не ленятся набирать столько текста?

2: где хранятся персональные данные сотрудников?

Ответить
Развернуть ветку
Kirill Shatrov
Автор

Спасибо =)

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

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

Ответить
Развернуть ветку
PCT URL
решение поставляется как коробка и ставится на сервера компаний

Звучит круто. А можно алгоритм установки узнать? Хотя бы вкратце: что вообще требуется для запуска решения в своём периметре, и сколько времени занимает сам процесс.

Ответить
Развернуть ветку
Kirill Shatrov
Автор

В минимальной конфигурации - виртуальная машина на Linux с установленным Docker :)

Далее в зависимости от потребностей. Если кол-во интентов будет > 10, то конфигурация потребуется уже более распределённая и желательно с видеокартой для нейросети.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Kirill Shatrov
Автор

Игорь, как только выйдем в общедоступный режим - обязательно =)

Пока в наличии только закрытые корпоративные боты реальных компаний.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Анна Путятина

Кирилл, добрый день! Я работаю в диджитал агентстве и сейчас мы в поиске бота, который будет решать некоторые hr-задачи. А именно - возьмет на себя частично задачи по организации поздравлений сотрудников: в приоритете сбор вишлистов, рассылка желаний именинника всем коллегам, опросы по теме подарка, рассылка ссылки на сбор денег. Есть ли возможность подключить что-то подобное через вашего бота?

Ответить
Развернуть ветку
Kirill Shatrov
Автор

Анна, ваши задачи пересекаются с нашим модулем по дням рождениям сотрудников.

Постучите мне в Telegram (https://t.me/issdev), обсудим детали.

Ответить
Развернуть ветку
Иван Катунцев

Интересное решение! Кстати, по авторизации - можете еще попробовать по номеру телефона, то есть спрашивать поделиться номером телефона и проверять, есть ли такой номер в базе. Отпадает надобность отправки email-ов и SMS с секретным кодом :)

Ответить
Развернуть ветку
Анастасия Чеканова

Какая стоимость?

Ответить
Развернуть ветку
Георгий Синельников

Добрый день! Подскажите, как с вами связаться для обсуждения интеграции бота в нашей компании?

Ответить
Развернуть ветку
9 комментариев
Раскрывать всегда