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