สคีมาลักษณะของ Smart Home Dispense

action.devices.traits.Dispense - ลักษณะนี้เป็นของอุปกรณ์ที่รองรับการจ่ายวัตถุดิบอย่างน้อย 1 ชิ้นตามที่ระบุ

ลักษณะนี้ยังรองรับการจ่ายที่ตั้งไว้ล่วงหน้า เช่น "ชามอาหารแมว" สำหรับเครื่องให้อาหารสัตว์เลี้ยง หรือ "แก้ว" สำหรับก๊อกน้ำ

ATTRIBUTES ของอุปกรณ์

อุปกรณ์ที่มีลักษณะเช่นนี้อาจรายงานแอตทริบิวต์ต่อไปนี้ซึ่งเป็นส่วนหนึ่งของการดำเนินการ SYNC ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent SYNC ได้ที่Fulfillment Intent

Attributes Type คำอธิบาย
supportedDispenseItems อาร์เรย์

มีข้อมูลเกี่ยวกับสินค้าทั้งหมดที่อุปกรณ์จ่ายได้

[item, ...] ออบเจ็กต์

สิ่งของที่ต้องเสีย

item_name String

ต้องระบุ

ชื่อภายในสำหรับรายการที่จ่ายแล้ว ซึ่งอาจดูไม่เป็นมิตรกับผู้ใช้และสามารถแชร์กับทุกภาษาได้

item_name_synonyms อาร์เรย์

ต้องระบุ

ชื่อคำพ้องความหมายสำหรับภาษาที่รองรับแต่ละภาษา

[item, ...] ออบเจ็กต์

คำพ้องความหมายสำหรับรายการที่จ่ายในภาษาที่ระบุ

synonyms อาร์เรย์

ต้องระบุ

คำพ้องความหมายสำหรับสินค้าที่จ่าย ไวยากรณ์ควรมีทั้งรูปเอกพจน์และพหูพจน์ หากมี สตริงแรกในรายการนี้ต้องเป็นรูปแบบพหูพจน์ของรายการในภาษานั้น

[item, ...] String

ชื่อคำพ้องความหมาย

lang String

ต้องระบุ

รหัสภาษา (ISO 639-1) ดูภาษาที่รองรับ

supported_units อาร์เรย์

ต้องระบุ

ชุดหน่วยที่อุปกรณ์รองรับสำหรับรายการนั้น

[item, ...] String

หน่วยที่รองรับ

ค่าที่รองรับ

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
default_portion ออบเจ็กต์

ต้องระบุ

ปริมาณตามปกติของสินค้าที่สามารถจ่ายได้

amount จำนวนเต็ม

ต้องระบุ

จำนวนเงินที่จ่ายแล้ว

unit String

ต้องระบุ

เครื่องจ่ายแล้ว

supportedDispensePresets อาร์เรย์

ค่าที่กำหนดล่วงหน้าที่อุปกรณ์รองรับ

[item, ...] ออบเจ็กต์

ค่าที่กำหนดล่วงหน้า

preset_name String

ต้องระบุ

ชื่อภายในของค่าที่กำหนดล่วงหน้า ชื่อนี้อาจไม่เป็นมิตรกับผู้ใช้และสามารถแชร์กับทุกภาษาได้

preset_name_synonyms อาร์เรย์

ต้องระบุ

ชื่อคำพ้องความหมายสำหรับค่าที่กำหนดล่วงหน้าในแต่ละภาษาที่รองรับ

[item, ...] ออบเจ็กต์

ชื่อคำพ้องความหมายสำหรับค่าที่กำหนดล่วงหน้าในภาษาที่กำหนด

synonyms อาร์เรย์

ต้องระบุ

ชื่อคำพ้องความหมายสำหรับค่าที่กำหนดล่วงหน้า คำพ้องความหมายควรมีทั้งรูปเอกพจน์และพหูพจน์ ถ้ามี

[item, ...] String

ชื่อคำพ้องความหมาย

lang String

ต้องระบุ

รหัสภาษา (ISO 639-1) ดูภาษาที่รองรับ

