สคีมาลักษณะเฉพาะของสมาร์ทโฮม
action.devices.traits.Dispense
- ลักษณะนี้เป็นของอุปกรณ์ที่รองรับการจ่ายจริงตามจํานวนที่ระบุทางกายภาพ
ลักษณะนี้รองรับการจ่ายค่าที่กําหนดล่วงหน้า เช่น "ชามอาหารแมว" สําหรับเครื่องให้อาหารสัตว์เลี้ยง หรือ "แก้ว" สําหรับก๊อกน้ําด้วย
แอตทริบิวต์ของอุปกรณ์
อุปกรณ์ที่มีลักษณะเฉพาะนี้อาจรายงานแอตทริบิวต์ต่อไปนี้เป็นส่วนหนึ่งของการดําเนินการ SYNC
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent ของ SYNC
โปรดดูการดําเนินการ Intent
แอตทริบิวต์ | Type | คำอธิบาย |
---|---|---|
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" } } ] }
อุปกรณ์ STATES
เอนทิตีที่มีลักษณะนี้อาจรายงานสถานะต่อไปนี้เป็นส่วนหนึ่งของการดําเนินการ QUERY
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent ของ QUERY
โปรดดูการดําเนินการ Intent
รัฐ | Type | คำอธิบาย |
---|---|---|
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
อุปกรณ์ COMMANDS
อุปกรณ์ที่มีลักษณะเฉพาะนี้อาจตอบสนองต่อคําสั่งต่อไปนี้ในฐานะส่วนหนึ่งของการดําเนินการ EXECUTE
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent ของ EXECUTE
โปรดดูการดําเนินการ Intent
action.devices.commands.Dispense
จ่ายไอเทม
พารามิเตอร์
เพย์โหลดมีดังต่อไปนี้
จ่ายตามจํานวน
พารามิเตอร์ | Type | คำอธิบาย |
---|---|---|
item |
สตริง |
ชื่อของสินค้าที่จะจ่ายจากแอตทริบิวต์ |
amount |
Number |
ต้องระบุ จํานวนเงินที่จ่าย |
unit |
สตริง |
ต้องระบุ หน่วยของ |
จ่ายล่วงหน้าด้วย
พารามิเตอร์ | Type | คำอธิบาย |
---|---|---|
presetName |
สตริง |
ต้องระบุ ชื่อของค่าที่กําหนดล่วงหน้าเพื่อแจกจ่ายจากแอตทริบิวต์ |
จ่ายแบบไม่มีพารามิเตอร์
พารามิเตอร์ | 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": {} }
อุปกรณ์ ERRORS
ดูรายการข้อผิดพลาดและข้อยกเว้นทั้งหมดdispenseAmountRemainingExceeded
: ผู้ใช้พยายามจ่ายรายการหรือจํานวนเงินออกจากอุปกรณ์ที่มีเงินไม่เพียงพอdispenseAmountAboveLimit
: ผู้ใช้พยายามจ่ายเงินเป็นจํานวนที่เกินขีดจํากัดจากสิ่งที่ขอได้ในการค้นหาแต่ละครั้ง เพื่อเป็นการป้องกันไม่ให้จ่ายมากเกินไป (เช่น น้ํา 500,000 ถ้วย)dispenseAmountBelowLimit
: ผู้ใช้พยายามจ่ายไอเทมหรือจํานวนเงินออกจากอุปกรณ์ ที่มีราคาต่ํากว่าจํานวนเงินขั้นต่ําที่จ่ายได้dispenseFractionalAmountNotSupported
: ผู้ใช้พยายามจ่ายไอเทมบางส่วนที่อุปกรณ์ไม่สามารถแยกออกได้ (เช่น สิ่งของที่นับได้ เช่น ขนมสําหรับสุนัข อาจไม่หารด้วยอุปกรณ์)genericDispenseNotSupported
: ผู้ใช้พยายามจ่ายค่าสินค้าจากอุปกรณ์โดยไม่ระบุสินค้าหรือค่าที่กําหนดล่วงหน้า แต่อุปกรณ์ไม่รองรับฟังก์ชันการทํางานดังกล่าว (เช่น การดําเนินการจ่ายเริ่มต้น)dispenseUnitNotSupported
: ผู้ใช้พยายามจ่ายอุปกรณ์จากอุปกรณ์ที่ไม่รองรับสําหรับเคสนั้น (เช่น ไม่ได้ระบุสินค้าจึงข้ามsupported_unit validation
)dispenseFractionalUnitNotSupported
: ผู้ใช้พยายามจ่ายส่วนย่อยๆ ของสินค้า ซึ่งจะแบ่งได้สําหรับหน่วยที่เฉพาะเจาะจงระบุ (เช่น ก๊อกน้ําอาจแจกจ่ายให้ 2.7 ถ้วยได้ แต่ส่งไม่ได้ 2.7 มล.)deviceCurrentlyDispensing
: ผู้ใช้พยายามจ่ายไอเทม แต่อุปกรณ์จ่ายไปแล้วdeviceClogged
: ผู้ใช้พยายามจ่ายไอเทม แต่สิ่งของอุดตันdeviceBusy
: ผู้ใช้พยายามจ่ายไอเทม แต่อุปกรณ์ยังไม่ว่าง (ทั่วไป)
อุปกรณ์เกิน
คุณอาจรายงานข้อยกเว้นเหล่านี้ในฐานะ exceptionCode
ในออบเจ็กต์ states
ของการตอบกลับได้
amountRemainingLow
- ผู้ใช้จ่ายรายการหรือจํานวนเงินออกจากอุปกรณ์ ซึ่งทําให้จํานวนเงินที่เหลืออยู่อยู่ในระดับต่ํา คุณมีหน้าที่กําหนดองค์ประกอบของระดับ "ต่ํา"userNeedsToWait
- เมื่อผู้ใช้ต้องรอให้ระบบสั่งสินค้าหรือจํานวนเงินที่ขอให้เรียบร้อย (เช่น ก๊อกน้ําจะเติมน้ําร้อนแต่ผู้ใช้ต้องรอให้น้ําร้อนเพื่อให้ระบบเติมน้ํา)