При выполнении сценария ассистент может сохранять и обрабатывать различные данные, например данные, которые вводит пользователь.
Для этого ассистент использует переменные — временные хранилища, позволяющие обрабатывать данные во время работы смартапа.
Запись данных в переменные
Graph может создавать переменные как с помощью отдельных блоков (Ввод текста, Ввод числа, HTTP-запрос, JS код) так и с помощью сущностей, которые ассистент распознал в реплике пользователя.
Создание переменных с помощью блоков
Добавим в «Кулинарную книгу» возможность создавать собственные рецепты.
Для этого:
Откройте редактор сценария проекта.
На новый экран добавьте блок Ввод текста. Соедините экран с подсказкой Создать, расположенной на начальном экране смартапа.
В параметрах блока укажите сообщение «Назовите рецепт» и дайте название переменной —
newRecipe
.На новый экран добавьте блок Ввод числа.
В параметрах блока укажите сообщение «На сколько людей рассчитан рецепт?» и дайте название переменной —
numberOfPeople
.На новый экран добавьте блок Текст и задайте реплику ассистента «Вы создали рецепт $newRecipe, рассчитанный на $numberOfPeople персон».
Вы можете добавить на начальный экран глобальный интент «Новый рецепт», чтобы пользователь мог создать рецепт из любого места сценария.
Чтобы создать переменную с помощью блока HTTP-запрос, добавим в «Кулинарную книгу» возможность предлагать рецепты в зависимости от времени.
Для этого:
Откройте редактор сценария проекта.
На новый экран добавьте блок HTTP-запрос. Соедините экран с подсказкой Создать, расположенной на начальном экране смартапа.
В параметрах блока укажите адрес сервиса.
Graph сохраняет HTTP-ответы в системной переменной $httpResponse. Получить доступ к значениям полей HTTP-ответов можно с помощью точечной нотации:
$httpResponse.<название_поля>
Задайте имя переменной
hour
и укажите в качестве ее значения$httpResponse.hour
.Соедините успешное выполнение запроса с блоком Условия, в котором заданы сравнительные условия для определения времени.
6 <= $hour && ($hour < 12)(12 <= $hour) && ($hour < 18)(18 <= $hour) && $hour < 24;
С помощью готовых интентов Согласие и Отказ предложите пользователю посмотреть подходящее меню или покажите весь список рецептов.
Создание переменных с помощью сущностей
Если при распознавании запроса вы используете системные сущности, например, $NUMBER
или $PHONE
, ассистент автоматически выделяет соответствующие части реплики пользователя и сохраняет их в одноименных переменных.
При этом с помощью системных сущностей можно создавать собственные переменные следующим образом:
$<СУЩНОСТЬ>::<переменная>
Добавим в «Кулинарную книгу» возможность задавать количество персон с помощью системной сущности $NUMBER
.
Для этого:
- Откройте проект «Кулинарная книга».
- Замените блок Ввод числа с переменной
numberOfPeople
на блоки Текст и Интенты - В блоке Текст задайте реплику ассистента «На сколько людей рассчитан рецепт?».
- В параметрах блока Интент создайте новый интент со значением
$NUMBER::numberOfPeople
. - На новый экран добавьте блок Текст и задайте реплику ассистента «Вы создали рецепт $newRecipe, рассчитанный на $numberOfPeople персон».
Вы также можете использовать собственные справочники сущностей для создания переменных.
Когда ассистент распознает во фразе пользователя синоним из вашего справочника, он создает одноименную переменную с именем справочника и со значением в виде сущности, заданной в качестве идентификатора распознанного синонима.
Вы можете создавать новые переменные с помощью собственных справочников так же, как с помощью системных сущностей:
$<Справочник>::<переменная>