Перейти к основному содержимому

Валидация кода

В этом уроке вы научитесь обеспечивать валидацию числовых кодов. Это может быть полезно в игровых навыках или для валидации промо-кодов во время акций.

  • Если вас интересует авторизация по логину и паролю, смотрите этот урок.
  • Если вы хотите проводить авторизацию определенных аккаунтов Telegram, то смотрите этот урок.
  • Если вам нужно для разных этапов сценария принимать разные правильные ответы (разные коды), то пройдите этот урок.

Прежде чем приступим к уроку, нужно сделать два отступления.

примечание

Обратите внимание, что если в сценарии есть глобальный интент, он будет переводить пользователя на соответствующий экран, даже если вод введен неверно. Также, бот будет продолжать выдавать ответы из базы знаний.

Итак, приступим.

  1. Начнем с создания таблицы.

Создайте таблицу с колонками: codes

Скопируйте и вставьте это название столбца в таблицу. Если вы допустите ошибку в названии столбца, данный сценарий работать не будет.

Напишите в таблице несколько числовых кодов.

  1. Добавьте в сценарий блок num to $var.

Напишите в нем текст: Введите код. И напишите переменную: entry. Также, укажите нужный вам диапазон номеров. Например, от 1 до 9999.

  1. Подготовим таблицу.
  • Опубликуйте таблицу: Файл → Поделиться → Опубликовать в интернете → Опубликовать. Путь из всплывающего окна копировать не нужно. Закройте всплывающее окно.

    подсказка
    Публиковать страницу нужно только один раз. Вам не нужно снова публиковать страницу после внесения в нее изменений.
  • Разрешите доступ к таблице по ссылке: для этого нажмите кнопку Настройки доступа в правом верхнем углу страницы, затем в модальном окне кликните Разрешить доступ всем, у кого есть ссылка. Таблица должна быть доступна для чтения. Чтобы завершить настройку, нажмите Готово.

  • Откройте блокнот и скопируйте туда ссылку, которая должна иметь следующий вид:

    https://tools.aimylogic.com/api/googlesheet2json?sheet=<название_листа>&id=<id_таблицы>

  • Затем найдите в пути страницы данный элемент:

Это идентификатор документа. Скопируйте его и вставьте в блокнот после той строки, которую вы вставили в блокнот ранее. Затем скопируйте все, что получилось в блокноте. Эту ссылку нужно будет использовать в HTTP-запросе на следующем шаге.

  • Вы можете проверить, все ли сделали правильно, если вставите получившуюся ссылку в строку браузера. Если вы все сделали правильно, то вы должны увидеть содержание таблицы в виде JSON-массива.

  1. Создайте HTTP-запрос.

Свяжите «Переход после ввода $entry» с новым блоком HTTP-запрос:

Параметры HTTP-запроса:

  • метод Get
  • в URL используйте ссылку, которую получили шагом выше
  • на вкладке RESPONSE напишите название переменной: code и значение: _.findWhere($httpResponse, {"codes": parseInt($entry)})
  • вкладки BODY и HEADERS заполнять не нужно.

Нажмите Сохранить.

С помощью этого HTTP-запроса мы получим всю информацию, которая есть у нас в таблице. То есть, сам запрос еще не проверяет, верный код. Он только делает запрос к url. Если таблица опубликована как описано в инструкции по чтению данных из Google Таблиц, то запрос будет успешным, даже если пользователь ввел логин неверно. Поэтому мы будем проверять логин на следующих шагах.

А сейчас же мы просто запрашиваем всю информацию из Google Таблиц. Также, http-запрос ищет в Google Таблицах введенный вами логин с помощью _.findWhere($httpResponse, {"codes": parseInt($entry)}). Если код присутствует в таблице, он помещает его в переменную $code. Но успешное завершение запроса вовсе не означает, что логин действительно был в таблице.

  1. От варианта Завершен с ошибкой сделайте связь с блоком Текст, где напишите: Ошибка чтения кода $httpStatus

Если в процессе тестирования вы увидите это сообщение, ищите решение проблемы в конце этой статьи.

  1. От варианта Завершен успешно сделайте связь с блоком Условие и напишите в него: $code

Это условие будет проверять, записалось ли что-либо в переменную $code, то есть, был ли найден введенный пользователем код. Если код был найден, то в переменной будет значение, и условие отработает. Если нет, то будет отрабатывать else.

  1. От else блока Условие сделайте связь с текстовым блоком, в котором напишите: Такого кода нет. Попробуйте еще раз.

Добавьте на этот экран кнопку «попробовать еще» и свяжите ее с экраном запроса логина.

8. От условия сделайте связь с текстовым блоком, в котором напишите: Код введен верно.

Все, готово!

Ознакомьтесь с другими уроками по использованию Google Таблиц: