Домашнее хранилище

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

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

Ограничения

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

Вы должны согласиться на использование домашнего хранилища:

  1. В консоли «Действия» выберите «Развертывание» > «Информация о каталоге» .
  2. В разделе «Дополнительная информация» установите флажок « Домашнее хранилище» .

Чтение и запись данных в домашнем хозяйстве

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

Node.js

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

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "home": {
      "params": {
        "exampleColor": "red"
      }
    }
  }
}
    

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

Node.js

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

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "home": {
      "params": {
        "homeColor": "red"
      }
    }
  }
}
    

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

Node.js

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

JSON

{
  "responseJson": {
    "session": {
      "id": "1234567890123456789",
      "params": {}
    },
    "prompt": {
      "override": false
    },
    "home": {
      "params": {}
    }
  }
}
    

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

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

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

JSON

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

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

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

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

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

home.params.exampleColor == "red"
    

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

Данные домашнего хранилища удаляются через 90 дней подряд, если Действие не вызывается. Вызов действия на любом устройстве, связанном со структурой Home Graph, сбрасывает 90-дневный таймер. Если структура Home Graph удаляется, соответствующие данные домашнего хранилища очищаются.

Для действий, использующих домашнее хранилище, менеджеры структур Home Graph могут очистить домашнее хранилище для структур, которыми они управляют, на странице действия в каталоге Assistant :

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

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

Данные домашнего хранилища в симуляторе

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

Пример взаимодействия

Вот пример взаимодействия вошедшего пользователя при первом вызове действия:

Пользовательский запрос Привет, Google, поговори с exampleAction.
Ответ Ассистента Получение Примера действия.
Ответ Ассистента Просто чтобы вы знали: «ExampleAction» сохраняется каждый раз, когда вы в него играете, поэтому другие члены вашей семьи могут продолжить с того места, где вы остановились.
Пример ответа на действие Здравствуйте проверенный пользователь. Вы находитесь на уровне 0. Скажите «Далее», «Сброс» или «Отмена».
Пользовательский запрос Следующий.
Пример ответа на действие Вы находитесь на уровне 1.
Пользовательский запрос Оставлять.

Затем, когда тот же проверенный пользователь через некоторое время возвращается к Действию:

Пользовательский запрос Привет, Google, поговори с exampleAction.
Ответ Ассистента Получение Примера действия.
Пример ответа на действие Здравствуйте проверенный пользователь. Вы находитесь на уровне 1. Скажите «Далее», «Сбросить» или «Отменить».
Пользовательский запрос Следующий.
Пример ответа на действие Вы находитесь на уровне 2.
Пользовательский запрос Оставлять.

На следующий день непроверенный пользователь взаимодействует с Действием на другом устройстве в том же доме (как указано на Домашнем графике).

Пользовательский запрос Привет, Google, поговори с exampleAction.
Ответ Ассистента Получение Примера действия.
Ответ Ассистента Просто чтобы вы знали: «ExampleAction» сохраняется каждый раз, когда вы в него играете, поэтому другие члены вашей семьи могут продолжить с того места, где вы остановились.
Пример ответа на действие Здравствуйте, гость. Вы находитесь на уровне 2. Скажите «Далее», «Сбросить» или «Отменить».
Пользовательский запрос Следующий.
Пример ответа на действие Вы находитесь на уровне 3.
Пользовательский запрос Оставлять.