Разработка

Интеграция Nodul с Gmail для отправки сообщений

Олег Заньков

August 10, 2023

Часто требуется в результате каких-то событий или ситуаций нужно настроить рассылку уведомлений, например на почту. Тут мы настроем сценарий который позволит это сделать отправкой email сообщения с помощью Gmail, с использованием Webhook.

Сначала получим токен авторизации для Google

  • Переходим на нашу статью как получить Google токен в Developer OAuth 2.0 Playground (ссылка)

Настроим сценарий в Nodul

  • Переходим на страницу сервиса Nodul
  • Создаём новый проект
Нажать "Добавить сценарий" чтобы создать новый


  • Создаём компонент "Webhook", копируем себе его адрес тоже в блокнот
  • Создадим компонент "JavaScript"
  • Скопируйте javascript код с этой странички
const fromAdress = "[email protected]"; // С какого адреса отправлять, от кого(не забудьте поменять на свой)
const messageTarget = data["{{1.body.target}}"]; // На какой адреса отправлять, кому(не забудьте поменять на свою значение)
const messageTitle = data["{{1.body.title}}"]; // Заголовок сообщения(не забудьте поменять на свою значение)
const messageText = data["{{1.body.message}}"]; // Текст сообщения(не забудьте поменять на свою значение)
const token = data["{{1.body.token}}"] // Токен авторизации(не забудьте поменять на свою значение)
// Шифрование всей необходимой информации в base64 с заменой на безопасные символы
const resultEncodeString = btoa(
  `From: ${fromAdress}\r\n` +
  `To: ${messageTarget}\r\n` +
  `Subject: ${messageTitle}\r\n\r\n` +
  `${messageText}`
).replace(`/\+/g`, '-').replace(`/\//g`, '_').replace(`/=+$/`, '');

return {
	fromAdress,
	token,
	resultEncodeString
}
  • Сохраняем всю информацию в узле
  • Запустите любой rest клиент(Postman, Insomnia), можете сделать в браузере но тогда нужно передавать информацию в query параметрах
  • Импортируйте в него код ниже и измените значения у параметров на свои
curl --request POST \
  --url '[адресс вашего webhook]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data target='[адресс кому отправляем сообщение]' \
  --data 'title=Hello World![заголовок вашего сообщения]' \
  --data 'message=I use Nodul to send this message from Gmail![текст вашего сообщения]' \
  --data token='[ваш токен который вы получили]'
  • Запустите проект
  • Вызвать Webhook с помощью вашего rest клиента
  • Откройте снова компонент "JavaScript"
  • Поменяйте значения на свои с помощью бокового меню Nodul, в комментариях к коду написано что нужно поменять(обычно просто текст в квадратных скобках), после комментарии можно удалить
Выбор своих параметров из бокового меню после запроса
  • Сохраняем изменения в узле
  • Следующим создаём компонент "HttpRequest"
Создание узла HTTP request


  • В endpoint адресе вставляем передаваемый адрес нашего Gmail
https://gmail.googleapis.com/gmail/v1/users/[выбрать в боковом меню Nodul fromAdress из JS]/messages/send
  • Метод выбираем "Post"
  • Тело "raw"
{raw:"[выбрать в боковом меню Nodul resultEncodeString из JS]"}
  • "Заголовки"

Accept: application/json
Content-Type: application/json
Authorization: Bearer [выбрать в боковом меню Nodul token из JS]
  • Можете импортировать готовый с помощью "Создать из примера (CURL)"

curl --request POST \
  --url 'https://gmail.googleapis.com/gmail/v1/users/YOUR_EMAIL/messages/send' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer TOKEN_HERE' \
  --header 'Content-Type: text/plain' \
  --data '{raw: "ENCODE_STRING"}'
  • Нажимаем "Сохранить"
  • Для проверки воспользоваться любым сервисом temp mail [ссылка]
  • Скопировать сгенерированный email адрес
Копирование адреса почты для отправки на неё сообщения
  • Вставить его в поле target у параметра в rest client, если делали через обычный get то поменять аналогичный query параметр
  • Вызываем запрос
Вызов запроса к webhook
  • Идём проверяем ящик почтовый
  • Надеюсь вам пришло ваше сообщение;)

Полезные ссылки:

Основные

Информация

Другие статьи