Пользовательское хранилище

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

Состояние хранилища пользователя передается в запросе app.handle() и сохраняется в объекте user .

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

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

Node.js

// Assign color to user storage
app.handle('storeColor', conv => {
  let color = 'red';
  conv.user.params.exampleColor = color;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "user": {
      "locale": "en-US",
      "params": {
        "verificationStatus": "VERIFIED",
        "exampleColor": "red"
      }
    }
  }
}
    

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

Node.js

// Retrieve color from user storage
app.handle('getStoredColor', conv => {
  let color = conv.user.params.exampleColor;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "user": {
      "locale": "en-US",
      "params": {
        "verificationStatus": "VERIFIED",
        "exampleColor": "red"
      }
    }
  }
}
    

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

Node.js

// Clear color from user storage
app.handle('clearStoredColor', conv => {
  conv.user.params.exampleColor = null;
});
    

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "user": {
      "locale": "en-US",
      "params": {
        "verificationStatus": "VERIFIED"
      }
    }
  }
}
    

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

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

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

JSON

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

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

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

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

Синтаксис условия

user.params.exampleColor == "red"
    

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

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

Действия в Google устанавливают статус проверки пользователя в начале каждого разговора на основе различных индикаторов начала разговора. Например, пользователь, вошедший в Google Assistant на своем мобильном устройстве, имеет статус проверки VERIFIED .

Ниже приведены возможные причины, по которым пользователь имеет статус проверки GUEST :

  • У пользователя отключены персональные результаты .
  • Пользователь отключил свою историю приложений и веб-поиска . Имейте в виду, что у некоторых пользователей этот параметр может быть отключен на уровне домена.
  • Если на устройстве включено Voice Match, и сопоставление не удалось или пользователь вызывает Ассистента, не используя свой голос (например, долгое нажатие на устройстве Nest Home).
  • Пользователь не вошел в систему.

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

Видимость для пользователей

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

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

  1. Перейдите в каталог Ассистента .
  2. Найдите и выберите действие, для которого вы хотите просмотреть или очистить пользовательское хранилище.
  3. Прокрутите страницу вниз:
    • Чтобы просмотреть содержимое вашего пользовательского хранилища, нажмите [Просмотреть сохраненные данные] .
    • Чтобы сбросить данные, хранящиеся в вашем пользовательском хранилище сервиса, нажмите «Сбросить» .
    • Чтобы удалить данные, хранящиеся в вашем пользовательском хранилище, и запретить службе запоминать вас, нажмите «Запретить action_name запоминать меня» .