На нашем факультете было принято отправлять лекционные материалы и некоторые общие объявления для студентов на так называемую почту потока. Преподавателям очень удобно: написав на один адрес, они сразу же доставляют информацию огромному количеству людей. А вот когда огромное количество этих самых людей пытаются зайти на почтовый сервис для того, чтобы забрать корреспонденцию, начинаются трудности.
Таким образом, наш бедненький Gmail начал часто падать и закрывать доступ к авторизации. Однако, всем по-прежнему хотелось получать информацию вовремя, ведь иногда на лекции бывает трудно записать все термины, о которых говорит преподаватель. Для уверенности в том, что студенты смогут повторить полученный материал, наставники пересылают лекции студентам простым для них способом. В конце семестра на этой самой почте потока также появляются экзаменационные вопросы.
С первых дней обучения мне понравилось, что никто и никогда не идет против применения информационных технологий в любой сфере жизни на факультете, поэтому нам с однокурсником с легкостью удалось запустить автоматизацию этого процесса.
Преподаватели продолжают отправлять информацию на обычную почту - на этом этапе не изменилось ровным счетом ничего. Но вот после того, как письмо попадает в Gmail, почтовый сервис автоматически пересылает письма на специальный адрес, который предоставляет сервис Trello (именно там было решено структурировано хранить всю получаемую информацию).
Переcылка в Gmail добавляется в настройках на вкладке “Пересылка и POP/IMAP”. Специальный адрес электронной почты, который “слушает” Trello и переделывает письма в карточки на доске, можно получить после нажатия на кнопку “Menu”, далее “Next” , затем “Email Settings”.
Информацию собрали, осталось грамотно уведомить поток о данном сервисе. Уже на этом этапе можно отправить ссылку на доску в Trello, ребята могут поставить мобильное приложение и получать уведомления. Но большинство из нас являются активными пользователями мессенджера Telegram, и поэтому мы решили также сделать специальный канал, куда бот будет отправлять все обновления.
Автоматизацию с телеграмом настраивать уже немного сложнее.
После создания Telegram-канала мы поняли, что в этот канал сторонние боты писать не могут. Таким образом, бот IFTTT нам помочь не смог, а сам сервис все-таки сыграл свою важную роль. Здесь мы настроили Applet (в сервисе IFTTT) под названием “If any new email in inbox for …@gmail.com, then make a web request”, который после получения новых писем делает запрос на Telegram Bot API, которое в свою очередь публикует сообщение в канал с помощью бота.
Для начала нужно зарегистрировать бота, чтобы получить его токен. Делается это с помощью специального служебного бота @BotFather.
Запрос к Bot API выглядит так:
- URL:
https://api.telegram.org/botBOTTOKEN/sendMessage?chat_id=CHAT_ID&parse_mode=markdown
- Method:
POST
- Content-type:
application/json
- Body:
1
2
3
4
5
6
7{
"chat_id":"CHAT_ID",
"parse_mode": "markdown",
"text":"*{{Subject}}* от {{FromAddress}} \n
{{FirstAttachmentPublicURL}} \n
Полная версия на доске https://trello.com/..."
}
Используемые сокращения:
BOTTOKEN
- токен созданного нами на предыдущем шаге ботаCHAT_ID
- ID чата, в который надо публиковать сообщения (после добавления бота в этот чат, ID чата можно будет увидеть, открыв следующую ссылкуhttps://api.telegram.org/botBOTОКЕN/getUpdates
)- Вместо переменных подставляются соответствующие поля из электронного письма
trello.com/…
- ссылка на нашу доску, для того, чтобы можно было прочесть полную версию письма или ознакомиться с другими документами
Иногда бывает так, что старосты групп (только они имеют доступ на редактирование доски) добавляют информацию на доску вручную. Для того, чтобы эта информация тоже попадала в телеграм, был настроен еще один IFTTT-Applet “If card added to the board in Trello make a web request” со следующими параметрами:
- URL, Method, Content-type такие же, как и в предыдущем шаге.
- Body:
1
2
3
4
5
6
7{
"chat_id":"-1001082774373",
"parse_mode": "markdown",
"text":"<<<*{{Title}}*>>> в списке {{ListName}} \n
{{Description}} \n
<<<[Посмотреть полностью]({{CardURL}})>>>"
}
Опять-таки, вместо переменных подставляются данные из добавленной карточки из Trello.
В результате, в канале появлялись сообщения следующего вида:
После выполнения вышеуказанных настроек, происходило тестирование, длившееся достаточно долго. Так как в IFTTT обрабатывается очень много событий, наши запросы иногда выполнялись моментально, иногда около часа, а иногда (крайне редко, конечно) вообще не выполнялись.
Спасибо Андрею Романову за помощь в организации и тестировании данной затеи. В целом, студенты и старосты были довольны нашим трудом. Хочется отметить, что всё, что описано выше, не требует вложений (Trello, IFTTT, Telegram - бесплатные) и написания кода (все работает через связки API этих сервисов). Однако, если вы захотите что-то улучшить в данной автоматизации, то вам все-таки придется написать своего бота, который будет обрабатывать вебхуки от других API.