Это 3-я часть серии, в которой мы сами создаем потрясающее приложение.

В части 1 и части 2 мы успешно настроили наше приложение Slack, написали код отправки сообщения через Slack API, используя node.js, отправили его на GitHub через Git и запустили приложение с сервера Heroku🥳.

В этой части вы:

  1. Установите пакет cron npm
  2. Используя инструмент создания сообщений Slack, настройте формат сообщения для отправки через API.
  3. Настройте учетную запись AWS и создайте новую корзину для хранения изображений.

Начнем со времени нашего сообщения

В настоящее время наша команда запускается после загрузки кода на сервер. Что мы хотели бы сделать, так это настроить функцию на запуск раз в неделю во вторник, в 11:30, и отправить сообщение. Для этого нам понадобится что-то, что называется «задание cron». Cron — это инструмент, который позволяет выполнять что-то по расписанию. У него причудливый синтаксис, так что будьте готовы :)

Во-первых, нам нужно добавить npm-пакет node.js, который позволит нам использовать функциональность cron в нашем коде. Для этого нам нужно сделать следующее:

(4 шага)

  1. Установите пакет, используя следующую команду в терминале VSCode.

npm install cron

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

2. Теперь давайте включим эту функциональность в наш код, добавив следующую строку в начало нашего кода и сохранив файл:

//Requere the Cron package
var CronJob = require('cron').CronJob;

Обратите внимание, что поскольку мы установили пакет cron, он изменил код в этих файлах, чтобы указать на добавление зависимостей в наш код.

3. Теперь мы будем использовать функциональность cron, обернув наш код следующим образом:

var job = new CronJob('* * * * *', function() {
 //OUR CODE FOR SENDING A MESSAGE
});
job.start();

Теперь давайте сохраним наш файл, а затем зафиксируем и запушим наш проект на GitHub (если вы забыли, как это сделать, см. предыдущую часть).

Проверьте журналы Heroku и Slack.

Вы заметите, что получаете сообщение Slack каждую минуту.

И это из-за причудливого синтаксиса нашей настройки задания cron:

4. Над здесь вы можете увидеть спецификацию, как правильно настроить тайминг с помощью синтаксиса. В нашем случае, если мы хотим отправлять сообщение раз в неделю, во вторник в 11:30, синтаксис должен выглядеть следующим образом:

Итак, наш код будет выглядеть так

var job = new CronJob('30 11 * * TUE', function() {
//OUR CODE FOR SENDING A MESSAGE
});
job.start();

Скорее всего, к тому времени, как вы пришли сюда, не прошло и нескольких минут до 11:30 вторника. Итак, что мы должны сделать, так это установить время на 5 минут, запустить его и посмотреть, работает ли время. Предположим, что сегодня пятница, а время 00:55. Мы внесем следующие изменения в наш файл app.js в VSCode (время и другое сообщение для отслеживания изменений), сохраним его, зафиксируем и отправим на наш сервер (щелкнув галочку в правом верхнем углу, добавив «Cron » в качестве комментария, в меню выберите «Push to» и выберите наш репозиторий)

Примечание. Часовой пояс вашего сервера на Heroku, вероятно, отличается от вашего часового пояса, вы можете увидеть время вашего сервера в журналах. Вероятно, это UTC. Поэтому при добавлении 5 минут к текущему времени также добавьте разницу в часовом поясе. У меня есть разница в 3 часа со временем моего сервера, поэтому я установил задание cron на 10:00.

Сохраните файл, а затем зафиксируйте и запушите наш проект на GitHub (если вы забыли, как это сделать, см. предыдущую часть).

А теперь мы ждем…

Успех!

Итак, что мы на самом деле сделали? 🤔

Мы настроили процесс (приложение node.js) на сервере (Heroku), который выполняет функцию отправки сообщений (вызов API) раз в неделю (задание cron).

И это УДИВИТЕЛЬНО!🥳

