Selamat datang di Pusat Developer Google Home, tujuan baru untuk mempelajari cara mengembangkan tindakan smart home. Catatan: Anda akan terus membuat tindakan di konsol Actions.
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Skema Saluran Smart Home Dispense

action.devices.traits.Dispense - Sifat ini termasuk dalam perangkat yang mendukung pengeluaran sejumlah item tertentu atau lebih.

Sifat ini juga mendukung pengeluaran preset, misalnya sebagai "mangkuk makanan kucing" untuk pemberi makan hewan peliharaan atau "kaca" untuk keran.

ATRIBUT Perangkat

Perangkat dengan karakteristik ini dapat melaporkan atribut berikut sebagai bagian dari operasi SYNC. Untuk mempelajari penanganan intent SYNC lebih lanjut, lihat Penjelasan intent.

Atribut Jenis Deskripsi
supportedDispenseItems Array

Berisi informasi tentang semua item yang dapat dikeluarkan oleh perangkat.

[item, ...] Objek

Item sekali pakai.

item_name String

Wajib.

Nama internal untuk item yang dibuang. Setelan ini dapat dibuat tidak mudah digunakan dan dibagikan dalam semua bahasa.

item_name_synonyms Array

Wajib.

Nama sinonim untuk yang dibagikan dalam setiap bahasa yang didukung.

[item, ...] Objek

Nama sinonim untuk item yang dibuang dalam bahasa tertentu.

synonyms Array

Wajib.

Nama sinonim untuk item yang dibuang. Sinonim harus menyertakan bentuk tunggal dan jamak, jika ada. String pertama dalam daftar ini harus berupa bentuk jamak dari item dalam bahasa tersebut.

[item, ...] String

Nama sinonim

lang String

Wajib.

Kode bahasa (ISO 639-1). Lihat bahasa yang didukung.

supported_units Array

Wajib.

Kumpulan unit yang didukung perangkat untuk item tersebut.

[item, ...] String

Satuan yang didukung.

Nilai yang didukung:

CENTIMETERS
CUPS
DECILITERS
FLUID_OUNCES
GALLONS
GRAMS
KILOGRAMS
LITERS
MILLIGRAMS
MILLILITERS
MILLIMETERS
NO_UNITS
OUNCES
PINCH
PINTS
PORTION
POUNDS
QUARTS
TABLESPOONS
TEASPOONS
default_portion Objek

Wajib.

Jumlah umum item yang mungkin dibuang.

amount Integer

Wajib.

Jumlah yang dikeluarkan.

unit String

Wajib.

Unit yang dibuang.

supportedDispensePresets Array

Preset yang didukung oleh perangkat.

[item, ...] Objek

Prasetel.

preset_name String

Wajib.

Nama internal untuk preset. Nama ini tidak mudah digunakan oleh pengguna, dan dibagikan ke semua bahasa.

preset_name_synonyms Array

Wajib.

Nama sinonim untuk preset dalam setiap bahasa yang didukung.

[item, ...] Objek

Nama sinonim untuk preset dalam bahasa tertentu.

synonyms Array

Wajib.

Nama sinonim untuk preset. Sinonim harus menyertakan bentuk tunggal dan jamak, jika ada.

[item, ...] String

Nama sinonim

lang String

Wajib.

Kode bahasa (ISO 639-1). Lihat bahasa yang didukung.

Contoh

Dispenser air yang mendukung unit cairan dengan preset.

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

Dispenser makanan hewan peliharaan tanpa preset.

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

STATUS Perangkat

Perangkat dengan karakteristik ini dapat melaporkan status berikut sebagai bagian dari operasi QUERY. Untuk mempelajari penanganan intent QUERY lebih lanjut, lihat Penjelasan intent.

Negara bagian Jenis Deskripsi
dispenseItems Array

Status item yang dapat dikeluarkan oleh perangkat.

[item, ...] Objek

Status item tertentu.

itemName String

Nama item dari atribut item_name.

amountRemaining Objek

Jumlah item yang tersisa di perangkat. Jika perangkat sedang mengeluarkan, ini akan melaporkan jumlah yang tersisa atau jumlah yang akan diberikan setelah perangkat selesai dikeluarkan.

amount Number

Jumlah yang tersisa

unit String

Unit untuk amount dari atribut supported_units.

amountLastDispensed Objek

Jumlah item yang terakhir dihapus oleh perangkat. Jika perangkat sedang mengeluarkan, ini akan melaporkan jumlah yang dikeluarkan sebelum jumlah yang dikeluarkan saat ini.

amount Number

Jumlah yang tersisa

unit String

Unit untuk amount dari atribut supported_units.

isCurrentlyDispensing Boolean

Menunjukkan apakah perangkat saat ini mengeluarkan item ini.

Contoh

Berapa banyak camilan yang tersisa di dispenser saya?

