Bộ nhớ nhà

Trong lệnh gọi webhook, bạn có thể lưu trữ các giá trị thông số trên nhiều phiên trong cùng một hộ gia đình (dựa trên Home Graph) trong bộ nhớ nhà. 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 câu lệnh và điều kiện, và mã webhook có thể truy cập vào các giá trị trong bộ nhớ của một hộ gia đình cụ thể khi cần.

Trạng thái của bộ nhớ trong nhà được truyền trong yêu cầu app.handle() và được lưu trữ trong đối tượng home.

Các điểm hạn chế

Bạn không thể sử dụng bộ nhớ trong nhà với các thiết bị di động, vì các thiết bị này không thuộc Biểu đồ nhà. Trong mã webhook, hãy sử dụng khả năng của thiết bị HOME_STORAGE để phân nhánh logic kinh doanh dựa trên khả năng của thiết bị.

Bạn phải chọn sử dụng bộ nhớ trong nhà:

  1. Trong bảng điều khiển Actions, hãy chuyển đến Deploy > Directory information (Triển khai > Thông tin thư mục).
  2. Trong phần Thông tin bổ sung, hãy đánh dấu vào hộp Bộ nhớ trong nhà.

Đọc và ghi dữ liệu trong gia đình

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

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

Để truy cập vào dữ liệu được lưu trữ trong bộ nhớ nhà, 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ớ trong nhà:

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

Để 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 sẽ xoá giá trị của "exampleColor" trong bộ nhớ tại nhà:

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

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ớ nhà trong một lời nhắc. Để tham chiếu giá trị, hãy sử dụng cú pháp $home.params.PARAMETER_NAME, trong đó PARAMETER_NAME là tên được cung cấp trong webhook khi tham số này được đặt.

Ví dụ: trước đây bạn đã lưu trữ một giá trị màu trong bộ nhớ nhà 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 $home.params.exampleColor:

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Your favorite color is $home.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ớ nhà trong conditions. Để tham chiếu giá trị, hãy sử dụng cú pháp home.params.PARAMETER_NAME, trong đó PARAMETER_NAME là tên được cung cấp trong webhook khi tham số này được đặt.

Ví dụ: trước đây bạn đã lưu trữ một giá trị màu trong bộ nhớ Home 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 home.params.exampleColor. Sau đó, 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

home.params.exampleColor == "red"
    

Hết hạn dữ liệu bộ nhớ trong nhà

Dữ liệu bộ nhớ trong ứng dụng Home bị xoá sạch sau 90 ngày liên tiếp kể từ khi Hành động không được gọi. Việc gọi Hành động trên bất kỳ thiết bị nào liên kết với cấu trúc Home Graph sẽ đặt lại bộ tính giờ 90 ngày. Nếu cấu trúc Home Graph bị xoá, dữ liệu bộ nhớ nhà tương ứng sẽ bị xoá.

Đối với Hành động sử dụng bộ nhớ trong nhà, trình quản lý cấu trúc Biểu đồ trang chủ có thể xoá bộ nhớ trong nhà cho các cấu trúc mà họ quản lý trên trang của Hành động đó trong thư mục Trợ lý:

  1. Tìm và chọn Hành động mà bạn muốn xem hoặc xoá bộ nhớ của người dùng.
  2. Di chuyển xuống cuối trang:
    • Để xoá dữ liệu được lưu trữ cho bạn trong bộ nhớ của nhà, hãy nhấp vào Ngừng action_name không ghi nhớ tôi.

Khi người quản lý thiết bị tách thiết bị khỏi cấu trúc, bộ nhớ trong nhà cũng bị huỷ liên kết. Dữ liệu bộ nhớ nhà riêng tiếp tục được liên kết với thiết bị ngay cả khi trình quản lý cấu trúc thay đổi, trừ khi người quản lý cấu trúc xoá dữ liệu đó.

Dữ liệu về bộ nhớ của nhà trong trình mô phỏng

Khi kiểm thử Hành động của bạn bằng trình mô phỏng trong bảng điều khiển Actions, dữ liệu được lưu trữ trong bộ nhớ nhà sẽ hoạt động hơi khác so với trên thiết bị thực. Trình mô phỏng được coi là một phần của Home Graph riêng, vì vậy, dữ liệu không tồn tại trên các thiết bị khác mà bạn có thể có trong mạng của mình. Ngoài ra, dữ liệu bộ nhớ trong nhà không tồn tại trong các phiên hoạt động khi bạn bật chế độ cài đặt trình mô phỏng Mô phỏng người dùng chưa được xác minh.

Tương tác mẫu

Dưới đây là hoạt động tương tác mẫu của người dùng đã đăng nhập trong lần gọi Hành động đầu tiên:

Yêu cầu của người dùng Ok Google, trò chuyện với ExampleAction.
Phản hồi của Trợ lý Nhận ExampleAction.
Phản hồi của Trợ lý Xin lưu ý rằng ExampleAction sẽ được lưu mỗi khi bạn chơi, vì vậy, những người khác trong gia đình bạn có thể tiếp tục từ nơi bạn đã dừng lại.
Phản hồi ExampleAction Xin chào người dùng đã xác minh. Bạn đang ở cấp 0. Nói tiếp theo, đặt lại hoặc huỷ.
Yêu cầu của người dùng Bài tiếp theo.
Phản hồi ExampleAction Bạn đang ở cấp 1.
Yêu cầu của người dùng Rời khỏi.

Sau đó, khi người dùng đã xác minh đó quay lại Hành động sau một khoảng thời gian:

Yêu cầu của người dùng Ok Google, trò chuyện với ExampleAction.
Phản hồi của Trợ lý Nhận ExampleAction.
Phản hồi ExampleAction Xin chào người dùng đã xác minh. Bạn đang ở cấp 1. Nói tiếp theo, đặt lại hoặc huỷ.
Yêu cầu của người dùng Bài tiếp theo.
Phản hồi ExampleAction Bạn đang ở cấp 2.
Yêu cầu của người dùng Rời khỏi.

Ngày hôm sau, một người dùng chưa được xác minh tương tác với Hành động trên một thiết bị khác trong cùng hộ gia đình (như được chỉ định trên Home Graph).

Yêu cầu của người dùng Ok Google, trò chuyện với ExampleAction.
Phản hồi của Trợ lý Nhận ExampleAction.
Phản hồi của Trợ lý Xin lưu ý rằng ExampleAction sẽ được lưu mỗi khi bạn chơi, vì vậy, những người khác trong gia đình bạn có thể tiếp tục từ nơi bạn đã dừng lại.
Phản hồi ExampleAction Xin chào người dùng là khách. Bạn đang ở cấp 2. Nói tiếp theo, đặt lại hoặc huỷ.
Yêu cầu của người dùng Bài tiếp theo.
Phản hồi ExampleAction Bạn đang ở cấp 3.
Yêu cầu của người dùng Rời khỏi.