Lược đồ thuộc tính phân phối nhà thông minh

action.devices.traits.Dispense – Đặc điểm này thuộc về những thiết bị hỗ trợ việc phân phát một số lượng cụ thể của một hoặc nhiều mặt hàng thực tế.

Đặc điểm này cũng hỗ trợ phân phát một chế độ cài đặt sẵn, ví dụ: "bát đựng thức ăn cho mèo" cho thiết bị cho thú cưng ăn hoặc "cốc" cho vòi nước.

THUỘC TÍNH của thiết bị

Các thiết bị có đặc điểm này có thể báo cáo các thuộc tính sau đây trong thao tác SYNC. Để tìm hiểu thêm về cách xử lý ý định SYNC, hãy xem phần Thực hiện ý định.

Thuộc tính Loại Mô tả
supportedDispenseItems Mảng

Chứa thông tin về tất cả các mặt hàng mà thiết bị có thể phân phối.

[item, ...] Đối tượng

Mặt hàng có thể bỏ qua.

item_name String

Bắt buộc.

Tên nội bộ của mặt hàng được phân phát. Điều này có thể gây khó chịu cho người dùng và được chia sẻ trên tất cả các ngôn ngữ.

item_name_synonyms Mảng

Bắt buộc.

Tên từ đồng nghĩa cho các mặt hàng được phân phát bằng từng ngôn ngữ được hỗ trợ.

[item, ...] Đối tượng

Tên đồng nghĩa của mặt hàng được phân phát bằng một ngôn ngữ nhất định. Bạn phải có ít nhất một mặt hàng có giá trị langen để cung cấp ngôn ngữ dự phòng.

synonyms Mảng

Bắt buộc.

Tên đồng nghĩa của mặt hàng được phân phát. Từ đồng nghĩa phải bao gồm cả dạng số ít và số nhiều (nếu có). Chuỗi đầu tiên trong danh sách này phải là dạng số nhiều của mặt hàng bằng ngôn ngữ đó.

[item, ...] String

Tên từ đồng nghĩa. Bạn phải có ít nhất một mặt hàng có giá trị langen để cung cấp ngôn ngữ dự phòng.

lang String

Bắt buộc.

Mã ngôn ngữ (ISO 639-1). Xem các ngôn ngữ được hỗ trợ.

supported_units Mảng

Bắt buộc.

Tập hợp các đơn vị mà thiết bị hỗ trợ cho mặt hàng đó.

[item, ...] String

Các đơn vị được hỗ trợ.

Các giá trị được hỗ trợ:

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
default_portion Đối tượng

Bắt buộc.

Số lượng điển hình của mặt hàng có thể được phân phát.

amount Số nguyên

Bắt buộc.

Số tiền đã rút.

unit String

Bắt buộc.

Đơn vị được phân phối.

supportedDispensePresets Mảng

Các chế độ đặt sẵn mà thiết bị hỗ trợ.

[item, ...] Đối tượng

Giá trị đặt sẵn.

preset_name String

Bắt buộc.

Tên nội bộ của chế độ đặt sẵn. Tên này có thể không thân thiện với người dùng và được dùng chung cho tất cả các ngôn ngữ.

preset_name_synonyms Mảng

Bắt buộc.

Tên đồng nghĩa cho chế độ đặt sẵn bằng từng ngôn ngữ được hỗ trợ.

[item, ...] Đối tượng

Tên đồng nghĩa cho chế độ đặt sẵn bằng một ngôn ngữ nhất định.

synonyms Mảng

Bắt buộc.

Tên đồng nghĩa cho giá trị đặt sẵn. Từ đồng nghĩa phải bao gồm cả dạng số ít và số nhiều (nếu có).

[item, ...] String

Tên từ đồng nghĩa

lang String

Bắt buộc.

Mã ngôn ngữ (ISO 639-1). Xem các ngôn ngữ được hỗ trợ.

Ví dụ

Máy rót nước hỗ trợ các đơn vị đo chất lỏng có giá trị đặt sẵn.

