Bộ nhớ dựa trên phiên hoạt động

Bạn có thể lưu trữ các giá trị thông số cho một người dùng cụ thể trong một cuộc trò chuyện trong bộ nhớ phiên. Sau đó, Hành động của bạn có thể sử dụng các giá trị được lưu trữ đó vào lúc khác trong lời nhắc và điều kiện, đồng thời mã webhook có thể truy cập vào các giá trị trong bộ nhớ phiên hoạt động cho cuộc trò chuyện khi cần.

Trong một cuộc trò chuyện, mọi dữ liệu được thu thập bằng loại sẽ được lưu trữ trong bộ nhớ phiên. Bạn cũng có thể tương tác với dữ liệu trong bộ nhớ phiên bằng cách sử dụng lệnh gọi webhook. Đối với các lệnh gọi webhook, trạng thái bộ nhớ phiên được chuyển trong yêu cầu app.handle() và được lưu trữ trong đối tượng session.

Dữ liệu được lưu trữ trong bộ nhớ phiên sẽ hết hạn khi cuộc trò chuyện kết thúc.

Đọc và ghi dữ liệu vào bộ nhớ phiên

Để cập nhật hoặc đặt một giá trị mới trong bộ nhớ phiên, hãy chỉ định giá trị này cho trường params của đối tượng session trong lệnh gọi webhook. Ví dụ sau đây đặt "exampleColor" thành "red" trong bộ nhớ phiên:

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

Để truy cập vào dữ liệu được lưu trữ trong bộ nhớ phiên, hãy chỉ định dữ liệu đó cho một biến trong lệnh gọi webhook. Ví dụ sau đây truy xuất giá trị từ "exampleColor" trong bộ nhớ phiên:

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

Để xoá một giá trị đã lưu trước đó, hãy đặt giá trị thành null trong cuộc gọi webhook. Ví dụ sau đây xoá giá trị của "exampleColor" trong bộ nhớ phiên:

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

Tham chiếu các giá trị được lưu trữ trong câu lệnh

Bạn có thể tham chiếu các giá trị được lưu trữ trong bộ nhớ phiên trong một lời nhắc. Để tham chiếu giá trị, hãy sử dụng cú pháp $session.params.PARAMETER_NAME, trong đó PARAMETER_NAME là tên được đặt trong webhook khi thông số được đặt.

Ví dụ: trước đây bạn đã lưu trữ một giá trị màu trong bộ nhớ phiên dưới dạng tham số exampleColor. Để truy cập vào giá trị đó trong một lời nhắc, bạn phải tham chiếu giá trị đó bằng $session.params.exampleColor:

JSON

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

Tham chiếu các giá trị được lưu trữ trong điều kiện

Bạn cũng có thể tham chiếu các giá trị được lưu trữ trong bộ nhớ phiên trong conditions. Để tham chiếu giá trị, hãy sử dụng cú pháp session.params.PARAMETER_NAME, trong đó PARAMETER_NAME là tên được đặt trong webhook khi thông số này được đặt.

Ví dụ: trước đây bạn đã lưu trữ một giá trị màu trong bộ nhớ phiên dưới dạng tham số exampleColor và bạn muốn so khớp giá trị đó với giá trị "red" trong một điều kiện. Trong điều kiện của bạn, bạn sẽ tham chiếu giá trị được lưu trữ bằng session.params.exampleColor. Khi đó, biểu thức điều kiện của bạn sẽ có dạng như sau:

Cú pháp điều kiện

session.params.exampleColor == "red"