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

สคีมาของฟีเจอร์ระบุจ่ายยาสําหรับบ้านอัจฉริยะ

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

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

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

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

แอตทริบิวต์ ประเภท คำอธิบาย
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 ได้ที่การดําเนินการโดย Intent

รัฐ ประเภท คำอธิบาย
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 โดยใช้หน่วยวัดเดียวเท่านั้น

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

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

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

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

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

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

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