Pull to refresh

Сказ о том, как QA Engineer вебхуками себе жизнь упрощал на примере Test IT, и при чём здесь Bot Framework

Reading time5 min
Views5.6K
Ни для кого не секрет, что хорошее ПО отличается от остального не функционалом, а качеством работы заявленных функций. Ведь никому не нужно богатое на функционал ПО, если оно попросту не работает. Но как вовремя успеть рассказать разработчикам о том, что с проектом что-то не так?

Сегодня мы немного поговорим о проблемах коммуникации отделов внутри компании, а заодно на примере Test IT мы рассмотрим то, что помогло нам постичь дзен: беспристрастный, с сердцем из камня и душой из алгоритма – бот на Bot Framework. Добро пожаловать под кат!





Издавна считалось, что на войне главный инструмент – связь. Без связи невозможно координировать свои войска, узнавать новости с полей, оказывать поддержку и следить за действиями противника. А что есть разработка, если не локальная война нескольких отделов за продукт?

И если в давние времена для распространения новостей использовали посыльного, гонца, а позже – телефонную связь, то на пороге 2020 года было бы странно использовать такие технологии, особенно когда ваша армия, работающая над продуктом, может быть распределена далеко за пределами одного офиса. Вот наш QA Engineer и задался похожим вопросом.

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

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

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

В сегодняшней статье мы рассмотрим пример использования бота в Telegram для рассылки уведомлений командам разработки и тестирования от платформы Test IT.

Создаем проект и бота


Переходим на портал и создаём новый проект:

image

Проект включает в себя тест-кейсы, автотесты, чек-листы, вебхуки и многое другое.

Далее создадим тест-план. Пусть он будет иметь такое же незамысловатое название, как и имя проекта:

image

Далее можно добавлять новые тест-кейсы, но мы перейдём непосредственно к созданию нашего умного помощника. Портал не закрывайте, к нему мы ещё вернёмся для настройки вебхуков.
Разработка будет вестись на .Net Framework (ну куда же без него) с использованием Azure. Собственно, начнём мы именно с Azure.

Переходим на портал и ищем Web App Bot:

image

Нажимаем «Создать», заполняем обязательные поля и разворачиваем. В рамках статьи мы изначально развернём шаблон Echo Bot и в дальнейшем будем отталкиваться именно от него
Когда бот успешно развернулся – самое время подвязаться к своим каналам связи с ботом. На выбор разработчика представлен весьма большой список мессенджеров и вариантов коммуникации, но для наших целей хватит и Telegram.

Для этого напишем пару добрых команд боту @BotFather и создадим нового бота. Благо, с нами он общается весьма дружелюбно, помогая создать себе подобного. Bot Father создан в Telegram для управления другими ботами. Да-да, не зря его зовут отцом ботов!

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

Теперь нам необходимо загрузить исходный код бота, чтобы мы могли работать с ним непосредственно в нашей IDE:

image

Тут же можем получить и эмулятор для локальной отладки. Если ваш бот будет иметь логику чуть сложнее, чем вывод «Hello world» – лучше обзавестись средствами для отладки и тестирования вашего нового члена команды.

Непосредственно на портале нам осталось только открыть нашего нового бота, перейти во вкладку «Каналы», добавить канал Telegram и отдать ему ключ, любезно оставленный отцом ботов. Также, дабы предотвратить падение бота при долгом отсутствии активности, желательно перейти к службе приложений (имя аналогично названию нашего бота на портале) -> конфигурация -> общие параметры и в графе «Всегда включено» выбрать статус «Включен». В противном случае ваш бот может уснуть, а на его запуск требуется драгоценное время конечных пользователей.

image

Также, раз мы ещё на портале Azure, развернём небольшую БД для этого бота. Пригодится, чтобы хранить список индексов групп и их секретные ключи. Подробнее о разворачивании БД можно почитать тут.

Итак, если при обращении к нашему боту в Telegram он возвращает наше сообщение – значит мы всё сделали верно и вкладку с Azure можно отложить до лучших времён. Теперь можно заняться проработкой логики работы нашего помощника.

Вправляем мозги боту



image

Для тех, кто имел опыт работы с ASP.NET Core, далее ничего нового не будет. Остальным же оставим краткий мануал о том, что делать далее:

  • Научить приложение работать с Entity Framework и подвязать БД. Необходимо для того, чтобы бот мог хранить связи ChatID, статус игнорирования чата и «secretKeyBot» входящих сущностей в базе данных. Это позволит использовать бота не только в рамках данного проекта и компании в целом, но и свободно добавлять его в группы всем желающим;
  • Добавить модель данных и контроллер API. В нашем приложении должна быть какая-то внешняя точка входа, через которую можно обратиться к боту и передать тело запроса. Модель данных и есть представление тела запроса, а контроллер должен отработать при внешнем вызове;
  • Написать круды и сервис команд. Если с крудами всё ясно, то сервис команд – наша бизнес-логика по обработке сообщений чата. Изначально мы хотели получить возможность заглушить уведомления от бота в каком-либо конкретном чате. Один из вариантов сделать это – непосредственно командой в чате, которую бот должен обработать и запомнить только для этого чата.
  • Протестировать бота в локальной среде при помощи эмулятора. Особо матёрые ребята могут выгрузить бота сразу на Azure и смотреть за его поведением через чат в Telegram, но в этом случае бот не вернёт вам подробное описание ошибок. Да и точки останова (излюбленный инструмент дебагинга) не расставишь. К слову, небольшая особенность Bot Framework в том, что он очень не любит возвращать детальное описание ошибки. Так что разрабатываем осторожно и коммитимся почаще!
  • Опубликовать на Azure. Среди папок проекта можно отыскать одну с незамысловатым названием «PostDeployScripts». Она содержит в себе один важный для нас файл с расширением .PublishSettings. Данные о подключении к хранилищу бота на Azure лежат именно там. А для тех, кто использует Visual Studio, этот файл и есть священный ключ для публикации проекта: импортируйте его при публикации, и IDE подтянет все необходимые данные из него.


Добавляем вебхук


Собственно, бот создан. Самое время прокинуть вебхук с портала TestIT. Радуемся, что не закрыли вкладку в браузере, и переходим туда:

image

Заходим в настройки проекта, вкладка «Вебхуки» и добавляем новый:

image

Теперь попробуем изменить статус тест-плана и посмотрим, как бот отреагирует.

image

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

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

Важно понимать, что возможности бота почти безграничны: он способен обрабатывать любые запросы с внешней стороны. А это значит, что его можно научить многому: фильтрация сообщений в чате, уведомления о тимбилдинге, мини-игры в свободное от работы время. Если постараться и проявить немного фантазии, то можно научить его заказывать пиццу, строить рабочий календарь, распознавать документы или даже переправлять ваши входящие email-сообщения в мессенджеры.
Tags:
Hubs:
Total votes 3: ↑3 and ↓0+3
Comments0

Articles