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
.