Дважды начинал эту заметку ибо откровений и контента мало. Решая личную проблему переезда входящей почты с Yandex 360, оказалось, что бесплатных парковок «на западе» не имеется. Zoho как альтернатива, определенно, хорош, но 90 центов за домен в месяц для десятка доменов с сотней текстовых входящих показалось избыточным. На коленке был собран wizard, связывающий SendGrid и Telegram вместе.
Компоненты
Среди найденных почтовых сервисов, предлагающих Inbound Parse — SendInBlue, MailChimp, MailGun и SendGrid — быстрее всего получилось с SendGrid, хотя для хобби-проектов предпочитаю первый. SendInBlue предлагают весьма широкий бесплатный план до 300 емейлов в сутки и не докучают рекламой. Но вот с их Inbound не срослось. Возможно, что-то недочитал или недонастроил.
Telegram Bot API прекрасен и прост как валенок. Создать нового бота и добавить ему wеbhook — дело нескольких минут. Ранее уже имелся чат для алертов и всяких системных сообщений. Поэтому, все что было нужно — это конвертировать JSON от SendGrid в сообщение, понятное Telegram. Вложения не ожидались, поэтому их обработка была отложена навсегда.
Третий ингредиент — домен. На него SendGrid будет пересылать входящие, а Telegram — ответы на сообщения и команды от бота. Подойдет любой хост доступный публично, но за прекрасный Viaduc de Millau отдать 3 евро в зоне OVH было не жалко.
Wizard
На первом шаге мастер просит указать идентификатор чата или группы Telegram. Идентификатор в клиенте не виден, но бот любезно его сообщит по команде /i
. Наличие в чате бота проверяется перед следующим шагом.
На втором шаге мастер просит создать пять записей в DNS зоне. Четыре из них для интеграции с SendGrid, и одна для хранения идентификатора чата. Он на всякий случай шифруется. После добавления записей некоторое время придется подождать. В принципе, на этом шаге настройка закончена.
Третий шаг помогает убедиться, что все работает. Тестовое текстовое сообщение отсылается в SendGrid по API, затем парсится и отсылается на хост в контроллер, который передает его дальше в чат Telegram. Настройка Inbound Parse не выполняет фильтрацию спама, поэтому входящие должны поступать отовсюду.
Все компоненты смешаны на умирающем PHP и выложены на GitHub. Как явапоклонник, предпочитаю прототипировать в Symfony. При всех равных, MVC c Bootstrap в Symfony создается быстрее чем с Thymeleaf раза в два. Конструктивная критика приветствуется. Happy coding!
ссылка на оригинал статьи https://habr.com/ru/post/661379/
Добавить комментарий