Создание телеграм бота с гугл авторизацией, обратными вызовами и уведомлениями об обновлении через сервер-маршрутизатор
Статья детально рассказывает обо всех аспектах настройки телеграм бота, работающего через сервер-маршрутизатор посредством обратных вызовов.
Приведены примеры работы отправки/исправления сообщений, отправки файлов, работы с внутренними и встроенными запросами.
Создание клавиатуры. Авторизация пользователей через gmail.
- Описание
- Подробнее
Описание
TELEGRAM INLINE WEBHOOK BOT
ОГЛАВЛЕНИЕ
- ВМЕСТО ПРЕДИСЛОВИЯ
- 1С REST СЕРВЕР
- НАСТРОЙКА ПРОКСИ СЕРВЕРА
- ТЕЛЕГРАМ БОТ
- OAUTH2, GOOGLE ПРИЛОЖЕНИЕ
- АРХИТЕКТУРА API
- ПОЛУЧЕНИЕ СООБЩЕНИЙ
- ОТПРАВКА СООБЩЕНИЙ
- ОТРИСОВКА КЛАВИАТУРЫ
- РЕАЛИЗАЦИЯ АВТОРИЗАЦИИ
- ОТПРАВКА ФАЙЛОВ
- ИСПРАВЛЕНИЕ СООБЩЕНИЙ
- ОБРАТНЫЕ ЗАПРОСЫ
- ВСТРОЕННЫЕ ЗАПРОСЫ
ЧАСТЬ 0. ВМЕСТО ПРЕДИСЛОВИЯ
Не для кого не секрет, что телеграмм является очень удобным и функциональным мессенджером с отсутствием спама. Я часто натыкаюсь на автоматизацию некоторых решений с помощью телеги.
К сожалению, эта автоматизация не всегда бывает достаточно красивой и использует самый минимум функционала и содержит довольно сомнительные способы.
Например зачастую люди пытаются “слушать обновления” бота и для этого они могут крутить метод getUpdates в цикле, регламентным заданием, планировщиком, еще каким извращением. В лучшем случае они знают про существование “long polling”. Но все равно это является очень и очень спорным решением.
Возможно кто то хотел использовать webhook’и, но столкнулся с недоступностью использования портов, поддерживаемых телеграммом.
Также некоторых людей останавливает позиция отдельных чинуш по завинчиванию гаек. Оставим мнение о них за пределами этой статьи, но при этом разберем реализацию обхода любых запретов.
В рамках серии статей я подробно разберу как сделать отличный inline webhook бот с постоянным доступом к api телеграмма. А бонусом вы получите собственный прокси сервер для сотрудников и друзей.
Статья будет дополнятся по мере возникновения вопросов, рекомендаций и спорных моментов.
Пример решаемой задачи
С помощью телеги можно оповещать пользователя об определенных действиях, завершении длительных операций, возникающих ошибках, скидывать файлы, картинки и конечно реализовать обратную связь через отрисованный интерфейс или диалог.
Итак, давайте не будем рассматривать голые методы телеграмма (у него и без этого отличная документация), а рассмотрим решение некоторой задачи с помощью бота в контексте которой будет рассмотрен следующий функционал бота:
- Рассылка сообщений в группы и авторизовавшимся пользователям
- Получение уведомлений RESTful интерфейсом ИБ от серверов телеграмма
- Отправка файлов
- Редактирование сообщений
- Создание клавиатуры (кнопки расположенные в несколько рядов и прикрепленные к сообщению)
- Встроенные запросы и ответы на них
- Авторизация в боте с помощью Google OAuth2 и сопоставление телеграмм аккаунта, почты и пользователя информационной базы
- Некоторые хитрости архитектуры и оформления сообщений
А задачей будет удобное визирование заявок на оплату через мессенджер в cash flow подсистеме ИБ (казначействе). Ожидаемый порядок действий при визировании:
- Пользователь создает и подготавливает заявку на оплату
- уведомляются авторизованные следующие звенья с возможностью принять или отклонить заявку из мессенджера
- информация о созданной заявке отправляется в группу с прикрепленным документом
- Заявка согласовывается с держателем бюджета
- уведомляются авторизованные следующие звенья с возможностью принять или отклонить заявку из мессенджера
- обновляется информация в ранее отправленных сообщениях
- Заявка согласовывается с финансовым менеджером
- уведомляются авторизованные следующие звенья с возможностью принять или отклонить заявку из мессенджера
- обновляется информация в ранее отправленных сообщениях
- Утверждается казначеем
- обновляется информация в ранее отправленных сообщениях
Последовательность настройки
Итак, что же нам потребуется для реализации?
- VPS хостинг с любой операционкой (Я советую Debian или Ubuntu, тк по ним куча документации)
- Цена вопроса 1-2$/мес это единственное за что придется платить, но как по мне, это мизерная цена для обхода любых блокировок и запуска удобного бота (нагрузка на сервер не ощущается даже при 50 активных клиентов http/socks5 прокси и проксирующего nginx)
- putty
- 3proxy
- nginx
- самоподписанный SSL сертификат (разберу получение)
- Настроить web приложение 1С
- Веб сервер (буду разбирать на примере iis)
- http сервисы (можно и в расширении, если автоматизируете бухгалтерию или зуп на поддержке, ничего не придется снимать с последней)
- Пробросить 1 любой порт для взаимодействия с телеграммом (опционально, если будет VPN тунель с хостингом)
- Телеграмм бот
- Включенный inline режим
- Включенный webhook
- Google OAuth2 приложение для веб сервера
- client id
- redirect url
- secret key
- scopes
- 1С бэкэнд (в расширении)
- restful api
- общие модули и обработки по желанию
- регистры сведений
Полезные ссылки
// API Telegram
https://core.telegram.org/bots/api
// Google OAuth2
https://console.cloud.google.com/apis/credentials/oauthclient/
https://developers.google.com/identity/protocols/OAuth2WebServer
https://developers.google.com/oauthplayground
// Putty
https://www.putty.org/
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-debian-9
https://habr.com/post/127521/
// Nginx
https://nginx.org/ru/
https://wiki.archlinux.org/index.php/Nginx_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
// 3proxy socks5 proxy server
https://www.3proxy.ru/
// MTProxy
https://github.com/TelegramMessenger/MTProxy
// Сервис для отладки проксирования webhook'ов телеграма:
https://www.webhookapp.com/


