스마트 홈 배포 속성 스키마

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

지원되는 단위

지원되는 값:

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
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"
      }
    }
  ]
}

기기 상태: STATES

이 특성이 있는 항목은 QUERY 작업의 일부로 다음 상태를 보고할 수 있습니다. QUERY 인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.

상태 유형 설명
dispenseItems 배열

기기에서 제공할 수 있는 항목의 상태입니다.

[item, ...] 객체

지정된 항목의 상태입니다.

itemName String

item_name 속성의 상품 이름입니다.

amountRemaining 객체

기기에 남아 있는 항목의 금액입니다. 기기가 현재 배출되고 있는 경우, 남은 액수 또는 배출이 완료된 후의 양을 표시합니다.

amount Number

잔액

unit String

supported_units 속성의 amount 단위입니다.

amountLastDispensed 객체

기기가 가장 최근에 지급한 상품의 금액입니다. 기기가 현재 배출되고 있는 경우, 현재 배출량 전에 배급한 양을 보고해야 합니다.

amount Number

잔액

unit String

supported_units 속성의 amount 단위입니다.

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
    }
  ]
}

amountRemainingamountLastDispensed는 하나의 측정 단위만 사용하여 보고하면 됩니다.

dispenseItems 배열 내에 여러 항목을 제공할 수 있습니다. 각 항목 이름은 고유해야 하며 supportedDispenseItems 속성의 항목과 일치해야 합니다.

기기 COMMANDS

이 특성이 있는 기기는 EXECUTE 작업의 일부로 다음 명령어에 응답할 수 있습니다. EXECUTE 인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.

action.devices.commands.Dispense

상품을 제공합니다.

매개변수

페이로드에는 다음 중 하나가 포함됩니다.

금액별로 제공

매개변수 유형 설명
item String

item_name 속성에서 제공할 항목의 이름입니다.

amount Number

필수.

배부할 금액

unit String

필수.

supported_units 속성의 amount 단위입니다.

사전 설정을 기준으로 제공합니다.

매개변수 유형 설명
presetName String

필수.

preset_name 속성에서 제공하는 미리 설정된 이름

매개변수 없이 제공합니다.

매개변수 유형 설명

속성이 없습니다.

예시

물 한 잔 주세요.

{
  "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": {}
}

기기 ERRORS

오류 및 예외의 전체 목록을 참조하세요.
  • dispenseAmountRemainingExceeded: 사용자가 남아 있는 금액이 부족한 기기에서 항목이나 금액을 제공하려고 했습니다.
  • dispenseAmountAboveLimit: 사용자가 단일 쿼리에서 요청할 수 있는 양을 초과하는 양을 제공하려고 했습니다. 이는 실수로 과다한 분출 (예: 500,000컵의 물)을 방지하기 위한 것입니다.
  • dispenseAmountBelowLimit: 사용자가 기기에서 배출할 수 있는 최소 양보다 적은 양의 배출량을 시도했습니다.
  • dispenseFractionalAmountNotSupported: 사용자가 기기에서 분할할 수 없는 항목의 일부를 제공하려고 했습니다 (예: 개 간식과 같이 계수할 수 있는 항목은 기기에 의해 나눌 수 없을 수 있음).
  • genericDispenseNotSupported: 사용자가 항목 또는 사전 설정을 지정하지 않고 기기에서 배식을 시도하지만 기기에서 이러한 기능(예: 기본 배식 작업)을 지원하지 않습니다.
  • dispenseUnitNotSupported: 사용자가 케이스에 지원되지 않는 단위가 있는 기기에서 제공하려고 합니다 (예: 항목이 제공되지 않아 supported_unit validation를 건너뜀).
  • dispenseFractionalUnitNotSupported: 사용자가 분할할 수 있지만 지정된 특정 단위에서는 분리할 수 없는 품목의 배분을 시도했습니다 (예: 수도꼭지는 2.7컵을 2.7mL로 표시하지 못할 수 있음).
  • deviceCurrentlyDispensing: 사용자가 항목을 제공하려고 하지만 기기가 이미 제공 중입니다.
  • deviceClogged: 사용자가 항목을 제공하려고 하지만 기기가 막혔습니다.
  • deviceBusy: 사용자가 항목을 제공하려고 하지만 기기가 사용 중입니다 (일반).

기기 예외

이러한 예외는 응답의 states 객체에서 exceptionCode로 보고될 수 있습니다.

  • amountRemainingLow - 사용자가 기기에서 항목 또는 금액을 배급하여 남은 양을 낮은 수준으로 설정합니다. 개발자는 '저조' 수준을 구성하는 요소를 정의할 책임이 있습니다.
  • userNeedsToWait - 사용자가 요청한 항목 또는 양을 성공적으로 공급할 수 있을 때까지 기다려야 하는 경우 (예: 수도꼭지에서 뜨거운 물을 공급하지만 사용자는 물을 가열할 때까지 기다린 후 배출되기 시작함)