Przechowywanie w domu

W wywołaniu webhooka możesz przechowywać w domu wartości parametrów w wielu sesjach w tym samym gospodarstwie domowym (na podstawie Grafu domowego). Akcja może później użyć tych zapisanych wartości w podpowiedziach i warunkach, a w razie potrzeby kod webhooka uzyska dostęp do wartości w pamięci dla określonego domu.

Stan pamięci domowej jest przekazywany w żądaniu app.handle() i przechowywany w obiekcie home.

Ograniczenia

Nie można używać pamięci domowej na urządzeniach mobilnych, ponieważ nie są one częścią wykresu Home. W kodzie webhooka używaj funkcji urządzenia HOME_STORAGE, aby rozgałęziać logikę biznesową w zależności od możliwości danego urządzenia użytkownika.

Musisz wyrazić zgodę na korzystanie z pamięci domowej:

  1. W konsoli Actions kliknij Deploy (Wdróż) > Katalog – informacje.
  2. W sekcji Dodatkowe informacje zaznacz pole Pamięć domowa.

Odczytywanie i zapisywanie danych w gospodarstwie domowym

Aby zaktualizować lub ustawić nową wartość w pamięci domowej, przypisz wartość w polu params obiektu home w wywołaniu webhooka. W tym przykładzie ustawiana wartość „exampleColor” na „red” w pamięci domowej:

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

Aby uzyskać dostęp do danych przechowywanych w pamięci domowej, przypisz je do zmiennej w wywołaniu webhooka. Ten przykładowy kod pobiera wartość z przykładu „exampleColor” w pamięci domowej:

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

Aby usunąć zapisaną wcześniej wartość, ustaw wywołanie null na wartość wywołania webhooka. Poniższy przykład powoduje usunięcie wartości „exampleColor” z pamięci domowej:

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

Odwoływanie się do przechowywanych wartości w podpowiedziach

Wartości możesz zapisać w prośbie. Aby odwołać się do wartości, użyj składni $home.params.PARAMETER_NAME, gdzie PARAMETER_NAME to nazwa podana w webhooku podczas ustawiania parametru.

Na przykład wcześniej kolor zapisany w pamięci domowej był parametrem exampleColor. Aby uzyskać dostęp do tej wartości w komunikacie, odwołuj się do niej za pomocą atrybutu $home.params.exampleColor:

JSON

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

Odwoływanie się do przechowywanych wartości w warunkach

Możesz też odwoływać się do wartości przechowywanych w pamięci domowej w warunkach. Aby odwołać się do wartości, użyj składni home.params.PARAMETER_NAME, gdzie PARAMETER_NAME to nazwa podana w webhooku podczas ustawiania parametru.

Na przykład wcześniej kolor w pamięci domowej został zapisany jako parametr exampleColor, a Ty chcesz dopasować go do wartości „red” w warunku. W warunku musisz odwoływać się do zapisanej wartości za pomocą home.params.exampleColor. Wyrażenie warunku będzie wyglądać np. tak:

Składnia warunków

home.params.exampleColor == "red"
    

Wygaśnięcie danych przechowywanych w domu

Dane w pamięci domowej są usuwane po 90 dniach od momentu, gdy działanie nie zostanie wywołane. Wywołanie akcji na dowolnym urządzeniu powiązanym ze strukturą Home Home spowoduje zresetowanie licznika 90 dni. Jeśli struktura Home Graph zostanie usunięta, odpowiednie dane pamięci domowej zostaną wyczyszczone.

W przypadku działań, które korzystają z pamięci domowej, menedżer konfiguracji struktury domu może wyczyścić pamięć domową dla struktur, którymi zarządza, na stronie Działania w katalogu Asystenta:

  1. Znajdź i wybierz działanie, dla którego chcesz wyświetlić lub wyczyścić pamięć użytkownika.
  2. Przewiń do dołu strony:
    • Aby usunąć dane przechowywane na Twoim koncie domowym, kliknij Nie zapisuj mnie w domenie action_name.

Gdy menedżer urządzenia odłączy je od struktury, zostanie też odłączona pamięć domowa. Dane w pamięci domowej są nadal powiązane z urządzeniem, nawet jeśli menedżer domu się zmieni, chyba że menedżer lokalizacji go usunie.

Dane pamięci domowej w symulatorze

Podczas testowania akcji za pomocą symulatora w konsoli Actions dane przechowywane w pamięci domowej działają trochę inaczej niż na urządzeniach fizycznych. Symulator jest uważany za część własnego wykresu głównego, więc dane nie są przechowywane na innych urządzeniach, które masz w sieci. Poza tym dane zapisane w pamięci domowej nie są zachowywane po zakończeniu sesji, gdy włączone jest symulator symulowania niezweryfikowanego użytkownika.

Przykładowa interakcja

Oto przykładowa interakcja zalogowanego użytkownika przy pierwszym wywołaniu działania:

Zapytanie użytkownika OK Google, porozmawiaj z aplikacją ExampleAction.
Odpowiedź Asystenta Pobieram przykładowe działanie.
Odpowiedź Asystenta Pamiętaj, że przykładowa akcja jest zapisywana za każdym razem, gdy grasz, więc inni domownicy mogą kontynuować grę od miejsca, w którym została przerwana.
Przykładowa akcja Dzień dobry. Jesteś na poziomie 0. Powiedz dalej, zresetuj lub anuluj.
Zapytanie użytkownika Dalej.
Przykładowa akcja Jesteś na poziomie 1.
Zapytanie użytkownika Zamknij.

Gdy po pewnym czasie ten sam zweryfikowany użytkownik wróci do działania:

Zapytanie użytkownika OK Google, porozmawiaj z aplikacją ExampleAction.
Odpowiedź Asystenta Pobieram przykładowe działanie.
Przykładowa akcja Dzień dobry. Jesteś na poziomie 1. Powiedz dalej, zresetuj lub anuluj.
Zapytanie użytkownika Dalej.
Przykładowa akcja Jesteś na poziomie 2.
Zapytanie użytkownika Zamknij.

Następnego dnia niezweryfikowany użytkownik wchodzi w interakcję z działaniem na innym urządzeniu w tym samym gospodarstwie domowym (jak podano na wykresie Home).

Zapytanie użytkownika OK Google, porozmawiaj z aplikacją ExampleAction.
Odpowiedź Asystenta Pobieram przykładowe działanie.
Odpowiedź Asystenta Pamiętaj, że przykładowa akcja jest zapisywana za każdym razem, gdy grasz, więc inni domownicy mogą kontynuować grę od miejsca, w którym została przerwana.
Przykładowa akcja Dzień dobry, Jesteś na poziomie 2. Powiedz dalej, zresetuj lub anuluj.
Zapytanie użytkownika Dalej.
Przykładowa akcja Jesteś na poziomie 3.
Zapytanie użytkownika Zamknij.