Alexa.InventoryLevelSensorインターフェース
AlexaスキルにAlexa.InventoryLevelSensor
インターフェースを実装すると、デバイスに残っている消耗品の量をレポートできます。たとえば、デバイスがプリンターの場合、プリンターに残っているインクまたはトナーの量をレポートできます。シアン、イエロー、マゼンタ、ブラックのインクまたはトナー用に別々のストレージを備えたプリンターなど、複数の消耗品に対してInventoryLevelSensor
の複数のインスタンスを実装できます。
デバイスで消耗品が使用されたことをレポートする場合は、代わりにInventoryUsageSensorインターフェースを実装します。追跡する消耗品の寿命が不明な場合は、代わりにInventoryLevelUsageSensorインターフェースを実装します。
InventoryLevelSensor
インターフェースがサポートする言語については、Alexaインターフェースとサポートしている言語の一覧を参照してください。
Dash Replenishment ID
Dash Replenishment through Alexaを使用すると、デバイスのユーザーは、消耗品の残量が少なくなったときにその消耗品を再注文できるように設定を行うことができます。詳細については、Dash Replenishmentの概要ページおよびDash Replenishmentのアカウント設定ページを参照してください。
デバイスをDash Replenishmentに登録する場合は、デバイスの各消耗品にDash Replenishment IDを設定します。このDash Replenishment IDによって、消耗品の交換用にユーザーが注文できる商品(1つ以上)を識別します。ユーザーはアカウントで補充機能をセットアップする際に、注文を行う特定の商品を選択します。補充機能は、AlexaにDash Replenishment IDが指定されていなければセットアップできません。Alexaに対してデバイスのDash Replenishment IDを指定するには、次の方法があります。
- デバイスの検出時にDash Replenishment IDが既にある場合は、検出応答でDash Replenishment IDを指定します。
- AddOrUpdateReportメッセージで後からDash Replenishment IDを指定することもできます。
プロパティ
Alexa.InventoryLevelSensor
インターフェースでは、level
プロパティを使用して、デバイスに現在残っている消耗品の量を表します。
level
は、count(個数)、percentage(割合)、volume(容量)、weight(重量)のいずれかのタイプで表すことができます。volumeとweightには、単位を含めます。
1つのエンドポイントで複数のセンサーをサポートできるため、level
プロパティにはinstance
アトリビュートを必ず含めてください。instance
名は検出応答で指定します。
levelプロパティの例
{
"namespace": "Alexa.InventoryLevelSensor",
"instance": "InkSensor.Cyan",
"name": "level",
"value": {
"@type": "Volume",
"value": 5,
"unit": "MILLILITER"
}
}
検出
Alexa.InventoryLevelSensor
をサポートするエンドポイントは、Alexa.Discoveryの標準検出メカニズムを使用して表します。
変更レポートでAlexaにプロアクティブにレポートするプロパティのproactivelyReported
をtrueに設定します。
表示カテゴリーの一覧は、表示カテゴリーを参照してください。
機能配列の各InventoryLevelSensor
エントリには、通常の検出応答フィールドのほかに、次のフィールドを含めます。
フィールド | 説明 | 型 |
---|---|---|
instance |
センサーの名前です。例:Ink.Cyan、 Ink.Yellow |
文字列 |
configuration. measurement |
消耗品の測定方法です。count、percentage、volume、weightのいずれかです。volumeとweightには単位を含めます。 | オブジェクト |
configuration. replenishment |
消耗品のDash Replenishment IDです。 | オブジェクト |
capabilityResources |
ユーザーがセンサーとの対話に使用できるフレンドリー名です。 | CapabilityResourcesオブジェクト |
検出応答の例
以下は、Alexa.InventoryLevelSensor
インターフェースをサポートするプリンターのDiscover.Response
メッセージの例です。
messageId
は一意である必要があります。
{
"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": "MILLILITER"
},
"replenishment": {
"@type": "DashReplenishmentId",
"value": "<リフィルオプションのDash 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": "<リフィルオプションのDash 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"
}
]
}
]
}
}
}
AddOrUpdateReport
エンドポイントの機能サポートが変更された場合は、Alexa.Discovery.AddOrUpdateReport
メッセージをプロアクティブに送信する必要があります。たとえば、最初のデバイス検出時に消耗品のDash Replenishment IDがなかった場合は、AddOrUpdateReport
メッセージを送信することで、後からAlexaにDash Replenishment IDを指定できます。詳細については、AddOrUpdateReportイベントを参照してください。
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": "MILLILITER"
},
"replenishment": {
"@type": "DashReplenishmentId",
"value": "<リフィルオプションのDash 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": "<リフィルオプションのDash 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"
}
]
}
]
}
}
}
変更レポート
エンドポイントの状態の変化をプロアクティブにレポートするために、ChangeReport
イベントを送信します。プロアクティブにレポートするプロパティは検出応答で特定します。変更レポートの詳細については、状態および変更レポートについてを参照してください。
ChangeReportイベントの例
以下の例では、すべてのセンサーの日次チェックを実行した後に各消耗品の残量をAlexaに通知しています。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ChangeReport",
"messageId": "<一意の識別子、バージョン4 UUIDが望ましい>",
"payloadVersion": "3"
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "<OAuth2ベアラートークン>"
},
"endpointId": "<エンドポイントID>"
},
"payload": {
"change": {
"cause": {
"type": "PERIODIC_POLL"
},
"properties": [
{
"namespace": "Alexa.InventoryLevelSensor",
"instance": "InkSensor.Cyan",
"name": "level",
"value": {
"@type": "Volume",
"value": 5,
"unit": "MILLILITER"
},
"timeOfSample": "2019-10-31T17:00:00Z",
"uncertaintyInMilliseconds": 0
},
{
"namespace": "Alexa.InventoryLevelSensor",
"instance": "PaperSensor.FrontTray",
"name": "level",
"value": {
"@type": "Count",
"value": 200
},
"timeOfSample": "2019-10-31T17:00:00Z",
"uncertaintyInMilliseconds": 0
},
{
"namespace": "Alexa.PowerController",
"name": "powerState",
"value": "ON",
"timeOfSample": "2019-10-31T17:00:00Z",
"uncertaintyInMilliseconds": 0
}
]
}
}
},
"context": {}
}
関連トピック
最終更新日: 2022 年 01 月 24 日