Подсказка: чтобы бот увидел сообщение, пользователю из чата нужно начать обращение к с косой черты /. Например: /SuperSuppot_bot
Получив сообщение из группового чата, бот создаст заявку в Pyrus, и когда сотрудник поддержки ответит клиенту из Pyrus, сообщение в чате Telegram увидят все его участники.
Подключаем расширение к форме
Подключаем Telegram-канал
Теперь нужно ввести в открывшееся поле API-токен бота в Telegram, с которым будут общаться ваши пользователи. Его нужно создать или подключить уже существующего. Уникальный токен необходим, чтобы идентифицировать бота.
Обратите внимание: если существующий бот уже подключён к какой-либо платформе, при подключении к Pyrus он от этой платформы отключится.
Вы также можете создать бота из мобильного приложения Telegram.
Примечание: одного Telegram-бота можно подключить к одной форме Pyrus.
Настраиваем расширение
После подключения канала к форме нужно настроить параметры его работы.
Тема, клиент, приветствие
Переоткрытие закрытых заявок
Также в настройках можно указать условия, при которых закрытая заявка от клиента будет переоткрываться заново.
Как получить API token и ID чата в телеграм
Например, если клиент напишет не позже, чем 7 дней после первого сообщения в чат, откроется старая заявка, если позже,создастся новая.
Автоматическое заполнение полей заявки
Для заявок из Telegram можно настроить автоматическое заполнение поля Источник. Это удобно, если вы хотите анализировать такие заявки из конкретного канала в сводке или реестре.
В разделе Автоматически изменить поля нажмитеДобавить поле и выберите поле заявки и значение, которое Pyrus заполнит автоматически.
Важно: автозаполнение работает только для полей типа Выбор и Справочник.
Как приостановить или отключить интеграцию
Примечание: после отключения параметры бота сбрасываются. Это действие нельзя отменить, но вы в любой момент можете подключить этого или нового бота заново.
Источник: pyrus.com
Как подружить Telegram-бот с OpenId Connect
Представим себе ситуацию: аналитики компании Foobar Inc. провели тщательное исследование конъюнктуры рынка и бизнес-процессов компании и пришли к выводу, что для оптимизации издержек и многократного увеличения прибыли Foobar кровь из носу требуется Telegram-бот компаньон, способный подбодрить сотрудников в трудную минуту.
Естественно, Foobar не может позволить, чтобы коварные конкуренты воспользовались их ноу-хау, просто добавив их бота себе в контакты. Поэтому требуется, чтобы бот разговаривал только с сотрудниками Foobar, прошедшими аутентификацию в корпоративной системе единого входа (SSO) на основе OpenId Connect.
В теории
OpenId Connect (OIDC) — это протокол аутентификации, основанный на семействе спецификаций OAuth 2.0. В нем процесс аутентификации может проходить по различным сценариям, называемым потоками (flow), и включает в себя три стороны:
- владелец ресурса (resource owner) — пользователь;
- клиент (client) — приложение, запрашивающее аутентификацию;
- сервер авторизации (authorization server) — приложение, хранящее информацию о пользователе и способное его аутентифицировать.
Получаемая клиентом в результате аутентификации информация о пользователе представляется в виде JWT-токенов (JSON Web Token). Не будем сейчас углубляться в терминологию и детали спецификации OIDC, поскольку и без того есть немало статей, в том числе и на Хабре, позволяющих составить представление о базовых принципах работы OIDC.
Для решения поставленной задачи, помимо реализации основной функциональности бота, нам необходимо реализовать механизм авторизации: при получении каждого нового сообщения от пользователя необходимо проверять наличие и актуальность связки между данным Telegram-пользователем и учеткой в системе SSO. Неавторизованные пользователи при этом должны направляться на страницу аутентификации.
Для начала нам необходимо определиться с тем, какой поток аутентификации мы будем использовать. В спецификации OIDC описано несколько возможных сценариев аутентификации пользователей:
- поток с кодом авторизации (authorization code flow),
- неявный поток (implicit flow),
- гибридный поток (hybrid flow),
- и другие потоки, определенные в OAuth 2.0.
Поскольку наш бот — это серверное приложение с возможностью доступа по HTTP, нам подойдет поток с кодом авторизации.
Схема взаимодействия будет выглядеть следующим образом:
- Неаутентифицированный пользователь пишет боту.
- Бот генерирует ссылку на сервер авторизации с запросом кода авторизации и отправляет ее пользователю.
- Пользователь переходит по ссылке.
- Сервер аутентифицирует пользователя (например, с помощью формы логина).
- После окончания процесса аутентификации сервер авторизации перенаправляет пользователя на callback URL бота с указанием кода авторизации.
- Бот просит сервер авторизации обменять код авторизации на токен доступа и ID токен.
- Сервер авторизации направляет боту запрошенные токены.
В описанном сценарии все хорошо, кроме того, что на последнем шаге, когда бот получил токен доступа и ID токен, у него уже нет информации о том, какой Telegram-пользователь инициировал всю цепочку действий.
Здесь самое время вспомнить про параметр state запроса аутентификации, который рекомендуется использовать для предотвращения атак межсайтовой подделки запросов (XSRF). Значение state формируется на стороне бота на шаге 2 и добавляется в URL в виде параметра, затем сервер авторизации на шаге 5 в неизменном виде передает это значение в callback URL бота. Таким образом, если мы на шаге 2 свяжем сгенерированный state с id Telegram-пользователя, то на шаге 7 по значению state сможем сопоставить id Telegram-пользователя с полученными токенами. Бинго!
На практике
Итак, перейдем к реализации, вооружившись следующими инструментами:
- Keycloak — open source система идентификации и управления доступом (Identity and Access Management), реализующая стандарты OAuth 2.0, Open ID Connect и SAML.
- Spring Boot в качестве каркаса для приложения.
- TelegramBots — популярная Java библиотека для создания Telegram-ботов. Небольшой бонус — наличие интеграции со Spring Boot.
- ScribeJava — полнофункциональный OAuth клиент для Java. Хорош своей простой, минимальным количеством зависимостей и наличием пресетов для множества OAuth провайдеров, в том числе и для Keycloak. Здесь стоит заметить, что Keycloak также имеет клиентские адаптеры для веб-приложений под разные платформы, и Spring Boot — не исключение. Эти адаптеры позволяют настроить аутентификацию пользователей через Keycloak несколькими строчками в конфигурационном файле, но поскольку наш клиент — Telegram-бот, и аутентификация требует запоминания связки state с id Telegram-пользователя, нам такой вариант не подходит.
- Java JWT от Auth0 — реализация JWT для Java, она нам пригодится для работы с ID токенами.
Для начала посмотрим на реализацию бота:
Далее — определение метода поиска UserInfo по id Telegram-пользователя и метода формирования URL для аутентификации пользователя:
Класс, содержащий информацию о пользователе, получаемую от сервера авторизации:
public class UserInfo < private final String subject; private final String preferredUsername; static UserInfo of(OpenIdOAuth2AccessToken token) < // Декодируем ID токен и создаем на его основе UserInfo. var jwt = JWT.decode(token.getOpenIdToken()); var subject = jwt.getSubject(); var preferredUsername = jwt.getClaim(«preferred_username»).asString(); return new UserInfo(subject, preferredUsername); >>
Создание и настройка OAuth20Service:
Callback endpoint нашего бота:
Снова вернемся к OidcService, чтобы посмотреть на реализацию метода completeAuth:
В заключение
Поставленная задача решена, но за кадром остался еще ряд вопросов, которые необходимо решить, прежде, чем катить это в прод. Например, офлайн-токены необходимо держать в персистентном хранилище, это позволит не направлять пользователей на повторную аутентификацию после каждого перезапуска/обновления бота.
Эти вопросы уже решены за нас в более развесистых OAuth-клиентах вроде Spring Security и Google OAuth Client. Но для демонстрационных целей нам и так ок 🙂
Все исходники можно найти на GitHub.
Источник: temofeev.ru
Токен Telegram — самый ожидаемый токен 2019 года
Новый криптовалютный проект Павла Дурова (да-да, того самого, который «сделал» сначала VK, а потом и Telegram) на слуху уже давно. Развеем же домыслы и разложим все по полочкам – пришло время детально разобраться, что представляет собой токен Telegram!
Павел Дуров, при всей его скрытности, производит впечатление шоумена, рок-н-ролльщика от IT. Поэтому мы так нетерпеливо ждем выхода криптовалюты Gram. Событие масштаба не высадки человека на Луну, но запуска теслы Илона Маска в космос.
По традиции, о новой крипте мы знаем немного — Дуров советует искать информацию на офсайте, которого нет. Что ж, давайте подытожим то, что нам известно.
Что ждeм от TON-а?
Платформа строится вокруг хорошо нам известного мессенджера Telegram, программисты которого работают над новой криптой . И не только над ней — анонсированная платформа TON (Telegram Open Network, название как бы намекает), по сути, гораздо больше, чем крипта. Это как, например, если бы к каждому купленному айфону в придачу шла квартира — ну, чтобы было где его зарядить.
Не будем вдаваться в технические детали: для тех, кто интересуется, что такое P2P Network и DHT, существует множество публикаций в интернете. Итак, нам предложат такие сервисы:
TON Storage — тут можно хранить файлы и обмениваться ими, и даже за минимальную плату.
TON Proxy — анонимайзер, альтернатива Tor; вероятнее всего, тоже будет платным.
TON Services — подобие Google Play, маркет для приложений, использующих блокчейн.
Биржа для размещения рекламных объявлений в группах и каналах.
TON Payments — только сейчас мы добрались до криптовалюты; каждый пользователь Telegram получит личный кошелек.
Зачем ждем TON?
Создатели обещают быстрый и мощный блокчейн. Самый быстрый и самый мощный, если точнее.
Блокчейн, в который вложены другие блокчейны, раздробленные блокчейны, блокчейны вертикальные и горизонтальные — на любой вкус и цвет, для любых нужд и целей. То, что называется мультиблокчейн. Зачем?
Например, это позволит корректировать неправильно сформированные блоки или создать свою криптовалюту — всего возможны 4 294 967 296 разных крипт.
Все верно — Gram будет только первым и основным токеном этой платформы.
Что еще?
миллисекунды на проведение транзакций, это позволит тягаться с Visa и MasterCard;
proof-of-stake (доказательство владения) как алгоритм защиты;
майнинг в классическом смысле не предусмотрен.
Что предложат вместо майнинга?
Среди пользователей блокчейна ежемесячно будут назначать 1000 валидаторов — им доверят проверять и подтверждать транзакции, получая за это монеты. Эти полномочия будут у наиболее состоятельных клиентов.
Всего выпущено 5 миллиардов токенов новой валюты, из них:
- 52% будут в резерве для защиты от спекуляций и обеспечения работы системы.
- 4% уйдут разработчикам — добрая традиция Силиконовой долины раздавать сотрудникам акции.
- Оставшиеся 44% (около 2,2 миллиарда) продадут оптовым покупателям за фиат в процессе предварительного ICO.
Пакет обойдется в $ 20 миллионов. Так что, если вы не знали, куда потратить лишние деньги, то вот, теперь знаете. На данный момент собрано около $ 2 миллиардов.
Злые языки, а именно whitepapers (если это на самом деле они), утверждают, что для получения External Secure ID может понадобиться верификация. Шутка про скан паспорта, похоже, снова становится актуальной.
Что получит пользователь Telegram взамен?
платную подписку на каналы и контент
возможность оплатить рекламу
приложения (например, VPN)
легальный обмен крипты на фиат
покупки в магазинах либо приложениях
возможность использовать Gram для внешних сделок
Есть свой маленький ад и для любителей халявы. Если счет уйдет в минус, аккаунт заморозят, а все его данные затрутся хэшем — это мера предосторожности против воссоздания смарт-контракта. Стоит пополнить счет в течение шести месяцев, и все будет восстановлено. Да, Паша Дуров в долг никому не дает!
А в это время…
…начинают бродить слухи о том, что не существует никакого TON, что все это скам, а Дуров — обманщик.
Причиной тому — подчеркнутое нежелание Дурова как-то комментировать слухи. Он не говорит ни да, ни нет. Вместо этого он хмыкает в виртуальные усы и отсылает на офсайт, которого, напомним, не существует. И наверняка хитро улыбается.
Масло в огонь подливают различные сервисы, которые предлагают купить новые токены совсем недорого, а после получения оплаты растворяются в воздухе.
Вот вам хайп из свеженького.
Вы ведь еще не пытались купить Gram? Надеемся, что нет. Разве что вы крупный инвестор, отобранный лично Павлом.
Непубличность проекта и допуск к участию в нем только избранных преследует, вероятно, определенную цель. Попытка создать независимую от банков и государств финансовую систему встретит, конечно, жесткое сопротивление.
Стоило еще одному идолу мира IT — Марку Цукербергу — заявить о создании крипты под названием Libra, как Конгресс мгновенно потребовал заморозить проект . Более того, власти Германии, Франции и (сюрприз!) РФ разразились криками о том, что создание этой криптовалюты недопустимо и попирает нормы человеческой и любой другой морали. Что поделаешь, никто не терпит, когда топчутся по любимым мозолям.
Итак, можно прийти к выводу, что Дуров старается оградить свое детище от ненужных и преждевременных нападок. Учитывая, что ранее он уже шел против требований ФБР, а про его войну с ФСБ и Роскомнадзором не шутил только совсем уж ленивый, этот шаг объясним и понятен.
В любом случае, осталось три месяца до того момента, как блокчейн будет запущен, или же Дуров вернет собранные деньги инвесторам.
Лишняя нервотрепка сейчас — точно не то, что может мотивировать и настроить на конструктивный лад. Придет время и для нее, но потом.
Ну и, согласитесь, у Gram совершенно восхитительная рекламная кампания, которая, похоже, не стоила ни копейки. Стоит ли ее ломать, заявив о том, что, мол, да, делаем, да, уже скоро, да, будет круто?
Очевидно, что смысла в этом нет ни малейшего.
Источник: weenax.com