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