{
  "supportedDispenseItems": [
    {
      "item_name": "Water",
      "item_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Water"
          ]
        }
      ],
      "supported_units": [
        "TEASPOONS",
        "TABLESPOONS",
        "FLUID_OUNCES",
        "CUPS",
        "PINTS",
        "QUARTS",
        "GALLONS",
        "MILLILITERS",
        "LITERS",
        "DECILITERS"
      ],
      "default_portion": {
        "amount": 2,
        "unit": "CUPS"
      }
    }
  ],
  "supportedDispensePresets": [
    {
      "preset_name": "cat_bowl",
      "preset_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Cat water bowl",
            "Cat water dish",
            "Cat water cup"
          ]
        }
      ]
    },
    {
      "preset_name": "glass_1",
      "preset_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Glass of water",
            "Glass"
          ]
        }
      ]
    }
  ]
}

Máy cho thú cưng ăn tự động không có chế độ cài đặt sẵn.

{
  "supportedDispenseItems": [
    {
      "item_name": "Treat",
      "item_name_synonyms": [
        {
          "lang": "en",
          "synonyms": [
            "Treats",
            "Dog treats",
            "Treat",
            "Dog treat"
          ]
        }
      ],
      "supported_units": [
        "NO_UNITS"
      ],
      "default_portion": {
        "amount": 1,
        "unit": "NO_UNITS"
      }
    }
  ]
}

TRẠNG THÁI thiết bị

Các thực thể có đặc điểm này có thể báo cáo các trạng thái sau đây trong quá trình hoạt động QUERY. Để tìm hiểu thêm về cách xử lý ý định QUERY, hãy xem phần Thực hiện ý định.

Tiểu bang Loại Mô tả
dispenseItems Mảng

Trạng thái của các mặt hàng mà thiết bị có thể phân phối.

[item, ...] Đối tượng

Trạng thái của một mặt hàng cụ thể.

itemName String

Tên của mặt hàng trong thuộc tính item_name.

amountRemaining Đối tượng

Số lượng mặt hàng còn lại trong thiết bị. Nếu thiết bị hiện đang phân phát, thì thông tin này sẽ báo cáo số lượng còn lại hoặc số lượng sẽ có sau khi thiết bị phân phát xong.

amount Number

Số tiền còn lại

unit String

Đơn vị của amount trong thuộc tính supported_units.

amountLastDispensed Đối tượng

Số lượng mặt hàng mà thiết bị đã phân phát gần đây nhất. Nếu thiết bị hiện đang phân phát, thì thông tin này sẽ báo cáo số lượng đã phân phát trước số lượng phân phát hiện tại.

amount Number

Số tiền còn lại

unit String

Đơn vị của amount trong thuộc tính supported_units.

isCurrentlyDispensing Boolean

Cho biết liệu thiết bị có đang phân phát mặt hàng này hay không.

Ví dụ

Máy phân phát còn bao nhiêu bánh thưởng cho chó?