{
  "dispenseItems": [
    {
      "itemName": "dog treats",
      "amountRemaining": {
        "amount": 83,
        "unit": "NO_UNITS"
      },
      "amountLastDispensed": {
        "amount": 2,
        "unit": "NO_UNITS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Berapa banyak air yang tersisa di pendingin air saya?

{
  "dispenseItems": [
    {
      "itemName": "water",
      "amountRemaining": {
        "amount": 6.2,
        "unit": "GALLONS"
      },
      "amountLastDispensed": {
        "amount": 1,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Berapa banyak makanan kucing yang saya berikan sebelumnya?

{
  "dispenseItems": [
    {
      "itemName": "cat_food",
      "amountRemaining": {
        "amount": 16.5,
        "unit": "CUPS"
      },
      "amountLastDispensed": {
        "amount": 2.5,
        "unit": "CUPS"
      },
      "isCurrentlyDispensing": false
    }
  ]
}

Apakah keran masih mengeluarkan air?

{
  "dispenseItems": [
    {
      "itemName": "water",
      "isCurrentlyDispensing": true
    }
  ]
}

amountRemaining dan amountLastDispensed hanya perlu dilaporkan menggunakan satu unit pengukuran.

Beberapa item dapat disediakan dalam array dispenseItems. Setiap nama item harus unik dan harus sesuai dengan item dalam atribut supportedDispenseItems.

PERMINTAAN Perangkat

Perangkat dengan karakteristik ini dapat merespons perintah berikut sebagai bagian dari operasi EXECUTE. Untuk mempelajari penanganan intent EXECUTE lebih lanjut, lihat Penjelasan intent.

action.devices.commands.Dispense

Mengeluarkan item.

Parameter

Payload berisi salah satu dari berikut ini:

Mengeluarkan berdasarkan jumlah.

Parameter Jenis Deskripsi
item String

Nama item yang akan dibuang, dari atribut item_name.

amount Number

Wajib.

Jumlah untuk dikeluarkan.

unit String

Wajib.

Unit untuk amount, dari atribut supported_units.

Mengeluarkan menurut preset.

Parameter Jenis Deskripsi
presetName String

Wajib.

Nama preset yang akan dikeluarkan, dari atribut preset_name.

Mengeluarkan tanpa parameter.

Parameter Jenis Deskripsi

Tidak ada properti

Contoh

Beri saya 1 gelas air.

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "amount": 1,
    "unit": "CUPS",
    "item": "water"
  }
}

Isi mangkuk minuman kucing.

{
  "command": "action.devices.commands.Dispense",
  "params": {
    "presetName": "cat_bowl"
  }
}

Mengeluarkan air.

{
  "command": "action.devices.commands.Dispense",
  "params": {}
}

KESALAHAN perangkat

Lihat daftar lengkap error dan pengecualian.
  • dispenseAmountRemainingExceeded: Pengguna mencoba mengeluarkan item atau jumlah dari perangkat yang tidak memiliki sisa jumlah yang cukup.
  • dispenseAmountAboveLimit: Pengguna mencoba memberikan jumlah yang melebihi batas yang dapat mereka minta dalam satu kueri. Hal ini untuk mencegah pengeluaran jumlah yang tidak sengaja secara tidak sengaja (misalnya, 500.000 gelas air).
  • dispenseAmountBelowLimit: Pengguna mencoba mengeluarkan item atau jumlah dari perangkat di bawah jumlah minimum yang dapat dikeluarkan.
  • dispenseFractionalAmountNotSupported: Pengguna mencoba membuang item dalam jumlah pecahan yang tidak dapat dibagi oleh perangkat (misalnya, item yang dapat dihitung seperti camilan tidak dapat dihapus oleh perangkat).
  • genericDispenseNotSupported: Pengguna mencoba mengeluarkan dari perangkat tanpa menentukan item atau preset, tetapi perangkat tidak mendukung fungsi tersebut (misalnya, tindakan membuang default).
  • dispenseUnitNotSupported: Pengguna mencoba mengeluarkan perangkat yang unitnya tidak didukung untuk kasus tersebut (misalnya item tidak disediakan sehingga supported_unit validation dilewati).
  • dispenseFractionalUnitNotSupported: Pengguna mencoba membuang sejumlah kecil item yang dapat dibagi tetapi tidak untuk unit tertentu yang ditentukan (misalnya, keran mungkin dapat mengeluarkan 2,7 cangkir tetapi tidak dapat menghasilkan 2,7 mL).
  • deviceCurrentlyDispensing: Pengguna mencoba membuang item, tetapi perangkat sudah mengeluarkan.
  • deviceClogged: Pengguna mencoba mengeluarkan item, tetapi perangkat tersumbat.
  • deviceBusy: Pengguna mencoba mengeluarkan item, tetapi perangkat sedang sibuk (generik).

PENGECUALIAN PERANGKAT

Pengecualian ini dapat dilaporkan sebagai exceptionCode di objek states pada respons Anda:

  • amountRemainingLow - Pengguna mengeluarkan item atau jumlah dari perangkat, sehingga jumlah tersebut tetap rendah. Anda bertanggung jawab untuk menentukan tingkat "rendah".
  • userNeedsToWait - Jika pengguna harus menunggu sebelum item atau jumlah yang diminta dapat berhasil dikeluarkan (misalnya, keran akan mengeluarkan air panas tetapi pengguna harus menunggu air memanas sebelum mulai mengeluarkan).