Stockage domestique

Dans un appel webhook, vous pouvez stocker les valeurs des paramètres sur plusieurs sessions du même foyer (en fonction du Home Graph) dans l'espace de stockage de la maison. Votre action peut ensuite utiliser ces valeurs stockées ultérieurement dans des invites et des conditions, et votre code de webhook peut accéder aux valeurs de l'espace de stockage de la maison pour un foyer spécifique si nécessaire.

L'état du stockage de la maison est transmis dans une requête app.handle() et stocké dans l'objet home.

Limites

Vous ne pouvez pas utiliser l'espace de stockage de la maison avec des appareils mobiles, car ils ne font pas partie d'un Home Graph. Dans votre code de webhook, utilisez la capacité d'appareil HOME_STORAGE pour associer la logique métier en fonction des capacités de l'appareil de l'utilisateur.

Vous devez activer l'utilisation de l'espace de stockage personnel:

  1. Dans la console Actions, accédez à Déployer > Informations sur l'annuaire.
  2. Dans la section Informations supplémentaires, cochez la case Espace de stockage personnel.

Lire et écrire des données dans un foyer

Pour mettre à jour ou définir une nouvelle valeur dans l'espace de stockage de la maison, attribuez-la au champ params de l'objet home dans un appel webhook. L'exemple suivant définit "exampleColor" sur "red" dans l'espace de stockage de la maison:

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

Pour accéder aux données stockées dans l'espace de stockage de la maison, attribuez-les à une variable dans un appel webhook. L'exemple suivant récupère une valeur de "exampleColor" dans le stockage de la maison:

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

Pour effacer une valeur précédemment enregistrée, définissez-la sur null dans un appel webhook. L'exemple suivant efface la valeur de "exampleColor" dans l'espace de stockage de la maison:

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

Référencer des valeurs stockées dans des requêtes

Vous pouvez référencer les valeurs stockées dans votre espace de stockage personnel dans une invite. Pour référencer cette valeur, utilisez la syntaxe $home.params.PARAMETER_NAME, où PARAMETER_NAME est le nom donné dans le webhook lorsque le paramètre a été défini.

Par exemple, vous avez précédemment stocké une valeur de couleur dans un espace de stockage de la maison en tant que paramètre exampleColor. Pour accéder à cette valeur dans une invite, vous devez la référencer à l'aide de $home.params.exampleColor:

JSON

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

Référencer des valeurs stockées dans des conditions

Vous pouvez également référencer des valeurs stockées dans l'espace de stockage de la maison dans des conditions. Pour référencer cette valeur, utilisez la syntaxe home.params.PARAMETER_NAME, où PARAMETER_NAME est le nom donné dans le webhook lorsque le paramètre a été défini.

Par exemple, vous avez précédemment stocké une valeur de couleur dans l'espace de stockage de la maison en tant que paramètre exampleColor et vous souhaitez l'associer à la valeur "red" dans une condition. Dans votre condition, vous référencez la valeur stockée à l'aide de home.params.exampleColor. Votre expression de condition se présente alors comme suit:

Syntaxe de la condition

home.params.exampleColor == "red"
    

Expiration des données de stockage de votre domicile

Les données de stockage de la maison sont effacées au bout de 90 jours consécutifs lorsque l'action n'est pas appelée. Si vous appelez l'action sur un appareil associé à la structure Home Graph, le minuteur de 90 jours est réinitialisé. Si une structure Home Graph est supprimée, les données de stockage de la maison correspondantes sont effacées.

Pour les actions qui utilisent l'espace de stockage de la maison, les gestionnaires de structure Home Graph peuvent effacer l'espace de stockage personnel des structures qu'ils gèrent depuis la page de l'action dans le répertoire de l'Assistant:

  1. Recherchez et sélectionnez l'action pour laquelle vous souhaitez afficher ou effacer l'espace de stockage de votre utilisateur.
  2. Faites défiler la page jusqu'en bas :
    • Pour supprimer les données stockées pour vous dans l'espace de stockage de votre maison, cliquez sur Empêcher action_name de se souvenir de moi.

Lorsque le gestionnaire d'un appareil le dissocie de la structure, le stockage personnel est également dissocié. Les données de stockage de la maison continuent d'être associées à un appareil même si le gestionnaire de structure change, sauf si un gestionnaire de structure les efface.

Données de stockage de la maison dans le simulateur

Lorsque vous testez votre action à l'aide du simulateur dans la console Actions, les données stockées dans l'espace de stockage de la maison se comportent légèrement différemment sur un appareil physique. Le simulateur est considéré comme faisant partie de son propre Home Graph. Les données ne sont donc pas conservées sur les autres appareils de votre réseau. De plus, les données de stockage de la maison ne sont pas conservées d'une session à l'autre lorsque le paramètre Simuler un utilisateur non validé est activé.

Exemple d'interaction

Voici un exemple d'interaction avec un utilisateur connecté lors de son premier appel de l'action:

User query Hey Google, parle à ExampleAction.
Réponse de l'Assistant Obtenir ExampleAction.
Réponse de l'Assistant Sachez qu'ExampleAction est enregistré chaque fois que vous le lisez. Ainsi, les autres membres de votre foyer peuvent reprendre là où vous vous étiez arrêté.
Réponse ExampleAction Bonjour, Vous êtes au niveau 0. Dites "Suivant", "Réinitialiser" ou "Annuler".
User query "Suivant".
Réponse ExampleAction Vous avez atteint le niveau 1.
User query Quitter.

Ensuite, lorsque le même utilisateur validé revient à l'action après un certain temps:

User query Hey Google, parle à ExampleAction.
Réponse de l'Assistant Obtenir ExampleAction.
Réponse ExampleAction Bonjour, Vous avez atteint le niveau 1. Dites "Suivant", "Réinitialiser" ou "Annuler".
User query "Suivant".
Réponse ExampleAction Vous avez atteint le niveau 2.
User query Quitter.

Le lendemain, un utilisateur non validé interagit avec l'action sur un autre appareil du même foyer (comme spécifié sur Home Graph).

User query Hey Google, parle à ExampleAction.
Réponse de l'Assistant Obtenir ExampleAction.
Réponse de l'Assistant Sachez qu'ExampleAction est enregistré chaque fois que vous le lisez. Ainsi, les autres membres de votre foyer peuvent reprendre là où vous vous étiez arrêté.
Réponse ExampleAction Bonjour, Vous avez atteint le niveau 2. Dites "Suivant", "Réinitialiser" ou "Annuler".
User query "Suivant".
Réponse ExampleAction Vous avez atteint le niveau 3.
User query Quitter.