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 cuộc trò chuyện trong bộ nhớ phiên. Sau đó, Hành động của bạn có thể dùng các giá trị được lưu trữ đó trong câu lệnh vào lúc khác và điều kiện khác và mã webhook của bạn có thể truy cập vào các giá trị trong bộ nhớ phiên cho cuộc trò chuyện khi cần thiết.

Trong một cuộc trò chuyện, mọi dữ liệu thu thập được bằng các loại đều được lưu trữ trong phiên bộ nhớ. Bạn cũng có thể tương tác với dữ liệu trong bộ nhớ phiên bằng cuộc gọi webhook. Đối với cuộc gọi webhook, trạng thái bộ nhớ phiên được chuyển vào 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ị cho Trường params của đối tượng session trong một cuộc gọi webhook. Ví dụ sau đây đặt "exampleColor" thành "đỏ" 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 webhook . Ví dụ sau đây truy xuất một giá trị từ "exampleColor" trong phiên bộ nhớ:

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

Để xóa giá trị đã lưu trước đó, hãy đặt giá trị thành null trong cuộc gọi webhook. Ví dụ sau 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 trên một lời nhắc. Để tham khảo giá trị, hãy sử dụng cú pháp $session.params.PARAMETER_NAME, trong đó PARAMETER_NAME là tên được cung cấp 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 thuộc tính tham số exampleColor. Để truy cập vào giá trị đó trong một câu lệnh, bạn cần tham chiếu đến 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 các đ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 điều kiện. Người nhận tham chiếu giá trị, sử dụng session.params.PARAMETER_NAME cú pháp, trong đó PARAMETER_NAME là tên được cung cấp 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 thuộc tính tham số exampleColor và bạn muốn khớp tham số đó với giá trị "red" theo phong cách . Trong điều kiện, bạn tham chiếu giá trị được lưu trữ bằng cách sử dụ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"