Pamięć sesji

W pamięci sesji możesz przechowywać wartości parametrów dla konkretnego użytkownika w rozmowie. Akcja może używać tych przechowywanych wartości później w promptach i warunkach, a kod webhooka może w razie potrzeby uzyskiwać dostęp do wartości w pamięci sesji na potrzeby rozmowy.

Podczas rozmowy wszystkie dane zebrane za pomocą typów są przechowywane w pamięci sesji. Z danych w pamięci sesji możesz też korzystać za pomocą wywołań webhooka. W przypadku wywołań webhooka stan pamięci sesji jest przekazywany w żądaniu app.handle() i przechowywany w obiekcie session.

Dane przechowywane w pamięci sesji wygasają po zakończeniu rozmowy.

Odczytywanie i zapisywanie danych w pamięci sesji

Aby zaktualizować lub ustawić nową wartość w pamięci sesji, przypisz wartość do pola params obiektu session w wywołaniu webhooka. W tym przykładzie ustawiliśmy wartość „exampleColor” na „red” w pamięci sesji:

Node.js

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

JSON

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

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

Node.js

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

JSON

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

Aby usunąć wcześniej zapisaną wartość, ustaw wartość na null w wywołaniu webhooka. Ten przykład usuwa wartość „exampleColor” z pamięci sesji:

Node.js

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

JSON

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

Odwoływanie się do zapisanych wartości w promptach

Wartości zapisane w pamięci sesji możesz odwoływać się w prompcie. Aby odwołać się do wartości, użyj składni $session.params.PARAMETER_NAME, gdzie PARAMETER_NAME to nazwa podana w webhooku podczas ustawiania parametru.

Załóżmy na przykład, że w pamięci sesji została wcześniej zapisana wartość koloru jako parametr exampleColor. Aby uzyskać dostęp do tej wartości w prompcie, odwołuj się do niej za pomocą funkcji $session.params.exampleColor:

JSON

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

Utwórz odwołanie do zapisanych wartości zgodnie z warunkami

Wartości przechowywane w pamięci sesji możesz też odwoływać się w conditions. Aby odwołać się do wartości, użyj składni session.params.PARAMETER_NAME, gdzie PARAMETER_NAME to nazwa podana w webhooku podczas ustawiania parametru.

Załóżmy na przykład, że w pamięci sesji jako parametr exampleColor była zapisana wartość koloru, a teraz chcesz dopasować ją do wartości „red” (czerwony) w warunku. W warunku możesz się odwoływać do zapisanej wartości za pomocą funkcji session.params.exampleColor. Wyrażenie warunku będzie wtedy wyglądać tak:

Składnia warunku

session.params.exampleColor == "red"