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