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

Системные переменные в Graph

Обновлено 14 декабря 2023

Graph автоматически создает системные переменные. Вы можете оперировать системными переменными, как и собственными.

$queryText

В переменной $queryText хранится полный текст текущего пользовательского запроса в формате строки.

Используйте переменную, если необходимо обработать, передать или сохранить запрос пользователя.

Например, вы можете сохранить запрос пользователя в базе данных с помощью блока HTTP-запрос.

Для этого передайте переменную в теле запроса в виде значения одного из полей, например:

{
"var1": "$queryText"
}

$userId

Уникальный идентификатор пользователя, который не меняется со временем. Этот идентификатор является уникальным только для пары смартап-пользователь. То есть, если тот же самый пользователь обратится к другому вашему смартапу, то идентификатор уже будет другим.

$clientProfile

Помогает идентифицировать пользователя.

Так, с помощью $clientProfile.userId вы сможете узнать идентификатор установленного приложения, который уникален для каждого устройства. А с помощью $clientProfile.sub вы сможете узнать уникальный идентификатор авторизованного пользователя. Такой идентификатор уникален в рамках приложения и не изменяется, даже если пользователь использует несколько устройств.

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

$rawRequest

Позволяет получить содержание запроса в формате протокола ассистента, который поступил в смартап.

Пример запроса можно посмотреть в разделе SmartApp API. Эта переменная может пригодиться, если вам нужно получить какие-то дополнительные данные из изначального запроса (например, информацию о голосе ассистента, который выбрал пользователь).

Пример работы с $rawRequest описан в разделе Обработка голосов ассистента.

$lastSeen

В этой системной переменной хранится информация о том, сколько секунд назад был предыдущий запрос от этого пользователя. Если пользователь пришел в первый раз, то в переменной будет undefined. Эту переменную можно использовать, чтобы изменять логику смартапа для новых и уже известных пользователей. А также чтобы изменять логику, если смартап видел пользователя давно и недавно.

  • Вы можете использовать эту переменную без определения времени. В этом случае переменная будет просто определять, впервые пользователь обратился к смартапу или нет.
Системные переменные
  • Либо вы можете задать временной интервал последнего обращения. Значение может быть задано в блоке условий подобным образом:$lastSeen > 600.
Системные переменные

Здесь 600 - это 600 секунд, то есть, 10 минут. Ассистент будет выдавать реплику "С возвращением!" если пользователь обращался более 10 минут назад, иначе - будет говорить "Привет!"

$httpResponse

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

$sharedContext

В переменной можно сохранять контекст неаутентифицированного пользователя — информацию, которую пользователь сообщил в процессе взаимодействия со смартапом.

Идентификация пользователя до авторизации выполняется на основе данных об устройстве, на котором запущен смартап. Таким образом данные из переменной $sharedContext сохраняются только в рамках устройства.

Используйте переменную, чтобы сохранять и использовать контекст в дальнейшей работе.

Например, если пользователь собрал корзину в вашем магазине до того, как авторизоваться, вы можете использовать переменную $sharedContext, чтобы сохранить эти товары в корзине и после авторизации.

Лимиты

Размер объекта $sharedContext ограничен мягким и жестким лимитам в 100 Кб и 1000 Кб соотвественно.

При достижении мягкого лимита в сценарий передается событие sharedDataSoftLimitExceeded:

event: sharedDataSoftLimitExceeded

При этом данные контекста продолжат сохраняться до достижения жесткого лимита. При достижении жесткого лимита в сценарий передается событие sharedDataHardLimitExceeded:

event: sharedDataHardLimitExceeded

При этом данные перестают сохраняться в объекте $sharedContext.

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