Almacenamiento de la casa

En una llamada de webhook, puedes almacenar los valores de parámetros en varias sesiones de la misma familia (según Home Graph) en el almacenamiento de la casa. Luego, tu Acción puede usar esos valores almacenados en los mensajes y condiciones, y el código de webhook puede acceder a los valores del almacenamiento en la casa para un grupo familiar específico cuando sea necesario.

El estado del almacenamiento de la casa se pasa en una solicitud app.handle() y se almacena en el objeto home.

Limitaciones

El almacenamiento de Home no se puede usar con dispositivos móviles, ya que no forman parte de Home Graph. En tu código de webhook, usa la capacidad del dispositivo HOME_STORAGE para ramificar la lógica empresarial en función de las capacidades del dispositivo del usuario.

Para usar el almacenamiento de la casa, debes aceptar lo siguiente:

  1. En la Consola de Actions, ve a Implementar > Información del directorio.
  2. En la sección Additional Information, marca la casilla Home storage.

Lee y escribe datos en un grupo familiar

Para actualizar o establecer un valor nuevo en el almacenamiento de la casa, asigna el valor al campo params del objeto home en una llamada de webhook. En el siguiente ejemplo, se configura "exampleColor" como "red" en el almacenamiento de la casa:

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"
      }
    }
  }
}
    

Para acceder a los datos almacenados en el almacenamiento de la casa, asígnalos a una variable en una llamada de webhook. En el siguiente ejemplo, se recupera un valor de “exampleColor” en el almacenamiento de la casa:

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"
      }
    }
  }
}
    

Para borrar un valor guardado previamente, configúralo como null en una llamada de webhook. En el siguiente ejemplo, se borra el valor de “exampleColor” del almacenamiento de la casa:

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": {}
    }
  }
}
    

Cómo hacer referencia a valores almacenados en los mensajes

Puedes hacer referencia a valores almacenados en el almacenamiento de la casa en un mensaje. Para hacer referencia al valor, usa la sintaxis $home.params.PARAMETER_NAME, en la que PARAMETER_NAME es el nombre que se asignó en el webhook cuando se configuró el parámetro.

Por ejemplo, antes almacenaste un valor de color en el almacenamiento de la casa como el parámetro exampleColor. Para acceder a ese valor en un mensaje, debes hacer referencia a ese valor con $home.params.exampleColor:

JSON

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

Haz referencia a valores almacenados en condiciones

También puedes hacer referencia a valores almacenados en el almacenamiento de la casa en conditions. Para hacer referencia al valor, usa la sintaxis home.params.PARAMETER_NAME, en la que PARAMETER_NAME es el nombre que se proporcionó en el webhook cuando se configuró el parámetro.

Por ejemplo, antes almacenaste un valor de color en el almacenamiento de la casa como el parámetro exampleColor y quieres hacerlo coincidir con el valor "rojo" en una condición. En tu condición, debes hacer referencia al valor almacenado mediante home.params.exampleColor. Tu expresión de condición se ve de la siguiente manera:

Sintaxis de condiciones

home.params.exampleColor == "red"
    

Vencimiento de los datos de almacenamiento de la casa

Los datos de almacenamiento de Home se borran 90 días consecutivos desde que no se invoca la acción. Cuando se invoca la acción en cualquier dispositivo asociado con la estructura de Home Graph, se restablece el temporizador de 90 días. Si se borra una estructura de Home Graph, también se borran los datos de almacenamiento de la casa correspondientes.

En el caso de las acciones que usan el almacenamiento de la casa, los administradores de las estructuras de Home Graph pueden liberar almacenamiento de las estructuras que administran desde la página de la acción en el directorio del Asistente:

  1. Busca y selecciona la acción para la que quieras ver o liberar espacio de almacenamiento del usuario.
  2. Desplázate hasta la parte inferior de la página:
    • Para quitar datos guardados en el almacenamiento de la casa, haz clic en No permitir que action_name me recuerde.

Cuando el administrador de un dispositivo lo separa de la estructura, el almacenamiento de la casa también se desvincula. Los datos de almacenamiento de la casa se seguirán asociando con un dispositivo, incluso si cambia el administrador de la estructura, a menos que este los borre.

Datos de almacenamiento de la casa en el simulador

Cuando pruebas tu acción con el simulador de la Consola de Actions, los datos almacenados en el almacenamiento de la casa se comportan de manera un poco diferente que en un dispositivo físico. El simulador se considera parte de su propio Home Graph, por lo que los datos no se conservan en otros dispositivos que puedas tener en tu red. Además, los datos de almacenamiento de la casa no se conservan entre sesiones cuando se habilita la configuración del simulador Simular usuario no verificado.

Interacción de muestra

A continuación, se incluye una interacción de ejemplo de un usuario que accedió en su primera invocación de la acción:

Consulta del usuario Hey Google, habla con AcciónDeEjemplo.
Respuesta del Asistente Cómo obtener ExampleAction.
Respuesta del Asistente Ten en cuenta que ExampleAction se guarda cada vez que la juegas para que otros miembros de tu familia puedan retomarla donde la dejaste.
Respuesta de ExampleAction Hola usuario verificado. Estás en el nivel 0. Di Siguiente, Restablecer o Cancelar.
Consulta del usuario "Siguiente".
Respuesta de ExampleAction Estás en el nivel 1.
Consulta del usuario Abandonar.

Luego, cuando el mismo usuario verificado vuelva a la Acción después de un tiempo, sucederá lo siguiente:

Consulta del usuario Hey Google, habla con AcciónDeEjemplo.
Respuesta del Asistente Cómo obtener ExampleAction.
Respuesta de ExampleAction Hola usuario verificado. Estás en el nivel 1. Di Siguiente, Restablecer o Cancelar.
Consulta del usuario "Siguiente".
Respuesta de ExampleAction Estás en el nivel 2.
Consulta del usuario Abandonar.

Al día siguiente, un usuario no verificado interactúa con la acción en otro dispositivo de la misma familia (como se especifica en Home Graph).

Consulta del usuario Hey Google, habla con AcciónDeEjemplo.
Respuesta del Asistente Cómo obtener ExampleAction.
Respuesta del Asistente Ten en cuenta que ExampleAction se guarda cada vez que la juegas para que otros miembros de tu familia puedan retomarla donde la dejaste.
Respuesta de ExampleAction Hola usuario invitado. Estás en el nivel 2. Di Siguiente, Restablecer o Cancelar.
Consulta del usuario "Siguiente".
Respuesta de ExampleAction Estás en el nivel 3.
Consulta del usuario Abandonar.