ตัวอย่าง

เครื่องกดน้ำที่รองรับเครื่องสำหรับของเหลวที่มีอุณหภูมิที่กำหนดล่วงหน้า

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

เครื่องจ่ายอาหารสำหรับสัตว์เลี้ยงที่ไม่มีอุณหภูมิที่กำหนดล่วงหน้า

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

สถานะอุปกรณ์

เอนทิตีที่มีลักษณะนี้อาจรายงานสถานะต่อไปนี้ซึ่งเป็นส่วนหนึ่งของการดำเนินการ QUERY ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent QUERY ได้ที่Fulfillment Intent

รัฐ Type คำอธิบาย
dispenseItems อาร์เรย์

สถานะของสินค้าที่อุปกรณ์จ่ายได้

[item, ...] ออบเจ็กต์

สถานะของรายการที่ระบุ

itemName String

ชื่อสินค้าจากแอตทริบิวต์ item_name

amountRemaining ออบเจ็กต์

จำนวนของรายการนั้นที่เหลืออยู่ในอุปกรณ์ หากอุปกรณ์กำลังจ่ายไฟอยู่ ระบบจะรายงานจำนวนเงินที่เหลือหรือจำนวนเงินเมื่ออุปกรณ์จ่ายน้ำจนเสร็จ

amount Number

จำนวนคงเหลือ

unit String

หน่วยของ amount จากแอตทริบิวต์ supported_units

amountLastDispensed ออบเจ็กต์

จำนวนเงินของรายการนั้นที่อุปกรณ์จ่ายครั้งล่าสุด หากอุปกรณ์กำลังจ่ายน้ำอยู่ การดำเนินการนี้จะรายงานจำนวนเงินที่จ่ายก่อนปริมาณการจ่ายปัจจุบัน

amount Number

จำนวนคงเหลือ

unit String

หน่วยของ amount จากแอตทริบิวต์ supported_units

isCurrentlyDispensing บูลีน

ระบุว่าอุปกรณ์กำลังจ่ายรายการนี้หรือไม่

ตัวอย่าง

ขนมสุนัขยังเหลืออยู่อีกกี่เม็ด

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

เครื่องทำน้ำเย็นเหลือน้ำเท่าไร

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

ก่อนหน้านี้ฉันให้อาหารแมวไปเท่าไรแล้ว

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

ก๊อกน้ำยังคงจ่ายน้ำอยู่ไหม

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

คุณต้องรายงาน amountRemaining และ amountLastDispensed โดยใช้หน่วยวัดเพียงหน่วยเดียว

คุณระบุรายการได้หลายรายการในอาร์เรย์ dispenseItems ชื่อสินค้าแต่ละรายการต้องไม่ซ้ำกันและต้องตรงกับสินค้าในแอตทริบิวต์ supportedDispenseItems

COMMANDS ของอุปกรณ์

อุปกรณ์ที่มีลักษณะเช่นนี้อาจตอบสนองต่อคำสั่งต่อไปนี้โดยเป็นส่วนหนึ่งของการดำเนินการ EXECUTE ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent EXECUTE ได้ที่Fulfillment Intent

action.devices.commands.Dispense

จ่ายสิ่งของ

พารามิเตอร์

เพย์โหลดมีข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้

จ่ายตามจำนวน

พารามิเตอร์ Type คำอธิบาย
item String

ชื่อสินค้าที่จะจ่ายจากแอตทริบิวต์ item_name

amount Number

ต้องระบุ

จำนวนเงินที่จะจ่าย

unit String

ต้องระบุ

หน่วยของ amount จากแอตทริบิวต์ supported_units

จ่ายตามค่าที่กำหนดล่วงหน้า

พารามิเตอร์ Type คำอธิบาย
presetName String

ต้องระบุ

ชื่อของค่าที่กำหนดล่วงหน้าที่จะใช้จ่ายจากแอตทริบิวต์ preset_name

จ่ายโดยไม่มีพารามิเตอร์

