Плагин для WordPress, который передаёт события сайта в Telegram и позволяет пользователям входить в систему с одной и той же учётной записью. Он был написан сначала для этого сайта, затем адаптирован для более широкого круга пользователей и опубликован как открытый исходный код под лицензией GPL-3.0.
Источник, выпуски и релизы: github.com/kostyasorokin/wp-telegram-integration
Вход в систему
Вход через Telegram реализован с использованием кода авторизации OpenID Connect и PKCE, а не как стандартный виджет, который обычно поставляется с плагинами. Идентификационный токен проверяется криптографически до завершения сессии WordPress.
Процесс запоминает, какой браузер его запустил. Ссылка обратного вызова, скопированная из адресной строки другого пользователя, не может быть воспроизведена для передачи его учетной записи — cookie состояния используется для каждого процесса отдельно, и несовпадающий cookie завершает попытку, а не авторизует пользователя.
Telegram не возвращает ни адрес электронной почты, ни надежный аватар. Оба пробела заполнены намеренно: при создании новой учетной записи адрес электронной почты запрашивается один раз, а фотография профиля загружается только по протоколу HTTPS с собственных серверов Telegram.
Уведомления
Для контента, комментариев, пользователей, медиафайлов, безопасности, обновлений и состояния сайта предусмотрены отдельные переключатели, а WooCommerce добавляет события, касающиеся заказов, запасов и корзины. Каждое сообщение формируется из заголовка, который настраивает владелец, а не из фиксированного шаблона.
Список интеграций со сторонними сервисами не является жестко заданным. Плагин сканирует собственную директорию интеграций, проверяет найденные данные и кэширует результат, поэтому добавление поддержки другого плагина осуществляется в виде файла, а не путем редактирования в шести местах.
Сообщу вам, когда оно сломается
Если уведомление не отправляется, причина сохраняется — собственные слова Telegram, чат, к которому оно было отправлено, и размер сообщения. Тело сообщения никогда не сохраняется, поскольку уведомление может содержать данные, отправленные через форму.
Состояние доставки отслеживается через раздел “Состояние сайта” WordPress, поэтому сообщение «Уведомления перестали приходить» видит сам владелец сайта, а не замечает это со временем. Восстановление после сбоя регистрируется немедленно, без ожидания подтверждения успешного завершения процесса.
Форма обратной связи Contact Form 7 также проходит проверку. Непрерывная серия отказов в приеме заявок по причине спама рассматривается как доказательство работы спам-фильтра, а не отправителей — настоящий спам приходит партиями, а система, которая отклоняет все заявки, — нет.
Построено для того, чтобы на нём строили
Другие плагины и темы получают небольшой документированный API: отправка сообщения, прямой доступ к API бота или регистрация команды веб-хука. Вспомогательная функция кнопки входа возвращает пустую строку, когда плагин еще не запущен, когда вход в систему отключен и когда посетитель уже авторизован, поэтому шаблон может вывести ее без каких-либо ограничений.
В файле README описаны все исходящие вызовы, которые может совершать плагин, а две настройки, которые намеренно представляют опасность, прямо об этом говорят и поставляются отключенными.
Роли
Разработчик
Konstantin Sorokin
Выполнено
- Архитектура плагинов и разработка на PHP.
- Вход в Telegram через OpenID Подключение с помощью PKCE
- Уровень уведомлений для событий WordPress и WooCommerce
- Интеграция с Contact Form 7, Mailchimp и WooCommerce.
- Клиент API бота и конечная точка REST веб-перехватчика
- Настройки администратора, проверки работоспособности сайта и журнал доставки.
- Переводы на русский и украинский
- Документация и выпуск с открытым исходным кодом.