{
  "dispenseItems": [
    {
      "itemName": "Dog treats",
      "amountRemaining": {
        "amount": 83,
        "unit": "NO_UNITS"
      },
      "amountLastDispensed": {
        "amount": 2,
        "unit": "NO_UNITS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Bình nước của tôi còn bao nhiêu nước?

{
  "dispenseItems": [
    {
      "itemName": "Water",
      "amountRemaining": {
        "amount": 6.2,
        "unit": "GALLONS"
      },
      "amountLastDispensed": {
        "amount": 1,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Trước đây tôi đã cho mèo ăn bao nhiêu thức ăn?

{
  "dispenseItems": [
    {
      "itemName": "cat_food",
      "amountRemaining": {
        "amount": 16.5,
        "unit": "CUPS"
      },
      "amountLastDispensed": {
        "amount": 2.5,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Vòi nước có còn chảy không?

{
  "dispenseItems": [
    {
      "itemName": "Water",
      "isCurrentlyDispensing": true
    }
  ]
}

Bạn chỉ cần báo cáo amountRemainingamountLastDispensed bằng một đơn vị đo lường.

Bạn có thể cung cấp nhiều mặt hàng trong mảng dispenseItems. Mỗi tên mặt hàng phải là duy nhất và phải tương ứng với một mặt hàng trong thuộc tính supportedDispenseItems.

Lệnh cho thiết bị

Các thiết bị có đặc điểm này có thể phản hồi các lệnh sau trong thao tác EXECUTE. Để tìm hiểu thêm về cách xử lý ý định EXECUTE, hãy xem phần Thực hiện ý định.

action.devices.commands.Dispense

Phân phát các mục.

Thông số

Phần dữ liệu chứa một trong những nội dung sau:

Rút tiền theo số lượng.

Thông số Loại Mô tả
item String

Tên của mặt hàng cần phân phát, từ thuộc tính item_name.

amount Number

Bắt buộc.

Số tiền cần rút.

unit String

Bắt buộc.

Đơn vị cho amount, từ thuộc tính supported_units.

Phân phát theo giá trị đặt sẵn.

Thông số Loại Mô tả
presetName String

Bắt buộc.

Tên của giá trị đặt sẵn cần phân phát, từ thuộc tính preset_name.

Phân phát không có tham số.

Thông số Loại Mô tả

Không có thuộc tính nào

Ví dụ

Cho tôi 1 cốc nước.

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "amount": 1,
    "unit": "CUPS",
    "item": "Water"
  }
}

Đổ đầy bát nước cho mèo.

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "presetName": "cat_bowl"
  }
}

Rót nước.

{
  "command": "action.devices.commands.Dispense",
  "params": {}
}

LỖI thiết bị

Xem danh sách đầy đủ các lỗi và trường hợp ngoại lệ.
  • dispenseAmountRemainingExceeded: Người dùng đã cố gắng rút một mặt hàng hoặc số tiền từ một thiết bị không còn đủ số tiền.
  • dispenseAmountAboveLimit: Người dùng đã cố gắng rút một số tiền vượt quá hạn mức mà họ có thể yêu cầu trong một truy vấn duy nhất. Điều này nhằm tránh trường hợp vô tình rót quá nhiều nước (ví dụ: 500.000 cốc nước).
  • dispenseAmountBelowLimit: Người dùng đã cố gắng rút một mặt hàng hoặc số tiền từ thiết bị mà số tiền đó thấp hơn số tiền tối thiểu mà thiết bị có thể rút.
  • dispenseFractionalAmountNotSupported: Người dùng đã cố gắng phân phối một lượng nhỏ của một mặt hàng mà thiết bị không thể chia nhỏ (ví dụ: các mặt hàng có thể đếm được như bánh thưởng cho chó có thể không chia được bằng thiết bị).
  • genericDispenseNotSupported: Người dùng cố gắng phân phát từ một thiết bị mà không chỉ định mặt hàng hoặc chế độ cài đặt sẵn, nhưng thiết bị đó không hỗ trợ chức năng này (ví dụ: hành động phân phát mặc định).
  • dispenseUnitNotSupported: Người dùng cố gắng phân phối từ một thiết bị có đơn vị không được hỗ trợ cho trường hợp đó (ví dụ: mặt hàng không được cung cấp nên supported_unit validation đã bị bỏ qua).
  • dispenseFractionalUnitNotSupported: Người dùng đã cố gắng phân phát một phần nhỏ của một mặt hàng có thể chia nhỏ nhưng không phải cho đơn vị cụ thể được chỉ định (ví dụ: vòi có thể phân phát 2,7 cốc nhưng không thể phân phát 2,7 ml).
  • deviceCurrentlyDispensing: Người dùng cố gắng phân phát một mặt hàng nhưng thiết bị đang phân phát.
  • deviceClogged: Người dùng cố gắng phân phối một mặt hàng nhưng thiết bị bị tắc nghẽn.
  • deviceBusy: Người dùng cố gắng phân phát một mặt hàng nhưng thiết bị đang bận (chung).

TRƯỜNG HỢP NGOẠI LỆ về thiết bị

Bạn có thể báo cáo những trường hợp ngoại lệ này dưới dạng exceptionCode trong đối tượng states của phản hồi:

  • amountRemainingLow – Người dùng lấy một mặt hàng hoặc số tiền từ thiết bị, khiến số tiền còn lại ở mức thấp. Bạn có trách nhiệm xác định những yếu tố tạo nên mức "thấp".
  • userNeedsToWait – Khi người dùng phải đợi trước khi mặt hàng hoặc số tiền được yêu cầu có thể được phân phối thành công (ví dụ: vòi nước sẽ phân phối nước nóng nhưng người dùng cần đợi nước nóng lên trước khi bắt đầu phân phối).