Alexa.InventoryLevelSensorインターフェース3


Alexa.InventoryLevelSensorインターフェース3

AlexaスキルにAlexa.InventoryLevelSensorインターフェースを実装すると、デバイスに残っている消耗品の量をレポートできます。たとえば、デバイスがプリンターの場合、プリンターに残っているインクまたはトナーの量をレポートできます。シアン、イエロー、マゼンタ、ブラックのインクまたはトナー用に別々のストレージを備えたプリンターなど、複数の消耗品に対してAlexa.InventoryLevelSensorの複数のインスタンスを実装できます。

デバイスで消耗品が使用されたタイミングで出力する場合は、代わりにAlexa.InventoryUsageSensorインターフェースを実装します。追跡する消耗品の寿命が不明な場合は、代わりにAlexa.InventoryLevelUsageSensorインターフェースを実装します。

Alexa.InventoryLevelSensorインターフェースがサポートする言語については、Alexaインターフェースとサポートしている言語の一覧を参照してください。メッセージプロパティの定義については、Alexaインターフェースのメッセージとプロパティを参照してください。

Dash replenishment ID

スマートホームデバイスにAmazon Dash Replenishmentサービスを追加して、Alexaでデバイスの消耗品や交換部品の監視と再注文を行うことができます。Alexa.InventoryLevelSensorを使ってインベントリー状況を出力すると、ユーザーはAlexaアプリ内で消耗品の量を確認したり、消耗品の量が少なくなった場合や部品交換が必要になった場合にAlexaから通知を受け取ったりすることができます。また、ユーザーはこれらの消耗品の自動再注文を設定することもできます。たとえば、ユーザーがインク切れにならないよう、プリンターのインク使用量をAlexaに出力することができます。詳しくは、Dash Replenishmentについてを参照してください。

デバイスをDash Replenishmentに登録すると、Amazonからデバイスの各消耗品についてReplenishment IDが提供されます。このReplenishment IDによって、消耗品の交換用にユーザーが注文できる商品を識別できます。これらのIDは、次の方法でAlexaに提供できます。

  • デバイスの検出時にReplenishment IDがわかっている場合は、検出応答にIDを含めます。
  • デバイスの検出時にReplenishment IDが不明の場合は、AddOrUpdateReportイベントで後から指定します。

発話

Alexa.InventoryLevelSensorインターフェースにはユーザー発話が定義されません。

プロパティとオブジェクト

Alexa.InventoryLevelSensorインターフェースには、次のプロパティとオブジェクトが含まれます。

出力可能なプロパティ

Alexa.InventoryLevelSensorインターフェースは、levelプロパティをプライマリプロパティとして使用します。検出応答で、プロパティをサポートすることを指定します。

levelプロパティは、デバイスに現在残っている消耗品の量を表します。levelは、count(個数)、percentage(割合)、volume(容量)、weight(重量)のいずれかのタイプで表すことができます。volumeとweightには、単位を含めます。

Measurementオブジェクト

Measurementオブジェクトは、消耗品を計測する方法を定義します。

プロパティ 説明

@type

計測の種類です。
有効な値は、countpercentagevolumeweightのいずれかです。

文字列

value

消耗品の現在の残量レベルです。使用量を出力するときに指定します。

文字列

unit

そのタイプの標準測定単位です。volumeweightの場合に含めます。有効な値については、volumeの単位weightの単位を参照してください。

文字列

Replenishmentオブジェクト

Replenishmentオブジェクトにより、消耗品を識別します。

プロパティ 説明

@type

IDの種類を識別します。
有効な値: DashReplenishmentId

文字列

value

消耗品のDash Replenishment IDです。
DashコンソールでReplenishment IDをリクエストします。

文字列

検出

Alexa.InventoryLevelSensorをサポートするエンドポイントは、Alexa.Discoveryの標準検出メカニズムを使用して表します。

変更レポートでAlexaにプロアクティブにレポートするプロパティのproactivelyReportedをtrueに設定します。

エンドポイントは複数のセンサーに対応しています。センサーを区別するには、サポートする各センサーにAlexa.InventoryLevelSensorを含め、instanceプロパティを指定します。

表示カテゴリーの一覧は、表示カテゴリーを参照してください。

Alexaにデバイスの健全性を通知する場合、Alexa.EndpointHealthインターフェースも実装してください。

capabilities配列

機能配列の各Alexa.InventoryLevelSensorエントリには、通常の検出応答フィールドのほかに、次のフィールドを含めます。

プロパティ 説明

instance

センサーの名前です。
例: Ink.CyanInk.Yellowなど。

文字列

configuration.measurement

消耗品の測定方法です。

Measurementオブジェクト

configuration.replenishment

消耗品のDash Replenishment IDです。

Replenishmentオブジェクト

capabilityResources

ユーザーがセンサーとの対話に使用できる消耗品のフレンドリー名です。

CapabilityResourcesオブジェクト

検出応答の例

