CoderCastrov logo
CoderCastrov
Парсер

Использование Slack для обновлений.

Использование Slack для обновлений.
просмотров
4 мин чтение
#Парсер

Не так давно я писал о том, как перевести получение сообщений в Slack на махание поведением Манэки-нэко.

В этой истории я хочу рассказать о Slack и о том, как его использовать, чтобы быть в курсе последних обновлений. Но сначала немного контекста. Рядом с моим местом работы есть небольшое кафе, которое каждый день предлагает новые блюда. Каждый рабочий день около полудня у нас возникает один и тот же вопрос: Что мы будем есть на обед? Большинство моих коллег интересуются ежедневно меняющейся едой и сразу начинают просматривать веб-сайт кафе, чтобы узнать блюдо дня.

Я задал себе вопрос, почему мы все начинаем просматривать вместо того, чтобы получить эту информацию без каких-либо действий? Поскольку мы все равно находимся в Интернете, я подумал, что было бы здорово получать уведомление с нужной информацией.

Итак, давайте создадим канал в Slack с установленным настраиваемым приложением Slack и убедимся, что получаем нужную информацию в нужное время.


Для этого я создал небольшое приложение на основе Node.js, включающее в себя Slack Web-API и puppeteer.js.

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

Необходимо установить разрешения и области.

Совет: Убедитесь, что вы интегрируете свое приложение в общедоступный канал, чтобы все в команде могли присоединиться.


Начнем с нуля! Сначала мне нужно импортировать все модули и объявить некоторые переменные. Как видите, я также импортировал модуль dotenv и присвоил его переменной с именем dotenv. Затем я вызвал функцию config(). Эта функция загружает все, что находится в файле с именем .env, в переменную среды. При работе с ключами API или конфиденциальной информацией это всегда лучший способ!

Прежде чем отправить сообщение в канал Slack, нам нужно убедиться, что мы получаем нужную информацию. В моем случае это просто URL изображения. Поэтому я написал функцию, включающую puppeteer.js.

Совет:_ Puppeteer - это безголовый браузер, очень полезный. С его помощью можно делать много полезных вещей. Он даже может делать снимки экрана с веб-сайта, что очень удобно._

Поскольку я пишу асинхронную функцию и ожидаю получить промис в качестве результата, здесь мы должны использовать ключевое слово await. Просто потому, что JavaScript ждет, пока этот промис завершится и вернет свой результат. Кроме того, нам нужно подождать, пока не завершатся несколько других вещей.

Также важно обрабатывать ошибки. Для этого я использовал конструкцию try/catch. Если все получается, функция возвращает URL изображения в виде строки. В противном случае возникнет ошибка.

Прежде чем продолжить, нам нужно отредактировать файл .env. Мы должны установить наш токен аутентификации и определить наш канал Slack.

Совет:_ Вы можете найти свой токен аутентификации в настройках вашего настраиваемого приложения Slack. Откройте Slack в браузере, чтобы найти идентификатор вашего канала Slack. Он должен появиться в строке браузера._

Теперь пришло время более детально рассмотреть процесс отправки сообщения. Для этого мы будем использовать метод "chat.postMessage", чтобы отправить сообщение в канал. После успешной отправки он возвращает отметку времени. Она поможет нам позже.

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

Чтобы удалить определенное сообщение в канале Slack, нам нужна соответствующая отметка времени. Как я уже сказал, ранее полученная отметка времени поможет нам позже. И время наступило! Так что единственное, что нам нужно передать методу "chat.delete", это точная отметка времени сообщения, которое мы хотим удалить.

Процесс отправки и удаления.

Оказалось, что в этом небольшом кафе всегда публикуется изображение блюда дня около 11:30 утра. Поэтому я настроил cron-задание, которое выполняет основной скрипт каждый рабочий день. Кроме того, я настоятельно рекомендую вам внимательно изучить PM2. Это удобный менеджер процессов-демонов, который поможет вам управлять вашими приложениями.

pm2 start index.js — cron “30 11 * * MON-FRI”

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

Итак, большое спасибо за чтение! Я с удовольствием выслушаю ваши мысли в комментариях.

Будьте в курсе ✌


tmjns/Nasch-Bot

Это приложение записывает и удаляет последний URL изображения меню с 'https://cafenasch.de' в предопределенный канал Slack. Запустите...

Ссылка на GitHub

Ссылки:

https://api.slack.com/appshttps://www.npmjs.com/package/@slack/web-apihttps://api.slack.com/methods/chat.postMessagehttps://api.slack.com/methods/chat.deletehttps://pptr.dev/https://www.npmjs.com/package/dotenvhttps://medium.com/@thejasonfile/using-dotenv-package-to-create-environment-variables-33da4ac4ea8fhttps://pm2.keymetrics.io/