स्मार्ट होम डिस्पेंसर के ट्रैट स्कीमा
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 |
Integer |
ज़रूरी है. डिस्पेंस की गई रकम. |
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 |
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
ऑपरेशन के तहत, इन निर्देशों का जवाब दे सकते हैं. EXECUTE
इंटेंट को मैनेज करने के बारे में ज़्यादा जानने के लिए, इंटेंट पूरा करना लेख पढ़ें.
action.devices.commands.Dispense
आइटम डिस्पेंस करना.
पैरामीटर
पेलोड में इनमें से कोई एक शामिल होता है:
रकम के हिसाब से डिस्पेंस करें.
पैरामीटर | टाइप | ब्यौरा |
---|---|---|
item |
String |
|
amount |
Number |
ज़रूरी है. पैसे निकालने की रकम. |
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
: उपयोगकर्ता ने एक ही क्वेरी में, तय सीमा से ज़्यादा रकम का अनुरोध किया है. ऐसा इसलिए किया जाता है, ताकि गलती से बहुत ज़्यादा पानी (उदाहरण के लिए, 5,00,000 कप पानी) न निकले.dispenseAmountBelowLimit
: उपयोगकर्ता ने डिवाइस से कोई आइटम या रकम निकालने की कोशिश की, जो डिवाइस से निकाली जा सकने वाली कम से कम रकम से कम है.dispenseFractionalAmountNotSupported
: उपयोगकर्ता ने किसी ऐसे आइटम का कुछ हिस्सा देने की कोशिश की है जिसे डिवाइस अलग नहीं कर सकता (उदाहरण के लिए, हो सकता है कि कुत्ते का खाना जैसी गिनी जा सकने वाली चीज़ें डिवाइस से अलग न दिखें).genericDispenseNotSupported
: उपयोगकर्ता किसी आइटम या प्रीसेट को तय किए बिना किसी डिवाइस से डिस्पेंस करने की कोशिश करता है, लेकिन डिवाइस पर ऐसी सुविधाएं काम नहीं करती हैं (उदाहरण के लिए, डिस्पेंस ऐक्शन.dispenseUnitNotSupported
: उपयोगकर्ता, उस डिवाइस से डिस्पेंस करने की कोशिश करता है जिस पर उस केस के लिए काम करने वाली यूनिट उपलब्ध नहीं है. उदाहरण के लिए, आइटम उपलब्ध नहीं है, इसलिएsupported_unit validation
को स्किप किया गया था.dispenseFractionalUnitNotSupported
: उपयोगकर्ता ने किसी ऐसे आइटम का कुछ हिस्सा निकालने की कोशिश की है जिसे बांटा जा सकता है, लेकिन तय की गई यूनिट के लिए नहीं. उदाहरण के लिए, हो सकता है कि कोई नल 2.7 कप पानी निकाल सके, लेकिन 2.7 मिलीलीटर नहीं.deviceCurrentlyDispensing
: उपयोगकर्ता किसी आइटम को डिस्पेंस करने की कोशिश करता है, लेकिन डिवाइस पहले से ही आइटम डिस्पेंस कर रहा है.deviceClogged
: उपयोगकर्ता किसी आइटम को डिस्पेंस करने की कोशिश करता है, लेकिन डिवाइस में रुकावट आती है.deviceBusy
: उपयोगकर्ता किसी आइटम को बांटने की कोशिश कर रहा है, लेकिन डिवाइस व्यस्त है.
डिवाइस से जुड़े अपवाद
इन अपवादों की शिकायत, आपके रिस्पॉन्स के states
ऑब्जेक्ट में exceptionCode
के तौर पर की जा सकती है:
amountRemainingLow
- उपयोगकर्ता उस डिवाइस से कोई आइटम या कीमत निकालता है जिससे बची हुई रकम कम लेवल पर पहुंच जाती है. यह आपकी ज़िम्मेदारी है कि आप यह तय करें कि किस लेवल में "कम" लेवल शामिल है.userNeedsToWait
- जब उपयोगकर्ता को अनुरोध किए गए आइटम या रकम को पाने के लिए इंतज़ार करना पड़ता है (उदाहरण के लिए, नल से गर्म पानी निकलेगा, लेकिन उपयोगकर्ता को पानी निकलने से पहले, पानी के गर्म होने का इंतज़ार करना पड़ेगा).