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

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

Обновлено 17 ноября 2023

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

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

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

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

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

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

Для этого:

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

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

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

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

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

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

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

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

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

Для этого:

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

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

    В параметрах блока укажите адрес сервиса.

    Graph сохраняет HTTP-ответы в системной переменной $httpResponse. Получить доступ к значениям полей HTTP-ответов можно с помощью точечной нотации:

    $httpResponse.<название_поля>
  3. Задайте имя переменной hour и укажите в качестве ее значения $httpResponse.hour.

  4. Соедините успешное выполнение запроса с блоком Условия, в котором заданы сравнительные условия для определения времени.

    6 <= $hour && ($hour < 12)(12 <= $hour) && ($hour < 18)(18 <= $hour) && $hour < 24;
  5. С помощью готовых интентов Согласие и Отказ предложите пользователю посмотреть подходящее меню или покажите весь список рецептов.

Определение времени

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

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

При этом с помощью системных сущностей можно создавать собственные переменные следующим образом:

$<СУЩНОСТЬ>::<переменная>

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

Для этого:

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

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

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

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

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

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

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