스마트 홈 분배 특성 스키마
action.devices.traits.Dispense
: 이 특성은 지정된 양의 실제 항목 분배를 지원하는 기기에 속합니다.
이 특성은 반려동물 급식기에는 '고양이 사료 그릇', 수도꼭지에는 '유리'와 같은 미리 설정을 제공하는 것도 지원합니다.
기기 ATTRIBUTES
이 특성이 있는 기기는 SYNC
작업의 일부로 다음 속성을 보고할 수 있습니다. 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
작업의 일부로 다음 상태를 보고할 수 있습니다. QUERY
인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.
상태 | 유형 | 설명 |
---|---|---|
dispenseItems |
배열 |
기기가 배식할 수 있는 항목의 상태입니다. |
[item, ...] |
객체 |
지정된 항목의 상태입니다. |
itemName |
문자열 |
|
amountRemaining |
객체 |
기기에 남아 있는 잔액 기기가 현재 배출되는 경우 잔여 용량 또는 기기 배출이 완료된 후 예상되는 금액이 보고됩니다. |
amount |
Number |
잔액 |
unit |
문자열 |
|
amountLastDispensed |
객체 |
기기에서 가장 최근에 지급한 상품의 금액입니다. 기기가 현재 분배 중인 경우 현재 분배량 전에 분배된 양을 보고해야 합니다. |
amount |
Number |
잔액 |
unit |
문자열 |
|
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 |
문자열 |
|
amount |
Number |
필수사항. 배출할 양입니다. |
unit |
문자열 |
필수사항.
|
사전 설정으로 분배합니다.
매개변수 | 유형 | 설명 |
---|---|---|
presetName |
문자열 |
필수사항.
|
매개변수 없이 제공합니다.
매개변수 | 유형 | 설명 |
---|---|---|
속성이 없습니다. |
예
물 한 컵을 주세요.
{ "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.7mL은 제공할 수 없음).deviceCurrentlyDispensing
: 사용자가 상품을 제공하려고 하지만 기기가 이미 분배 중입니다.deviceClogged
: 사용자가 상품을 제공하려고 하지만 기기가 막혔습니다.deviceBusy
: 사용자가 상품을 제공하려고 하지만 기기가 사용 중입니다 (일반).
기기 예외
이러한 예외는 응답의 states
객체에서 exceptionCode
로
보고될 수 있습니다.
amountRemainingLow
- 사용자가 기기에서 항목 또는 금액을 배출하면 남은 금액이 줄어듭니다. '낮은' 수준을 구성하는 요소를 정의해야 합니다.userNeedsToWait
- 요청한 항목이나 양을 성공적으로 배출하기 전에 사용자가 기다려야 하는 경우 (예: 수도꼭지가 뜨거운 물을 공급하지만 사용자는 물이 뜨거워질 때까지 기다린 후에 배출될 수 있음)