Настройка вебхуков в ТестОпс для Telegram
В релизе ТестОпс 5.18.0 мы добавили удобную функцию — теперь можно автоматически отправлять уведомления в сторонние сервисы с помощью настраиваемых вебхуков. Больше не нужно отвлекаться, чтобы проверить, завершился ли тестовый прогон — ТестОпс сообщит вам об этом автоматически!
Через вебхуки можно отправлять уведомления о начале важных этапов тестирования (например, регресса), передавать информацию о результатах запусков в мессенджеры, оповещать о создании дефектов, передавать данные для построения аналитики и многое другое.
Вебхуки работают с множеством сторонних систем, включая мессенджеры, такие как Slack или Пачка. В этом гайде мы покажем, как настроить отправку уведомлений в Telegram.
Создание бота в Telegram
Для начала необходимо создать бота, который будет получать в Telegram сообщения из ТестОпс. Откройте Telegram и введите в поисковой строке @BotFather
:
В чате с BotFather введите команду /newbot
- это создаст нового бота. Вас попросят дать ему имя, а также имя для канала, через который вы будете общаться с ботом. После этого будет сгенерирован токен, который позволит нам выполнять команды для бота:
Сохраните этот токен в надёжном месте и не открывайте его в публичном доступе.
ID канала с сообщениями
Итак, у нас есть бот, готовый принимать сообщения; но нам необходим также ID канала, в который он будет передавать эти сообщения.
- Откройте в Telegram канал с вашим ботом - он будет доступен по адресу
t.me/имя_канала
; этот адрес можно найти в том же сообщении от BotFather, в котором вам прислали токен. - Отправьте в канале любое сообщение вашему боту - например, "Здравствуй, бот!".
- Откройте браузер и введите в поисковой строке адрес в следующем формате:
https://api.telegram.org/botваш_токен/getUpdates
Здесь замените "ваш_токен" на токен, который вы получили от "BotFather"; т.е. итоговый адрес может выглядеть так:
https://api.telegram.org/bot7962640220:AAEZ3N8xoxcA2_EvVY0vn01zStS4ZpYaQbI/getUpdates
Этот адрес - команда, которая запрашивает у сервера Telegram обновления для нашего бота. На предыдущем шаге мы отправили сообщение боту как раз для того, чтобы серверу сейчас было что ответить - без этого обновлений не было бы и мы получили бы здесь пустой отклик.
Если всё сделано правильно, отклик должен быть примерно таким:
json
{
"ok":true,
"result":[{
"update_id":91797664,
"message":{
"message_id":2,
"from":{
"id":429662949,
"is_bot":false,
"first_name":"name",
"last_name":"last_name",
"username":"user",
"language_code":"en"},
"chat":{
"id":429662949,
"first_name":"name",
"last_name":"last_name",
"username":"user",
"type":"private"
},
"date":1751890444,
"text":"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439, \u0431\u043e\u0442!"
}
}]
}
Найдите в этом отклике следующие строки:
json
"chat":{
"id":429662949,
Цифра, идущая после "id":
, и есть нужный нам ID канала - сохраните его.
Бота можно также добавлять в групповые чаты - тогда сообщения будут приходить всем участникам чата.
Настройка вебхука в ТестОпс
У нас есть работающий бот в Telegram, готовый принимать POST-запросы из ТестОпс. Осталось настроить вебхук в самом ТестОпс.
Для этого откройте проект ТестОпс, перейдите в Настройки → Вебхуки и нажмите + Вебхук.
Откроется панель редактирования вебхука. Введите название для вебхука (например, «Уведомления в Telegram»).
В поле Endpoint укажите адрес в следующем формате:
https://api.telegram.org/botваш_токен/sendMessage
Здесь "ваш_токен" - полученный от "BotFather" токен; т.е. итоговый адрес может быть таким:
https://api.telegram.org/bot7962640220:AAEZ3N8xoxcA2_EvVY0vn01zStS4ZpYaQbI/sendMessage
ТестОпс может отправлять сообщения, связанные с запусками, дефектами и тест-планами. Нажмите Триггер для нужного типа события:
Доступны следующие типы событий:
- Создание или закрытие запусков
- Создание, удаление или закрытие дефектов
- Создание или удаление тест-планов
Редактирование запроса
После выбора триггера появится поле ввода, где можно отредактировать JSON-объект, отправляемый вебхуком.
В кавычках после "text"
здесь указано сообщение, которое будет отображено в мессенджере.
В фигурных скобках в тело сообщения можно добавлять переменные (например, вместо {{launchName}}
в сообщении будет отображено имя запуска). Так команде можно сообщить, скажем, о количестве ошибок ({{failedCount}}
) или сломанных тестов ({{brokenCount}}
) в запуске.
Переменные добавляются вручную или с помощью кнопки { }:
Полный список переменных доступен на странице документации ТестОпс.
Если к POST-запросу необходимо добавить дополнительные заголовки, нажмите + Заголовок:
Редактирование запроса позволяет обеспечить корректное взаимодействие с внешними системами, а также сделать сообщение более выразительным и полезным.
Идентификатор канала Telegram
Помимо поля text
нам нужно добавить в тело запроса ещё одно обязательное поле - chat_id
; через него ТестОпс сигнализирует Telegram о том, в какой канал должно отправиться сообщение.
Вставьте в тело запроса строку следующего формата: "chat_id": "<идентификатор_канала>"
. После этого запрос может выглядеть так:
json
{
"chat_id": "429662949",
"text": "Launch {{launchName}}, {{launchUrl}}, opened by {{createdBy}} in the project {{projectName}}"
}
При необходимости к JSON-объекту можно добавлять и другие поля, например:
json
{
"chat_id": "429662949",
"user": "{{ createdBy }}",
"date": "{{ createdDate }}",
"text": "{{ launchName }} created"
}
Фильтры
Для запусков можно задать фильтры, которые будут пропускать сообщения только для определённых событий:
Фильтры можно создавать:
- для названий запусков;
- для тегов;
- для переменных окружения (например, браузер или устройство).
Это позволяет получать информацию только о важных запусках, фильтруя по ключевым словам в названиях или тегах.
В строке ввода можно объединять фильтры независимо от типа. При указании нескольких критериев одного типа, сообщение будет отправлено если выполнен хотя бы один критерий (или). При указании нескольких критериев разного типа, сообщение будет отправлено если выполнены все критерии (и).
Завершение настройки
Чтобы проверить, правильно ли настроен вебхук, нажмите кнопку Протестировать на панели триггера:
На указанный канал в Telegram будет отправлено тестовое сообщение:
Если всё работает, нажмите Создать. Теперь ТестОпс будет отправлять настроенные сообщения.