Как сделать закрытый доступ к сценарию бота
Проверка пароля
Начнём с проверки, потому что она работает одинаково для любого метода. Реализуется Развилкой. Настройте экраны как на скриншоте:
Создаём случайный пароль
В начале компонент Запись переменной задаёт рандомный числовой пароль. Мы используем хэлпер из Handlebars {{random 16458 78965485}}, который записывает в переменную случайное число в промежутке между первым и вторым. Для каждого пользователя будет своё уникальное число внутри одной и той же переменной. Записываем в переменную password. Чтобы проверить пароль, в Развилке мы выводим переменную как текст: {{password}}.
Так для каждого пользователя подставляется уникальное значение, которое он должен будет ввести. Это значение можно увидеть в переменных конкретного пользователя. Можно прислать сообщение с паролем, выводя в текст переменную {{password}}.
В примере пользователи, которые ввели пароль, совпадающий со значением своей переменной password, попадут на экран Пароль верный. В остальных случаях сработает Цель по умолчанию и пользователь попадет на экран Пароль не совпал.
Случайно сгенерированный пароль нужно обязательно доставить. Самый простой способ — по email. Такой сценарий описан здесь.
Но при желании можно интегрироваться, к примеру, с sms.ru и отправлять через SMS.
Открыть доступ после оплаты
Одна из частых задач — показывать пользователю определённые разделы только после оплаты, при этом, чтобы сохранились и бесплатные разделы. В этом случае можно поступать немного хитрее, чем просто выдавать пароль для доступа.
Например, разделить меню. Делается это в несколько шагов:
1. На экране при успешной оплате запишите в переменную payed значение ok. Так мы помечаем, что пользователь оплатил доступ.
2. На экран Меню для бота, поставьте в начало компонент Запись переменной. В ней запишите {{payed}} в payed. Так мы создаём для пользователя переменную payed, даже если он только написал боту.
3. Ниже поставьте Развилку. Она берёт значение из переменной payed. Тип данных в Цели — Текст, значение — ok, переход — Меню для платных. Цель по умолчанию — переход на экран Меню для бесплатных.
4. На обоих экранах меню добавьте кнопки, которые будут переводить на нужные экраны.
Чтобы забрать доступ, когда закончится оплаченный период, настройте Триггерное событие. Отправляться будет экран с записью значения {{\null}} в переменную payed.