Google Home Developer Center へようこそ。スマートホーム アクションの開発方法を学習できます。注: アクションの構築は、引き続き Actions Console で行います。

スマートホームの Dispense トレイトのスキーマ

action.devices.traits.Dispense - このトレイトは、指定した 1 つ以上の特定項目の分量をサポートするデバイス用です。

このトレイトは、ペット用フィーダー用の「キャットフード ボウル」や蛇口用の「グラス」などのプリセットの供給もサポートします。

デバイスの属性

このトレイトを持つデバイスは、SYNC オペレーションの一部として次の属性を報告できます。SYNC インテントの処理の詳細については、インテントのフルフィルメントをご覧ください。

属性 タイプ 説明
supportedDispenseItems 配列

デバイスに供給可能なすべてのアイテムに関する情報が含まれています。

[item, ...] オブジェクト

ディスペンサブリー アイテム。

item_name 文字列

必須。

ディスペンス アイテムの内部名。これはユーザー フレンドリーな言語ではなく、すべての言語に共通です。

item_name_synonyms 配列

必須。

サポートされている各言語で表記された表記の同義名。

[item, ...] オブジェクト

特定の言語で公開されるアイテムの同義名。

synonyms 配列

必須。

出品するアイテムの同義名。該当する場合は、単数形と複数形の両方を含める必要があります。このリストの最初の文字列は、その言語のアイテムの複数形である必要があります。

[item, ...] 文字列

同義名

lang 文字列

必須。

言語コード(ISO 639-1)。サポートされている言語をご覧ください。

supported_units 配列

必須。

そのアイテムに対してデバイスがサポートするユニットのセット。

[item, ...] 文字列

サポートされている単位。

サポートされている値:

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 Integer

必須。

出金額。

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 文字列

item_name 属性のアイテムの名前。

amountRemaining オブジェクト

デバイスに残っているそのアイテムの金額。デバイスが現在給餌中の場合、残りの分量、または処理が開始した後の分量が表示されます。

amount Number

残額

unit 文字列

supported_units 属性の amount の単位。

amountLastDispensed オブジェクト

デバイスが最後に分注したそのアイテムの数量。デバイスが現在分量を給餌している場合は、現在の給餌量より前に分量が報告されます。

amount Number

残額

unit 文字列

supported_units 属性の amount の単位。

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

amountRemainingamountLastDispensed は、1 つの測定単位を使用して報告するだけで済みます。

dispenseItems 配列内に複数のアイテムを指定できます。 各アイテム名は一意でなければならず、supportedDispenseItems 属性内のアイテムに対応している必要があります。

デバイスのコマンド

このトレイトを持つデバイスは、EXECUTE オペレーションの一環として次のコマンドに応答できます。EXECUTE インテントの処理の詳細については、インテントのフルフィルメントをご覧ください。

action.devices.commands.Dispense

アイテムを置く。

パラメータ

ペイロードには次のいずれかが含まれています。

金額で分注する。

パラメータ タイプ 説明
item 文字列

分配するアイテムの名前(item_name 属性に基づく)。

amount Number

必須。

出金額。

unit 文字列

必須。

supported_units 属性の amount の単位。

プリセットで分量します。

パラメータ タイプ 説明
presetName 文字列

必須。

preset_name 属性から、適用するプリセットの名前。

パラメータなしのディスペンス。

パラメータ タイプ 説明

プロパティがありません

1 杯の水をください。

{
  "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: ユーザーが 1 回のクエリで要求できる量の上限を超えています。これは、誤って大量の分(500,000 カップ分の水など)を供給することを防止するものです。
  • dispenseAmountBelowLimit: ユーザーが、統一可能な最低数量を下回ったアイテムまたは金額をデバイスから分配しようとしました。
  • dispenseFractionalAmountNotSupported: ユーザーが、デバイスが分割できない小数の項目(例: 犬用おやつのようなカウント可能な項目がデバイスによって分割できない)を提供しようとした。
  • genericDispenseNotSupported: ユーザーがアイテムやプリセットを指定せずにデバイスからのディスペンスを試みましたが、デバイスがその機能(デフォルトのディスペンス アクションなど)をサポートしていません。
  • dispenseUnitNotSupported: ユーザーは、そのケースでサポートされていないユニットを備えたデバイスから給餌しようとしています(たとえば、アイテムが指定されていないため、supported_unit validation はスキップされました)。
  • dispenseFractionalUnitNotSupported: ユーザーが、分割はできるが、指定された特定の単位に該当しない小計のアイテム(たとえば、蛇口なら 2.7 ml の分量で給餌できるが、2.7 mL は供給できない)を配布しようとしました。
  • deviceCurrentlyDispensing: ユーザーがアイテムの給餌を試みましたが、デバイスはすでに給餌しています。
  • deviceClogged: ユーザーが商品アイテムの給餌を試みましたが、デバイスが詰まっています。
  • deviceBusy: ユーザーがアイテムの供給を試みるが、デバイスがビジー状態(一般)である。

デバイスの例外

これらの例外は、レスポンスの states オブジェクトで exceptionCode として報告される場合があります。

  • amountRemainingLow - ユーザーがアイテムまたは金額をデバイスから提供し、残量を低くします。「低」レベルを構成するのはユーザーの責任です。
  • userNeedsToWait - ユーザーがリクエストするアイテムや量が正常に給水されるまで待つ必要がある(例: 蛇口から給湯されるが、給水が終わるまで待つ必要がある)。