以下は、Alexa.InventoryLevelSensorインターフェースをサポートするプリンターのDiscover.Responseメッセージの例です。

クリップボードにコピーされました。

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "エンドポイントの一意のID",
          "manufacturerName": "Printer Plus",
          "description": "Printer Plus製スマートプリンター",
          "friendlyName": "プリンター",
          "displayCategories": [
            "OTHER"
          ],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.InventoryLevelSensor",
              "instance": "InkSensor.Cyan",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "level"
                  }
                ],
                "retrievable": false,
                "proactivelyReported": true
              },
              "configuration": {
                "measurement": {
                  "@type": "Volume",
                  "unit": "ミリリットル"
                },
                "replenishment": {
                  "@type": "DashReplenishmentId",
                  "value": "リフィルオプションのReplenishment ID"
                }
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "シアンのインク",
                      "locale": "ja-JP"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Encre cyan",
                      "locale": "fr-FR"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.InventoryLevelSensor",
              "instance": "PaperSensor.FrontTray",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "level"
                  }
                ],
                "retrievable": false,
                "proactivelyReported": true
              },
              "configuration": {
                "measurement": {
                  "@type": "Count"
                },
                "replenishment": {
                  "@type": "DashReplenishmentId",
                  "value": "リフィルオプションのReplenishment ID"
                }
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "前面トレイ",
                      "locale": "ja-JP"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

AddOrUpdateReport

エンドポイントの機能サポートが変更された場合は、Alexa.Discovery.AddOrUpdateReportイベントをプロアクティブに送信する必要があります。たとえば、最初のデバイス検出時に消耗品のReplenishment IDがなかった場合は、AddOrUpdateReportイベントを送信することで、後からAlexaにReplenishment IDを指定できます。最初に指定したReplenishment IDは変更できません。

AddOrUpdateReportイベントの例

クリップボードにコピーされました。

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "AddOrUpdateReport",
      "payloadVersion": "3",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "エンドポイントの一意のID",
          "manufacturerName": "Printer Plus",
          "description": "Printer Plus製スマートプリンター",
          "friendlyName": "プリンター",
          "displayCategories": [
            "OTHER"
          ],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.InventoryLevelSensor",
              "instance": "InkSensor.Cyan",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "level"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              },
              "configuration": {
                "measurement": {
                  "@type": "Volume",
                  "unit": "ミリリットル"
                },
                "replenishment": {
                  "@type": "DashReplenishmentId",
                  "value": "リフィルオプションのReplenishment ID"
                }
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "シアンのインク",
                      "locale": "ja-JP"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "Encre cyan",
                      "locale": "fr-FR"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.InventoryLevelSensor",
              "instance": "PaperSensor.FrontTray",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "level"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              },
              "configuration": {
                "measurement": {
                  "@type": "Count"
                },
                "replenishment": {
                  "@type": "DashReplenishmentId",
                  "value": "リフィルオプションのReplenishment ID"
                }
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "前面トレイ",
                      "locale": "ja-JP"
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "powerState"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

変更レポート

Alexaに在庫をプロアクティブにレポートするには、ChangeReportイベントを送信し、各消耗品の残量レベルを含めます。プロアクティブにレポートするプロパティは検出応答で特定します。変更レポートの詳細については、状態および変更レポートについてを参照してください。

ChangeReportイベントの例

以下の例では、すべてのセンサーの日次チェックを実行した後に各消耗品の残量レベルをAlexaに通知しています。

クリップボードにコピーされました。

{  
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "ChangeReport",
      "messageId": "一意の識別子、バージョン4 UUIDが望ましい",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "OAuth2.0ベアラートークン"
      },
      "endpointId": "エンドポイントID"
    },
    "payload": {
      "change": {
        "cause": {
          "type": "PERIODIC_POLL"
        },
        "properties": [
          {
            "namespace": "Alexa.InventoryLevelSensor",
            "instance": "InkSensor.Cyan",
            "name": "level",
            "value": {
              "@type": "Volume",
              "value": 5,
              "unit": "ミリリットル"
            },
            "timeOfSample": "2019-10-31T17:00:00.00Z",
            "uncertaintyInMilliseconds": 0
          },
          {
            "namespace": "Alexa.InventoryLevelSensor",
            "instance": "PaperSensor.FrontTray",
            "name": "level",
            "value": {
              "@type": "Count",
              "value": 200
            },
            "timeOfSample": "2019-10-31T17:00:00.00Z",
            "uncertaintyInMilliseconds": 0
          },
          {
            "namespace": "Alexa.PowerController",
            "name": "powerState",
            "value": "ON",
            "timeOfSample": "2019-10-31T17:00:00.00Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  },
  "context": {
    "namespace": "Alexa.EndpointHealth",
    "name": "connectivity",
    "value": {
      "value": "OK"
    },
    "timeOfSample": "2019-10-31T16:58:10:00.00Z",
    "uncertaintyInMilliseconds": 0
  }
}


このページは役に立ちましたか?

最終更新日: 2024 年 12 月 11 日