Теперь давайте создадим причудливый стиль сообщения, используя параметры Slack API.

Проверьте этот инструмент для создания сообщений от Slack. Вы можете начать заново, удалив контент и добавив 2 блока Раздел/mrkdwn и 1 блок Изображение/заголовок.

Теперь обратите внимание на код, созданный справа. Это код, который нам нужно добавить, если мы хотим, чтобы сообщение было оформлено так, как оно показано в предварительном просмотре сообщения.

По сути, мы видим, что под «блоками» есть массив, состоящий из 3 элементов (2 для текста уценки, а другой для изображения). Каждый элемент имеет несколько параметров (например, «тип»).

Отрегулируйте правую сторону следующим образом.

Обратите внимание, что 2 звездочки, которые мы добавили к нашему тексту здесь, сделали текст жирным. Это уникальное поведение платформы Slack, когда тип блока — «mrkdwn».

Вы можете протестировать стиль сообщения, отправив его себе с помощью этой кнопки и выбрав свой собственный канал во всплывающем окне.

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

Хорошо, все выглядит хорошо, и теперь мы можем добавить этот фрагмент кода в наш собственный код и протестировать его.

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

(3 шага)

  1. Скопируйте весь правый код из Block Kit Builder без фигурных скобок ({}) в начале и в конце кода:

2. Добавляем запятую в конце строки 18 в нашем коде, делаем новую строку и вставляем скопированный код

3. Чтобы протестировать наш код, давайте изменим настройки задания cron на сегодняшний день недели, через 5 минут в часовом поясе UTC (в моем случае это вторник, 13:50). Сохраните, зафиксируйте и нажмите, чтобы увидеть его в нашем Slack.

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

Это удивительно!

Пришло время сделать содержимое нашего сообщения динамичным

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

Наша логика будет:

  • Раз в неделю проверяйте базу данных на наличие последней шутки для отправки
  • Получить содержимое из базы данных для последней шутки
  • Отправить шутку в Slack
  • Обновите следующую шутку в базе данных, чтобы она была самой последней для отправки

Предположим, вы уже собрали список шуток и изображений, соответствующих им.

Наши изображения отправятся в AWS S3 — сервис хранения изображений Amazon — Давайте настроим его

(7 шагов)

  1. Перейдите на веб-сайт AWS, чтобы настроить учетную запись.

2. Войдите в систему как пользователь root

3. Нажмите «Службы» и выберите «S3» в разделе «Хранилище».

4. Теперь создадим публичный «Ведро». Что похоже на общую папку. Нам нужно место для хранения наших изображений, а затем получить общедоступную ссылку на них, чтобы мы могли добавлять их в наши сообщения в Slack.

5. Время загрузить наши изображения (мы будем использовать 3 изображения, соответствующие 3 шуткам — для простоты)

6. Теперь давайте отметим все загруженные файлы и сделаем их общедоступными.

7. Поздравляем! Теперь вы можете получить общедоступную ссылку на каждый файл в своей корзине, выбрав файл и нажав «Копировать URL». Мы будем использовать его для настройки наших сообщений в MongoDB.

Подводя итог этой части до сих пор

  • Мы установили задание cron для запуска нашего приложения раз в неделю и отправки сообщения в Slack.
  • Затем мы добавили стиль к нашему сообщению.
  • Наконец, отобранные нами вручную изображения для шуток теперь хранятся на сервере AWS S3.

В следующей части вы:

  1. Откройте новую учетную запись в Mongo DB
  2. Создайте новую базу данных и коллекцию для хранения сообщений в ней.
  3. Установите пакет npm Mongo DB
  4. Хранить учетные данные в переменных конфигурации на сервере (избегая жестко заданных учетных данных)
  5. Получите сообщение «следующее» из базы данных Mongo и отправьте его с помощью нашего приложения.
  6. После успешной отправки отметьте сообщение как отправленное в базе данных Mongo и установите сообщение «следующее».

Перейдем к части 4››