Сбер AIJ 11.12.24
Сбер AIJ 11.12.24
Сбер AIJ 11.12.24

Пишем бота для Slack за 1,5 минуты: опыт команды Tproger

Аватар Тарас Сереванн
Отредактировано

32К открытий33К показов
Пишем бота для Slack за 1,5 минуты: опыт команды Tproger

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

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

История о том, как наши редакторы знают C++ лучше, чем русский

Именно такую интеграцию мы решили написать для своего сайта. Мы уже сделали плагин, который в случае нахождения ошибки позволяет выделить мышью в статье нужный фрагмент текста и отправить его нам на проверку простым нажатием Ctrl+Enter. Теперь нам захотелось, чтобы уведомления приходили не только на почту авторам, но и в наш #content чат в «Слаке» — это бы значительно ускорило скорость реагирования.

Программерский алкоголизм — не баг, а фича

Первым делом мы попили пива зашли на сайт Slack Api и попили пива узнали, что боты делятся на 3 типа:

  1. Входящие хуки, позволяющие присылать сообщения в публичный чат.
  2. Исходящие хуки, позволяющие отправлять HTTP-запросы специальными командами из чата.
  3. Настоящие боты, позволяющие делать и первое, и второе, а также читать чаты в реал-тайме.  

Так как нам нужно отправлять уведомления в #content, но при этом мощь третьего способа нам ни к чему, то решено было остановиться на первом способе: входящих хуках.

Загадочная история Хукка Баттона

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

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

Пример:

			{
   "username": "ghost-bot",
   "icon_emoji": ":ghost:",
   "text": "BOO!"
}
		

В результате мы получим следующее сообщение:

Пишем бота для Slack за 1,5 минуты: опыт команды Tproger 1

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

Пишем бота для Slack за 1,5 минуты: опыт команды Tproger 2

Честно говоря, ничего загадочного тут даже нет — всё как надо.

Властелин tproger: возвращение jQuery

Теперь пришло время наконец-то заняться непосредственно интеграцией. Мы решили, что лучше всего будет забыть о бэкэнде с PHP и реализовать это на «фронте», на любимом JavaScript.

Пишем бота для Slack за 1,5 минуты: опыт команды Tproger 3

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

			$.post('https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX', {
        payload: JSON.stringify({
            username: 'Внимательный Читатель',
            icon_emoji: ':information_desk_person:',
            text: 'Упс, кажется, я нашла ужасную ошибку в слове "' + data.word + '".\nСкорее проверьте эту статью: ' + window.location
        })
});
		

… и получим потрясающий результат:

Пишем бота для Slack за 1,5 минуты: опыт команды Tproger 4

— который сэкономит нам кучу времени и сил.

А если вы тоже работаете в Slack и напишете бота для автоматизации рутины — то и вам тоже. ?

Следите за новыми постами
Следите за новыми постами по любимым темам
32К открытий33К показов