Пишем бота для Slack за 1,5 минуты: опыт команды Tproger
32К открытий33К показов
Slack — отличный способ коммуникации внутри команды, на него уже перешли многие редакции рунета, а теперь настал и наш черед. Он позволяет как удобно вести деловую переписку, так и обсуждать, кто как танцевал с бубном прошлой ночью.
В общем, не мессенджер, а чудо. А одно из его главных преимуществ — интеграция. Всего в пару кликов вы можете, например, добавить бота, который будет пересылать в соответствующий чат изменения в Jira или Git и при этом экономить вам кучу времени.
История о том, как наши редакторы знают C++ лучше, чем русский
Именно такую интеграцию мы решили написать для своего сайта. Мы уже сделали плагин, который в случае нахождения ошибки позволяет выделить мышью в статье нужный фрагмент текста и отправить его нам на проверку простым нажатием Ctrl+Enter. Теперь нам захотелось, чтобы уведомления приходили не только на почту авторам, но и в наш #content чат в «Слаке» — это бы значительно ускорило скорость реагирования.
Программерский алкоголизм — не баг, а фича
Первым делом мы попили пива зашли на сайт Slack Api и попили пива узнали, что боты делятся на 3 типа:
- Входящие хуки, позволяющие присылать сообщения в публичный чат.
- Исходящие хуки, позволяющие отправлять HTTP-запросы специальными командами из чата.
- Настоящие боты, позволяющие делать и первое, и второе, а также читать чаты в реал-тайме.
Так как нам нужно отправлять уведомления в #content, но при этом мощь третьего способа нам ни к чему, то решено было остановиться на первом способе: входящих хуках.
Загадочная история Хукка Баттона
Входящий хук — это, по сути, самый обычный HTTP-запрос, содержащий данные в формате JSON, но отправленный на специальный адрес, имеющий примерно такой вид:
В качестве данных вам нужно передать простой список параметров: форматирование текста, аватарка, имя бота, канал, куда нужно отправить сообщение и так далее. В общем, все просто и с минимумом глупых ограничений — мечта любого программиста.
Пример:
В результате мы получим следующее сообщение:
Как видим, в качестве аватарки нам нужно использовать одну из сотен доступных Emoji: тяжело представить, для какой ситуации может понадобиться что-то кастомное. А если немного поиграть с параметрами, то можно вставить в текст ссылку на другой чат или жирное выделение:
Честно говоря, ничего загадочного тут даже нет — всё как надо.
Властелин tproger: возвращение jQuery
Теперь пришло время наконец-то заняться непосредственно интеграцией. Мы решили, что лучше всего будет забыть о бэкэнде с PHP и реализовать это на «фронте», на любимом JavaScript.
В общем, здесь всё настолько просто, насколько это вообще может быть. Просто напишем AJAX-запрос, передающий заранее заготовленные данные…
… и получим потрясающий результат:
— который сэкономит нам кучу времени и сил.
А если вы тоже работаете в Slack и напишете бота для автоматизации рутины — то и вам тоже. ?
32К открытий33К показов