Slack — отличный способ научиться работать с серверными «бессерверными» приложениями, управляемыми событиями. Когда вы работаете с Serverless, вы платите только за количество событий, которые необходимо обрабатывать каждую секунду через ваше приложение, а не за то, чтобы сервер работал и ждал этих событий.

Хотя Lolo работает немного иначе, она придерживается этой концепции, поэтому, пока вам не нужно обрабатывать более нескольких тысяч событий в секунду, вы вообще ничего не будете платить. Это невероятно рентабельно.

Мы создадим обратный вызов HTTP, который будет действовать как наш веб-перехватчик и будет запускаться Slack с помощью их Slash-команд. Идея состоит в том, чтобы вы работали над чем-то более сложным, но это дает вам представление о том, насколько это просто. Мы будем играть в пинг-понг. Посмотрите на наш рабочий процесс ниже.

Кратко объясним наш рабочий процесс Lolo.

  1. Сначала мы добавляем триггер HTTP в палитру меню, который будет действовать как наш веб-перехватчик.
  2. Затем мы отправим ответ с кодом состояния 200 в узле Response. Это нужно для того, чтобы мы быстро отправили подтверждение обратно в Slack.
  3. Наконец, мы отправим почтовый запрос HTTP с response_url, который мы извлекли из полученной нами полезной нагрузки.

В результате команда /ping в Slack ответит pong.

Вам понадобится доступ администратора к рабочему пространству Slack, чтобы иметь возможность настроить приложение Slack, а затем бесплатную учетную запись Lolo.

Настройка приложения Lolo и вебхука

Нам понадобится URL-адрес запроса для Slack, чтобы Slack мог отправить нам событие, когда кто-то использует команду /ping. Поэтому сначала настроим наше приложение Лоло.

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

Мы установим это как запрос POST и конечную точку как /slack на вкладке Параметры. Вы также можете переименовать узел в Slack Webhook, но это необязательно. Скопируйте внешний URL-адрес, который был установлен для вас после того, как вы установили путь.

Теперь мы настроили наш триггер, который будет запускать это приложение. Вы можете сохранить свое приложение, но пока не нужно его запускать.

Настройка вашего приложения Slack

Настройте новое приложение через api.slack.com. Вы можете называть это как хотите. Вам потребуется доступ администратора к рабочему пространству Slack, для которого вы хотите его установить.

Создав приложение, перейдите в раздел Команды косой черты, где вы настроите новую команду. Используйте свой URL-адрес, который вы только что скопировали из своего приложения Lolo.

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

Ответ на HTTP-вызов

Команды Slack будут ожидать ответа в течение 3 секунд, поэтому первое, что нужно сделать, это отправить ответ с кодом состояния 200 в приложении Lolo, когда HTTP-вызов сделан на ваш URL-адрес.

Slack отправит нам данные с объектом полезной нагрузки, который мы можем использовать для ответа. То есть мы не отвечаем напрямую на команду косой черты, мы только извлекаем response_url, чтобы мы могли отправить ответ на сообщение позже через запрос POST. Это также позволяет вам выполнить дополнительную обработку перед ответом.

Начните с создания новой функции в вашем приложении Lolo и добавьте приведенный ниже код в ее обработчик.

Направляя данные полезной нагрузки Slack в следующую функцию, как мы это делаем с route(ev.body), мы можем извлечь response_url в следующем узле/функции. Это Slack-приложение делает только две вещи, поэтому нам не нужно много извлекать здесь из полезной нагрузки, но когда вы создаете более богатые Slack-приложения, вы захотите извлечь больше информации о команде, а не только response_url, поэтому мы будем маршрутизация всей полезной нагрузки.

Не забудьте также связать триггер HTTP с созданной вами новой функцией. Узлы должны быть подключены, чтобы код мог работать в exports.handler.

Сохраните и запустите ваше приложение.

Если вы установили приложение в свое рабочее пространство Slack, теперь вы можете протестировать команду, которую вы настроили в Slack. Это ничего не даст вам взамен, но пока это не выдаст вам ошибку, вы знаете, что это работает.

Отправить ответ в Slack

Последнее, что нам нужно сделать, это использовать этот response_url для отправки обратно HTTP-запроса POST в Slack с нашим ответом на команду. Итак, мы можем увидеть ответ pong на команду /ping.

Создайте еще одну новую функцию в своем графике Lolo и добавьте приведенный ниже код.

Нам также нужно добавить [email protected] в качестве зависимости, чтобы иметь возможность использовать его в нашем коде. Перейдите к Модулям в разделе Настройки приложения в Lolo и просто добавьте его туда. Он будет установлен, когда вы сохраните и запустите свое приложение.

Подводя итог, если вы добавили новую функцию, добавили код выше в ее обработчик, добавили [email protected] в свои модули и подключили все свои узлы, вы можете Сохранить и снова Запустите приложение.

Имейте в виду, что развертывание может занять до одной минуты, так как мы установили зависимости. Найдите в журналах Прослушивание порта 4000, чтобы убедиться, что он успешно развернут. Вы можете переключать вкладки туда и обратно, мы все это делаем.

Протестируйте свое приложение Slack

Откройте Slack, а затем повторите команду косой черты. Я настроил /ping, и мой ответ будет pong. Посмотрите, как это выглядит ниже.

Отсюда вы можете добавлять к нему действия Slack в своих сообщениях, а затем извлекать значения из события полезной нагрузки, когда пользователь взаимодействует с ним. Обратитесь к конструктору Slack Block Kit, чтобы получить помощь в создании slack-сообщений.

Видеоруководство по ютубу

Если вы предпочитаете следовать видеоруководству, посмотрите видео ниже.

❤️ Лоло