สคีมาลักษณะของ 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 |
หน่วยที่รองรับ ค่าที่รองรับ
|
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 |
ชื่อสินค้าจากแอตทริบิวต์ |
amountRemaining |
ออบเจ็กต์ |
จำนวนของรายการนั้นที่เหลืออยู่ในอุปกรณ์ หากอุปกรณ์กำลังจ่ายไฟอยู่ ระบบจะรายงานจำนวนเงินที่เหลือหรือจำนวนเงินเมื่ออุปกรณ์จ่ายน้ำจนเสร็จ |
amount |
Number |
จำนวนคงเหลือ |
unit |
String |
หน่วยของ |
amountLastDispensed |
ออบเจ็กต์ |
จำนวนเงินของรายการนั้นที่อุปกรณ์จ่ายครั้งล่าสุด หากอุปกรณ์กำลังจ่ายน้ำอยู่ การดำเนินการนี้จะรายงานจำนวนเงินที่จ่ายก่อนปริมาณการจ่ายปัจจุบัน |
amount |
Number |
จำนวนคงเหลือ |
unit |
String |
หน่วยของ |
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 |
ชื่อสินค้าที่จะจ่ายจากแอตทริบิวต์ |
amount |
Number |
ต้องระบุ จำนวนเงินที่จะจ่าย |
unit |
String |
ต้องระบุ หน่วยของ |
จ่ายตามค่าที่กำหนดล่วงหน้า
พารามิเตอร์ | Type | คำอธิบาย |
---|---|---|
presetName |
String |
ต้องระบุ ชื่อของค่าที่กำหนดล่วงหน้าที่จะใช้จ่ายจากแอตทริบิวต์ |
จ่ายโดยไม่มีพารามิเตอร์
พารามิเตอร์ | 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
- เมื่อผู้ใช้ต้องรอก่อนที่จะจ่ายสินค้าหรือปริมาณที่ขอได้สำเร็จ (เช่น ก๊อกน้ำจะจ่ายน้ำร้อน แต่ผู้ใช้ต้องรอให้น้ำร้อนก่อนเริ่มจ่ายน้ำ)