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

Валидация кодов для разных заданий

В этом уроке вы научитесь обеспечивать валидацию числовых кодов. Это может быть полезно в игровых навыках или для валидации промо-кодов во время акций. В данной конкретной статье мы научимся хранить в Google Таблице коды, которые понадобятся на разных этапах сценария. Скажем, на первом этапе нам нужно за правильный ответ принимать код «4444», но во втором задании нам нужно за правильный ответ принимать код «5632». После прохождения этого урока вы научитесь принимать за верный ответ в определенном задании только один код из таблицы.

  • Если вас интересует авторизация по логину и паролю, смотрите этот урок.

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

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

примечание

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

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

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

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

code

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

В колонке number будут порядковые номера — 1, 2, 3, 4, 5… В колонке code перечислите коды для соответствующих заданий.

  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 напишите название переменной: check и значение: _.findWhere($httpResponse, {"number": 1}) где 1 — число, соответствующее порядковому номеру кода для соответствующего задания.

В этом месте сценария, например, мы будем принимать за правильный ответ код 4444, который стоит в строке 1:

к сведению

Вкладки BODY и HEADERS заполнять не нужно.

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

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

Также, http-запрос получает информацию из соответствующей строки с помощью _.findWhere($httpResponse, {"number": 1}) и записывает все, что есть в строке, которая соответствует номеру «1» в переменную $check.

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

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

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

Это условие будет проверять, соответствует ли число, которое ввел пользователь, числовому коду, который содержится в строчке 1 колонки code.

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

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

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

Все, готово!

Для других заданий можете повторять эту часть сценария, заменяя только число в Http запросе. Например, вместо _.findWhere($httpResponse, {"number": 1}) для первого задания можете писать _.findWhere($httpResponse, {"number": 2}) для второго задания.

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