ym88659208ym87991671
Работаем с данными в Chat App | Документация для разработчиков

Работаем с данными в Chat App

Обновлено 17 января 2024

При выполнении сценария ассистент может сохранять и обрабатывать различные данные, например данные, которые вводит пользователь.

Для этого ассистент использует переменные — временные хранилища, позволяющие обрабатывать данные во время работы смартапа.

Запись данных в переменные

Graph может создавать переменные как с помощью отдельных блоков (Ввод текста, Ввод числа, HTTP-запрос, JS код) так и с помощью сущностей, которые ассистент распознал в реплике пользователя.

Создание переменных с помощью блоков

Добавим в «Кулинарную книгу» возможность создавать собственные рецепты.

Для этого:

  1. Откройте редактор сценария проекта.

  2. На новый экран добавьте блок Ввод текста. Соедините экран с подсказкой Создать, расположенной на начальном экране смартапа.

    В параметрах блока укажите сообщение «Назовите рецепт» и дайте название переменной — newRecipe.

  3. На новый экран добавьте блок Ввод числа.

    В параметрах блока укажите сообщение «На сколько людей рассчитан рецепт?» и дайте название переменной — numberOfPeople.

  4. На новый экран добавьте блок Текст и задайте реплику ассистента «Вы создали рецепт $newRecipe, рассчитанный на $numberOfPeople персон».

Вы можете добавить на начальный экран глобальный интент «Новый рецепт», чтобы пользователь мог создать рецепт из любого места сценария.

Создание нового рецепта

Чтобы создать переменную с помощью блока HTTP-запрос, добавим в «Кулинарную книгу» возможность предлагать рецепты в зависимости от времени.

Для этого:

  1. Откройте редактор сценария проекта.
  2. На новый экран добавьте блок HTTP-запрос. Соедините этот экран с подсказкой Создать, расположенной на начальном экране смартапа. В параметрах блока укажите адрес сервиса, используя GET-запрос.
  3. Задайте имя переменной hour и укажите в качестве ее значения $httpResponse.hour. В данном случае в переменную hour запишется текущий час.
  4. На новый экран добавьте блок Условия, выбрав в качестве условия перехода Свое JS условие, в котором заданы сравнительные условия для определения времени:
  • (6 <= $hour) && ($hour < 12)

  • (12 <= $hour) && ($hour < 18)

  • (18 <= $hour) && ($hour < 24)

    И соедините успешное выполнение блока HTTP-запроса с блоком Условия.

  1. Создайте три новых экрана и добавьте на каждый из них блок Текст. В этих блоках поочередно введите сообщения для завтрака («Кажется у вас еще утро, хотите рецепт завтрака?»), обеда («День в самом разгаре, хотите рецепт обеда?») и ужина («Кажется уже вечер, показать рецепт ужина?»). Наведя курсор на блок, добавьте интенты. Например, с помощью готовых интентов Согласие и Отказ вы можете предложить пользователю посмотреть подходящее меню или весь список рецептов. При создании интентов отключите бегунок «Сделать интенты доступными из любой точки сценария».
  2. С помощью готовых интентов Согласие и Отказ предложите пользователю посмотреть подходящее меню или покажите весь список рецептов.
Определение времени

Создание переменных с помощью сущностей

Если при распознавании запроса вы используете системные сущности, например, $NUMBER или $PHONE, ассистент автоматически выделяет соответствующие части реплики пользователя и сохраняет их в одноименных переменных.

Добавим в «Кулинарную книгу» возможность задавать количество персон с помощью системной сущности $NUMBER.

Для этого:

  1. Откройте проект «Кулинарная книга».
  2. На новый экран добавьте блок Ввод текста. Соедините его с подсказкой Создать, расположенной на начальном экране смартапа. В параметрах блока введите текст «Назовите рецепт» и дайте название переменной — newRecipe.
  3. Создайте новый экран и добавьте туда блок Текст. Задайте в нем реплику ассистента «На сколько людей рассчитан рецепт?».
  4. На этом же экране добавьте блок Интенты и создайте новый интент со значением $NUMBER::numberOfPeople. При создании отключите Сделать интенты доступными из любой точки сценария.
  5. Вы можете создавать новые переменные с помощью собственных справочников так же, как с помощью системных сущностей:
$<Справочник>::<переменная>
  1. На новый экран добавьте блок Текст и задайте реплику ассистента «Вы создали рецепт $newRecipe, рассчитанный на $numberOfPeople персон».
Создание рецепта с помощью системных сущностей

Вы также можете использовать собственные справочники сущностей для создания переменных.

Когда ассистент распознает во фразе пользователя синоним из вашего справочника, он создает одноименную переменную с именем справочника и со значением в виде сущности, заданной в качестве идентификатора распознанного синонима.

Вы можете создавать новые переменные с помощью собственных справочников так же, как с помощью системных сущностей:

$<Справочник>::<переменная>

Смотрите также

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.