Schemat nakazu przekazania do domu domowego
action.devices.traits.Dispense
– ten atrybut należy do urządzeń, które umożliwiają przydzielanie określonej liczby przedmiotów fizycznych.
Ten atrybut obsługuje też wysyłanie gotowych ustawień, np. jako „miska z kotem” w przypadku karmy dla zwierząt czy „szklaną” krankę.
ATRYBUTY urządzenia
W ramach operacji SYNC
urządzenia z tą cechą mogą zgłaszać wymienione poniżej atrybuty. Więcej informacji o obsłudze intencji SYNC
znajdziesz w sekcji Realizacja intencji.
Atrybuty | Typ | Opis |
---|---|---|
supportedDispenseItems |
Tablica |
Zawiera informacje o wszystkich elementach, które można przekazać na urządzenie. |
[item, ...] |
Obiekt |
Produkt do kupienia. |
item_name |
Ciąg |
Wymagany. Wewnętrzna nazwa publikowanego elementu. Może być nieprzeznaczona dla użytkowników i udostępniana we wszystkich językach. |
item_name_synonyms |
Tablica |
Wymagany. Synonimy wprowadzone w każdym obsługiwanym języku. |
[item, ...] |
Obiekt |
Synonimy danego produktu w danym języku. |
synonyms |
Tablica |
Wymagany. Nazwy synonimów sprzedawanego produktu. Synchronizmy powinny obejmować formy liczby pojedynczej i mnogiej (w stosownych przypadkach). Pierwszym elementem na liście musi być liczba mnoga podana w tym języku. |
[item, ...] |
Ciąg |
Nazwa synonimu |
lang |
Ciąg |
Wymagany. Kod języka (ISO 639-1). Zobacz obsługiwane języki. |
supported_units |
Tablica |
Wymagany. Zestaw jednostek obsługiwanych przez dany element. |
[item, ...] |
Ciąg |
Obsługiwane jednostki. Obsługiwane wartości:
|
default_portion |
Obiekt |
Wymagany. Typowa ilość produktu, która może zostać wydana. |
amount |
Liczba całkowita |
Wymagany. Wydana kwota. |
unit |
Ciąg |
Wymagany. Jednostka wydania. |
supportedDispensePresets |
Tablica |
Gotowe ustawienia obsługiwane przez urządzenie. |
[item, ...] |
Obiekt |
Gotowe ustawienia. |
preset_name |
Ciąg |
Wymagany. Wewnętrzna nazwa gotowych ustawień. Ta nazwa może nie być przyjazna dla użytkownika i jest dostępna we wszystkich językach. |
preset_name_synonyms |
Tablica |
Wymagany. Nazwy synonimów gotowych ustawień w każdym obsługiwanym języku. |
[item, ...] |
Obiekt |
Nazwy synonimów gotowych ustawień w danym języku. |
synonyms |
Tablica |
Wymagany. Nazwy synonimów gotowych ustawień. Synonimy powinny mieć formę liczby pojedynczej i mnogiej, jeśli taka jest. |
[item, ...] |
Ciąg |
Nazwa synonimu |
lang |
Ciąg |
Wymagany. Kod języka (ISO 639-1). Zobacz obsługiwane języki. |
Przykłady
Dozownik wody, który obsługuje jednostki płynów z gotowymi ustawieniami.
{ "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" ] } ] } ] }
Dozownik karmy dla zwierząt bez gotowych ustawień.
{ "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" } } ] }
Urządzenie STATES
W ramach operacji QUERY
encje o tym atrybucie mogą raportować te stany. Więcej informacji o obsłudze intencji QUERY
znajdziesz w sekcji Realizacja intencji.
Stany | Typ | Opis |
---|---|---|
dispenseItems |
Tablica |
Stany przedmiotów, które urządzenie może wydać. |
[item, ...] |
Obiekt |
Stan danego elementu. |
itemName |
Ciąg |
Nazwa produktu z atrybutu |
amountRemaining |
Obiekt |
Ilość tego produktu dostępnego na urządzeniu. Jeśli urządzenie jest obecnie realizowane, pojawia się w nim pozostała część kwoty do zapłaty. |
amount |
Number |
Pozostała kwota |
unit |
Ciąg |
Jednostka atrybutu |
amountLastDispensed |
Obiekt |
Ilość zamówionych produktów. Jeśli urządzenie wysyła obecnie środki, powinno ono uwzględniać kwotę do zapłaty przed obecną. |
amount |
Number |
Pozostała kwota |
unit |
Ciąg |
Jednostka atrybutu |
isCurrentlyDispensing |
Wartość logiczna |
Wskazuje, czy urządzenie wydaje obecnie ten produkt. |
Przykłady
Ile psich przysmaków pozostało do dozownika?
{ "dispenseItems": [ { "itemName": "Dog treats", "amountRemaining": { "amount": 83, "unit": "NO_UNITS" }, "amountLastDispensed": { "amount": 2, "unit": "NO_UNITS" }, "isCurrentlyDispensing": false } ] }
Ile wody pozostało w chłodziarce?
{ "dispenseItems": [ { "itemName": "Water", "amountRemaining": { "amount": 6.2, "unit": "GALLONS" }, "amountLastDispensed": { "amount": 1, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Ile karmy dla kotów dostałem wcześniej?
{ "dispenseItems": [ { "itemName": "cat_food", "amountRemaining": { "amount": 16.5, "unit": "CUPS" }, "amountLastDispensed": { "amount": 2.5, "unit": "CUPS" }, "isCurrentlyDispensing": false } ] }
Czy kratek nadal wydaje wodę?
{ "dispenseItems": [ { "itemName": "Water", "isCurrentlyDispensing": true } ] }
Raporty amountRemaining
i amountLastDispensed
muszą być raportowane tylko za pomocą jednej jednostki miary.
W tablicy dispenseItems
można podać wiele elementów.
Każda nazwa produktu musi być unikalna i odpowiadać produktowi w atrybucie supportedDispenseItems
.
Polecenie urządzenia
W ramach operacji EXECUTE
urządzenia z tą cechą mogą odpowiadać na podane niżej polecenia. Więcej informacji o obsłudze intencji EXECUTE
znajdziesz w sekcji Realizacja intencji.
action.devices.commands.Dispense
Wydaj produkty.
Parametry
Ładunek zawiera jeden z tych elementów:
Rezygnuję z kwoty.
Parametry | Typ | Opis |
---|---|---|
item |
Ciąg |
Nazwa produktu, który ma zostać wysłany, z atrybutu |
amount |
Number |
Wymagany. Kwota do wydania. |
unit |
Ciąg |
Wymagany. Jednostka atrybutu |
Odbierz zgodnie z gotowymi ustawieniami.
Parametry | Typ | Opis |
---|---|---|
presetName |
Ciąg |
Wymagany. Nazwa gotowych ustawień z poziomu atrybutu |
Wydaj bez parametrów.
Parametry | Typ | Opis |
---|---|---|
Brak właściwości |
Przykłady
Podaj mi szklankę wody.
{ "command": "action.devices.commands.Dispense", "params": { "amount": 1, "unit": "CUPS", "item": "Water" } }
Napełnij kocią miskę na wodę
{ "command": "action.devices.commands.Dispense", "params": { "presetName": "cat_bowl" } }
Wydzielaj wodę.
{ "command": "action.devices.commands.Dispense", "params": {} }
Urządzenie ERRORS
Zobacz pełną listę błędów i wyjątków.dispenseAmountRemainingExceeded
: użytkownik próbował wydać produkt lub kwotę z urządzenia, na którym niewystarczająca ilość.dispenseAmountAboveLimit
: użytkownik próbował przekazać kwotę wykraczającą poza limity pojedynczego zapytania. Ma to zapobiegać przypadkowemu wydania nadmiernej ilości (np. 500 000 szklanek wody).dispenseAmountBelowLimit
: użytkownik próbował wydać z urządzenia produkt lub kwotę niższą niż minimalna kwota, którą może wydać.dispenseFractionalAmountNotSupported
: użytkownik próbował wydać częściową część produktu, której urządzenie nie może dzielić (na przykład produkty, które można policzyć, np. psie przysmaki mogą nie być podzielne przez urządzenie).genericDispenseNotSupported
: użytkownik próbuje zrezygnować z urządzenia bez podawania elementu lub gotowych ustawień, ale urządzenie nie obsługuje takiej funkcji (np. może to być działanie domyślne).dispenseUnitNotSupported
: użytkownik próbuje zrezygnować z urządzenia, którego urządzenie nie jest obsługiwane w tym przypadku (np. element nie został podany, więcsupported_unit validation
został pominięty).dispenseFractionalUnitNotSupported
: użytkownik próbował wydać częściową ilość produktu, który można podzielić, ale nie można jej podzielić na konkretne jednostki (np. kratek może wydać 2,7 filiżanka, ale nie 2,7 ml).deviceCurrentlyDispensing
: użytkownik próbuje wysłać element, ale urządzenie już go wydaje.deviceClogged
: użytkownik próbuje wydać element, ale urządzenie jest zapchane.deviceBusy
: użytkownik próbuje wysłać element, ale urządzenie jest zajęte (ogólne).
WYKLUCZENIA urządzeń
Te wyjątki można raportować jako exceptionCode
w obiekcie states
odpowiedzi:
amountRemainingLow
– użytkownik wydaje produkt lub kwotę na urządzeniu, co sprawia, że pozostała kwota jest niska. Twoim obowiązkiem jest określenie poziomu „niskiego” poziomu.userNeedsToWait
– gdy użytkownik musi poczekać, by można było pobrać żądaną ilość produktu lub określoną ilość wody (np. krannik dostarcza wodę z gorącej wody, ale użytkownik musi poczekać, aż się ogrzewa).