Хранилище сеансов

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

Во время разговора любые данные, собранные с использованием типов, сохраняются в хранилище сеансов. Вы также можете взаимодействовать с данными в хранилище сеансов с помощью вызовов веб-перехватчика. Для вызовов веб-перехватчика состояние хранилища сеанса передается в запросе app.handle() и сохраняется в объекте session .

Срок действия данных, хранящихся в хранилище сеанса, истекает после завершения разговора.

Чтение и запись данных в хранилище сеансов

Чтобы обновить или установить новое значение в хранилище сеанса, присвойте значение полю params объекта session в вызове веб-перехватчика. В следующем примере для параметра «exampleColor» в хранилище сеансов задается значение «красный»:

Node.jsJSON
// Assign color to session storage
app
.handle('storeColor', conv => {
  let color
= 'red';
  conv
.session.params.exampleColor = color;
});
   
{
 
"responseJson": {
   
"session": {
     
"id": "12345678901234567890",
     
"params": {
       
"exampleColor": "red"
     
}
   
},
   
"prompt": {
     
"override": false
   
}
 
}
}
   

Чтобы получить доступ к данным, хранящимся в хранилище сеанса, назначьте их переменной в вызове веб-перехватчика. В следующем примере извлекается значение из «exampleColor» в хранилище сеанса:

Node.jsJSON
// Retrieve color from session storage
app
.handle('getStoredColor', conv => {
  let color
= conv.session.params.exampleColor;
});
   
{
 
"responseJson": {
   
"session": {
     
"id": "12345678901234567890",
     
"params": {
       
"exampleColor": "red"
     
}
   
},
   
"prompt": {
     
"override": false
   
}
 
}
}
   

Чтобы очистить ранее сохраненное значение, установите для него значение null при вызове веб-перехватчика. В следующем примере очищается значение «exampleColor» в хранилище сеанса:

Node.jsJSON
// Clear color from session storage
app
.handle('clearStoredColor', conv => {
  conv
.session.params.exampleColor = null;
});
   
{
 
"responseJson": {
   
"session": {
     
"id": "12345678901234567890",
     
"params": {}
   
},
   
"prompt": {
     
"override": false
   
}
 
}
}
   

Ссылка на сохраненные значения в подсказках

Вы можете ссылаться на значения, хранящиеся в хранилище сеанса, в приглашении . Для ссылки на значение используйте $session.params. PARAMETER_NAME Синтаксис $session.params. PARAMETER_NAME , где PARAMETER_NAME — это имя, указанное в веб-перехватчике при установке параметра.

Например, вы ранее сохранили значение цвета в хранилище сеанса как параметр exampleColor . Чтобы получить доступ к этому значению в приглашении, вы ссылаетесь на это значение, используя $session.params.exampleColor :

JSON
{
 
"candidates": [{
   
"first_simple": {
     
"variants": [{
       
"speech": "Your favorite color is $session.params.exampleColor."
     
}]
   
}
 
}]
}
   

Ссылка на сохраненные значения в условиях

Вы также можете ссылаться на значения, хранящиеся в хранилище сеанса, в условиях . Чтобы ссылаться на значение, используйте session.params. PARAMETER_NAME Синтаксис session.params. PARAMETER_NAME , где PARAMETER_NAME — это имя, указанное в веб-перехватчике при установке параметра.

Например, вы ранее сохранили значение цвета в хранилище сеанса как параметр exampleColor и хотите сопоставить его со значением «красный» в условии. В вашем условии вы ссылаетесь на сохраненное значение, используя session.params.exampleColor . Тогда выражение вашего условия будет выглядеть следующим образом:

session.params.exampleColor == "red"