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

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

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

Урок по валидации кодов из списка можете найти здесь.

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

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

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

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

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

code

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

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



Добавьте в сценарий блок Ввод числа.

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



Варианты размещения этого экрана:

Если вы хотите, чтобы бот начинал сессию с этого экрана, то этот экран должен быть стартовым - то есть, должен быть самым левым и самым верхним.



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



Подготовим таблицу.

Опубликуйте таблицу:

Файл -> Опубликовать в интернете -> Опубликовать -> Ок.
Закройте всплывающее окно.

Путь из всплывающего окна копировать не нужно.



Публиковать страницу нужно только один раз. Вам не нужно снова публиковать страницу после внесения в неё изменений.

Откройте блокнот и скопируйте туда ссылку:

http://tools.aimylogic.com/api/googlesheet2json?&id=

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



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



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



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

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

Параметры HTTP-запроса:
метод Get;
в url используйте ссылку, которую получили шагом выше.
на вкладке RESPONSE напишите название переменной:
check
и значение:
_.findWhere($httpResponse, {"number": 1})
где 1 - число, соответствующее порядковому номеру кода для соответствующего задания.

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


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

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




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

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

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


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

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


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

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


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


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



Всё, готово!

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

можете писать
_.findWhere($httpResponse, {"number": 2})
для второго задания.

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

Онлайн-заказы
Как сохранять информацию о пользователе
Бронирование
Как посмотреть статистику самого популярного запроса от пользователя
Авторизация в Telegram
Была ли эта статья полезна?
отменить
Спасибо!