АРХИВ
Предложи тему для следующего выпуска
Мы открыты новым идеям, замечаниям и комментариям.
Автоматизируй это!
По многочисленным просьбам Денис Сапоненко, ведущий системный архитектор департамента разработки, провел весенний live-стрим по созданию собственного чат-бота в Телеграм. Представляем небольшое резюме его мастер-класса. В копилку полезностей.
Чат-боты – это коммуникационные программы, предназначенные для автоматизации взаимодействия с пользователем. Они реагируют на действия пользователя, события в чатах или информационных системах (Git, Jira и т.п.) и в ответ выдают информацию в какой-то канал: чат, канал в Телеграм, Slack, Skype, Twitter и т.д.

Первые чат-боты появились вместе с появлением интернета и электронных средств коммуникации (ICQ, DC-хабы) и были в основном развлекательными. Функциональность у этих ботов была очень скромная, например, бан пользователя в чате за использование нецензурных выражений или рассылка веселых фраз. Лет 10 назад начался новый виток интереса к этой теме, и сейчас с помощью ботов уже делают крутые сложные вещи с использованием нейронных сетей или машинного обучения, такие как эвристический анализ текста.
Уровень сложности

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

С чего начать

В Tелеграме ботов создает бот, привязанный к вашей учетке – крестный отец всех ботов BotFather. С его помощью можно создавать ботов, редактировать их, проводить первичные настройки бота и его поведения, выдавать и отзывать разрешения.

Шаг 1 – вербуем агента

Наш первый шаг – регистрация бота и получение уникального ID, являющегося одновременно и токеном. Открываем чат с BotFather, пишем ему /start и получаем список всех его команд.

Отправляем самую первую и главную команду – /newbot – и бот просит придумать имя нашему новому боту. Это читаемое имя, которое будет видно слева в чатике и для которого есть единственное ограничение – оно должно оканчиваться на «bot».
В случае успеха BotFather вернет нам токен бота. Это секретная строчка, которую мы бережем как зеницу ока, ведь с помощью нее наш сервер сможет нормально взаимодействовать с API бота в Телеграме.

Шаг 2 – выбираем оружие

На этом шаге мы должны решить, на чем мы будем писать своего бота. Это может быть Java, Phyton, Go, NodeJS, C++ – что угодно. Для популярных языков программирования уже есть готовые библиотеки, которые содержат все необходимые протоколы в готовом виде. Рекомендуем поискать по GitHub'у – там можно найти кучу кода по разным ботам для разных платформ. Денис для своего мастер-класса выбрал telegraf.js, один из популярных фреймворков для создания телеграм-ботов.

Шаг 3 – налаживаем обратную связь

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

Шаг 4 – первые шаги

Прописываем в коде тот самый ключ, который нам выдал BotFather, и задаем адрес веб-хука. После отладки кода мы можем вернуться в Телеграм и стартануть своего бота. В качестве тестового Денис выбрал бота-повторяшку, который умеет здороваться в ответ на любое сообщение в чате и по команде выдавать случайные картинки. Чат-бот Дениса заработал и выдал бодрое «Hello».
Ну а дальше – наращиваем скиллы

Мастер-класс продолжился более сложным примером бота для онбординга новичков в компании. Запись вебинара можно посмотреть на Ресурсном центре.

Чат-боты уже давно используются в департаменте разработки как ассистенты. Бот-классический наблюдатель сидит в Slack для ПГС. Если вы упоминаете слово «релиз», то он восклицает: «Снова релиз!», – и при необходимости легко подсчитывает, сколько в раз чате говорили о релизах.

Бот в Skype работал на типовом СМЭВе. Он помогал команде понять, какие коммиты и в рамках каких тасков выполнялись. Боту можно было передать номер таска и увидеть, какие коммиты были, в виде сортировки по модулям, или номер версии. В последнем случае бот строил div изменений по Git'у, находил таски, которые появились с предыдущей версии, и выводил список в чат. Так можно было быстро узнать, попал твой коммит в последний релиз или нет.
Понравилась статья? Голосуй!
Это провал
Интересно
Супер