스마트 홈 제공 트레잇 스키마
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
action.devices.traits.Dispense
- 이 트레잇은 하나 이상의 실제 상품을 지정된 양으로 제공하는 기기에 속합니다.
이 트레잇은 사전 설정된 내용(예: 반려동물 급식기의 '고양이 사료 그릇' 또는 수도꼭지의 '유리')을 제공하는 기능도 지원합니다.
기기 속성
이 트레잇이 있는 기기는 SYNC
작업의 일부로 다음 속성을 보고할 수 있습니다. SYNC
인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.
속성 | 유형 | 설명 |
---|---|---|
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
작업의 일부로 다음 상태를 보고할 수 있습니다. QUERY
인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.
주 | 유형 | 설명 |
---|---|---|
dispenseItems |
배열 |
기기에서 제공할 수 있는 상품의 상태입니다. |
[item, ...] |
객체 |
특정 항목의 상태입니다. |
itemName |
String |
|
amountRemaining |
객체 |
기기에 남아 있는 해당 항목의 양입니다. 기기가 현재 투여 중인 경우 잔여량 또는 기기 배출이 완료된 후의 금액을 보고합니다. |
amount |
숫자 |
남은 금액 |
unit |
String |
|
amountLastDispensed |
객체 |
기기에서 가장 최근에 배출한 상품의 양입니다. 기기가 현재 분출 중인 경우 현재 분출량 이전에 분출된 양이 보고됩니다. |
amount |
숫자 |
남은 금액 |
unit |
String |
|
isCurrentlyDispensing |
Boolean |
기기가 현재 이 상품을 제공하고 있는지 나타냅니다. |
예
애견 간식 디스펜서에 남은 간식은 몇 개인가요?
{
"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
작업의 일부로 다음 명령어에 응답할 수 있습니다. EXECUTE
인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.
action.devices.commands.Dispense
상품을 제공합니다.
매개변수
페이로드에는 다음 중 하나가 포함됩니다.
금액별로 분배합니다.
매개변수 | 유형 | 설명 |
---|---|---|
item |
String |
|
amount |
숫자 |
필수사항. 지급할 금액입니다. |
unit |
String |
필수사항.
|
미리 설정된 대로 제공합니다.
매개변수 | 유형 | 설명 |
---|---|---|
presetName |
String |
필수사항.
|
매개변수 없이 분배
매개변수 | 유형 | 설명 |
---|---|---|
속성이 없습니다. |
예
물 한 컵 주세요.
{
"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
: 사용자가 단일 쿼리에서 요청할 수 있는 한도를 초과하는 금액을 지급하려고 했습니다. 이는 실수로 과도한 양(예: 물 50만 컵)을 분사하는 것을 방지하기 위한 것입니다.dispenseAmountBelowLimit
: 사용자가 기기에서 분배할 수 있는 최소 금액 미만의 상품 또는 금액을 분배하려고 시도했습니다.dispenseFractionalAmountNotSupported
: 사용자가 기기가 분할할 수 없는 항목의 소수점 이하 자릿수를 분배하려고 했습니다(예: 강아지 간식과 같이 셀 수 있는 항목은 기기로 나눌 수 없음).genericDispenseNotSupported
: 사용자가 상품 또는 사전 설정을 지정하지 않고 기기에서 제품을 제공하려고 하지만 기기가 이러한 기능(예: 기본 제공 작업)을 지원하지 않습니다.dispenseUnitNotSupported
: 사용자가 해당 케이스에 지원되지 않는 단위가 있는 기기에서 상품을 제공하려고 시도합니다(예: 상품이 제공되지 않아supported_unit validation
가 건너뜁).dispenseFractionalUnitNotSupported
: 사용자가 분할할 수 있지만 지정된 특정 단위로는 분할할 수 없는 항목의 일부를 제공하려고 시도했습니다 (예: 수도꼭지는 2.7컵은 제공할 수 있지만 2.7mL는 제공할 수 없음).deviceCurrentlyDispensing
: 사용자가 상품을 제공하려고 하지만 기기가 이미 상품을 제공하고 있습니다.deviceClogged
: 사용자가 항목을 배포하려고 하지만 기기가 막혔습니다.deviceBusy
: 사용자가 상품을 제공하려고 하지만 기기가 사용 중입니다 (일반).
기기 예외
이러한 예외는 응답의 states
객체에서 exceptionCode
로 보고될 수 있습니다.
amountRemainingLow
- 사용자가 기기에서 항목이나 양을 배식하여 남은 양을 낮은 수준으로 만듭니다. '낮은' 수준을 구성하는 것은 사용자의 책임입니다.userNeedsToWait
- 요청된 상품 또는 금액을 제공하기 전에 사용자가 기다려야 하는 경우 (예: 수도꼭지에서 뜨거운 물이 나오지만 사용자가 물이 데워질 때까지 기다려야 물이 나오기 시작함)