ยินดีต้อนรับสู่ Google Home Developer Center แหล่งใหม่เรียนรู้วิธีพัฒนาการดําเนินการในบ้านอัจฉริยะ หมายเหตุ: คุณจะสร้างการดําเนินการต่างๆ ต่อไปในคอนโซลการดําเนินการ
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

สคีมาของชุดสมาร์ทโฮม

action.devices.traits.Dispense - ลักษณะเฉพาะนี้เป็นของอุปกรณ์ที่รองรับการรองรับสินค้าจริงอย่างน้อย 1 รายการ

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

แอตทริบิวต์อุปกรณ์

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

แอตทริบิวต์ ประเภท คำอธิบาย
supportedDispenseItems อาร์เรย์

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

[item, ...] วัตถุ

สิ่งที่จ่ายได้

item_name สตริง

ต้องระบุ

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

item_name_synonyms อาร์เรย์

ต้องระบุ

คําพ้องความหมายของภาษาที่จ่ายในแต่ละภาษาที่รองรับ

[item, ...] วัตถุ

คําพ้องความหมายของรายการที่จ่ายในวิดีโอ

synonyms อาร์เรย์

ต้องระบุ

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

[item, ...] สตริง

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

lang สตริง

ต้องระบุ

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

supported_units อาร์เรย์

ต้องระบุ

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

[item, ...] สตริง

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

ค่าที่รองรับมีดังต่อไปนี้

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 สตริง

ต้องระบุ

หน่วยจ่าย

supportedDispensePresets อาร์เรย์

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

[item, ...] วัตถุ

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

preset_name สตริง

ต้องระบุ

ชื่อภายในสําหรับค่าที่กําหนดล่วงหน้า ชื่อนี้อาจใช้งานยากและแชร์ได้ในทุกภาษา

preset_name_synonyms อาร์เรย์

ต้องระบุ

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

[item, ...] วัตถุ

ชื่อคําพ้องความหมายของค่าที่กําหนดล่วงหน้าในภาษาหนึ่งๆ

synonyms อาร์เรย์

ต้องระบุ

ชื่อคําพ้องความหมายของค่าที่กําหนดล่วงหน้า คําพ้องความหมายควรมีทั้งรูปเอกพจน์และพหูพจน์ (หากมี)

[item, ...] สตริง

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

lang สตริง

ต้องระบุ

รหัสภาษา (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 ได้ที่การดําเนินการตามความตั้งใจ

รัฐ ประเภท คำอธิบาย
dispenseItems อาร์เรย์

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

[item, ...] วัตถุ

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

itemName สตริง

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

amountRemaining วัตถุ

จํานวนเงินของรายการนั้นที่ยังเหลืออยู่ในอุปกรณ์ หากอุปกรณ์กําลังจ่ายอยู่ ระบบจะรายงานจํานวนเงินที่เหลือหรือจํานวนเงินที่ต้องการให้อุปกรณ์จ่ายเอง

amount Number

จํานวนที่เหลืออยู่

unit สตริง

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

amountLastDispensed วัตถุ

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

amount Number

จํานวนที่เหลืออยู่

unit สตริง

หน่วยของ 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 โดยใช้การวัดผลเพียง 1 หน่วยเท่านั้น

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

คําสั่งของอุปกรณ์

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

action.devices.commands.Dispense

จ่ายรายการ

พารามิเตอร์

เพย์โหลดมีองค์ประกอบอย่างใดอย่างหนึ่งต่อไปนี้

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

พารามิเตอร์ ประเภท คำอธิบาย
item สตริง

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

amount Number

ต้องระบุ

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

unit สตริง

ต้องระบุ

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

จัดสรรตามค่าที่กําหนดล่วงหน้า

พารามิเตอร์ ประเภท คำอธิบาย
presetName สตริง

ต้องระบุ

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

จ่ายค่าโดยไม่ใช้พารามิเตอร์

พารามิเตอร์ ประเภท คำอธิบาย

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

ตัวอย่าง

ดื่มน้ํา 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": {}
}

อุปกรณ์ ERRORS

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

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

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

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