พารามิเตอร์ Type คำอธิบาย

ไม่มีพร็อพเพอร์ตี้

ตัวอย่าง

ขอน้ำดื่ม 1 แก้ว

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

กรอกชามน้ำแมว

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

จ่ายน้ำ

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

ข้อผิดพลาดเกี่ยวกับอุปกรณ์

ดูรายการข้อผิดพลาดและข้อยกเว้นทั้งหมด
  • dispenseAmountRemainingExceeded: ผู้ใช้พยายามชำระเงินรายการหรือจำนวนเงินจากอุปกรณ์ที่มียอดคงเหลือไม่เพียงพอ
  • dispenseAmountAboveLimit: ผู้ใช้พยายามจ่ายจำนวนเงินที่เกินขีดจำกัดของสิ่งที่ขอได้ในการค้นหา 1 รายการ เพื่อป้องกันการจ่ายน้ำมากเกินไปโดยไม่ได้ตั้งใจ (เช่น น้ำ 500,000 ถ้วย)
  • dispenseAmountBelowLimit: ผู้ใช้พยายามจ่ายไอเทมหรือจำนวนเงินจากอุปกรณ์ ในอุปกรณ์ซึ่งต่ำกว่าปริมาณขั้นต่ำที่จ่ายได้
  • dispenseFractionalAmountNotSupported: ผู้ใช้พยายามจ่ายไอเทมบางส่วนที่อุปกรณ์แยกส่วนไม่ได้ (เช่น อุปกรณ์ไม่สามารถหารจำนวนสินค้าที่นับได้ เช่น ขนมสุนัข)
  • genericDispenseNotSupported: ผู้ใช้พยายามชำระเงินจากอุปกรณ์โดยไม่ระบุรายการหรือค่าที่กำหนดล่วงหน้า แต่อุปกรณ์ไม่รองรับฟังก์ชันการทำงานดังกล่าว (เช่น ค่าเริ่มต้นของการจ่าย)
  • dispenseUnitNotSupported: ผู้ใช้พยายามจ่ายอุปกรณ์จากอุปกรณ์ที่เครื่องไม่รองรับสำหรับกรณีนั้น (เช่น ไม่ได้ระบุไอเทม ระบบจึงข้าม supported_unit validation)
  • dispenseFractionalUnitNotSupported: ผู้ใช้พยายามแบ่งไอเทมบางส่วนซึ่งแบ่งออกได้ แต่จะใช้กับหน่วยที่ระบุไม่ได้ (เช่น ก๊อกน้ำอาจจ่ายได้ 2.7 ถ้วย แต่ไม่ใช่ 2.7 มล.)
  • deviceCurrentlyDispensing: ผู้ใช้พยายามจะจ่ายอาหาร แต่อุปกรณ์จ่ายไปแล้ว
  • deviceClogged: ผู้ใช้พยายามจะจ่ายสินค้าแต่อุปกรณ์อุดตัน
  • deviceBusy: ผู้ใช้พยายามชำระเงินของรายการหนึ่ง แต่อุปกรณ์ยังไม่พร้อมใช้งาน (ทั่วไป)

ข้อยกเว้นของอุปกรณ์

ระบบรายงานข้อยกเว้นเหล่านี้เป็น exceptionCode ในออบเจ็กต์ states ของการตอบกลับของคุณได้ ดังนี้

  • amountRemainingLow - ผู้ใช้จ่ายอาหารหรือจำนวนเงินจากอุปกรณ์ซึ่งจะทำให้จำนวนเงินคงเหลืออยู่ในระดับต่ำ คุณเป็นผู้กำหนดสิ่งที่ประกอบขึ้นเป็นระดับ "ต่ำ"
  • userNeedsToWait - เมื่อผู้ใช้ต้องรอก่อนที่จะจ่ายสินค้าหรือปริมาณที่ขอได้สำเร็จ (เช่น ก๊อกน้ำจะจ่ายน้ำร้อน แต่ผู้ใช้ต้องรอให้น้ำร้อนก่อนเริ่มจ่ายน้ำ)