Авторизация в Telegram
Иногда нужно ограничить доступ к боту для определенного круга лиц.
Есть два способа реализовать это:
- Создать логин и пароль, которые будут вводить пользователи
- Ограничить доступ для определенного списка пользователей. Именно эту опцию мы рассмотрим в статье
Чтобы собрать список пользователей, для которых доступен бот, нужно собрать их username.
Username пользователя Telegram — это уникальный идентификатор аккаунта. Посмотреть его можно в настройках Telegram (Настройки –> Изменить профиль –> Имя пользователя). Либо вы можете попросить пользователей написать чат-боту. Так вы автоматически соберете их юзернеймы, отправив их себе в Telegram сообщением либо в Google Таблицу с помощью сервиса IFTTT.
Обратите внимание: Username — это не имя пользователя
Внимание! Если у вас в сценарии есть глобальный блок Интенты, то бот будет предоставлять пользователю информацию согласно реакциям из этого глобального блока. Решение — каждый раз после глобального блока проверять юзернейм пользователя.
Ограничить доступ средствами сценария
Вы можете настроить бот так, чтобы доступ к нему имели только определенные пользователи. Например те, username которых прописан в сценарии. Для этого в блоке Условия пропишите:
$rawRequest.message.from.username === "username"
вместо username укажите юзернейм нужного пользователя (идентификатор аккаунта Telegram)
Если их username входит в список, то бот будет приветствовать их, а если нет, то сообщит, что доступ запрещен:
Также вы можете отправлять данные о том, что определенный пользователь воспользовался ботом, сообщением в Telegram по примеру этой статьи.
Либо можете отправлять данные в Google Таблицу с помощью сервиса IFTTT.
Используем Google Таблицы
Если у вас много пользователей Telegram, которым нужно предоставить доступ к боту, а остальным пользователям доступ запретить, вы можете хранить данные этих пользователей в Google Таблице.
Создайте Google Таблицу со списком юзернеймов
Первым делом создайте Google Таблицу со списком юзернеймов пользователей, которые будут иметь доступ к боту:
Опубликуйте таблицу
Чтобы опубликовать Google Таблицу, откройте меню Файл → Поделиться → Опубликовать в интернете (File → Share → Publish to web). Откроется окно, в котором нужно просто нажать на кнопку Опубликовать (Publish).
Создайте новый блок Условия
Создайте блок Условия со следующим содержимым:
$login = $rawRequest.message.from.username
Свяжите блок Условия с HTTP-запросом
Свяжите блок Условия с HTTP-запросом:
Содержимое HTTP-запроса
Укажите URL вида:
https://tools.aimylogic.com/api/googlesheet2json?sheet=<название_листа>&id=<id_таблицы>
- Параметр
<название_листа>
указан внизу таблицы на вкладке листа таблицы. - Параметр
<id_таблицы>
вы можете получить из URL таблицы:
На вкладке RESPONSE добавьте переменную $users
со значением _.findWhere($httpResponse, {username: $login})
.
Создайте новую связь с блоком Условия
Создайте связь с блоком Условия, в котором написано просто: $users
.
Если в переменной $users
что-то будет, то бот будет приветствовать пользователя, если нет — «Доступ запрещен». Вот как будет выглядеть цепочка экранов:
Вы также можете ознакомиться с подробной инструкцией о том, как обращаться к пользователям по имени и как использовать другие значения переменной $rawRequest
.