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
オブジェクトは、消耗品を計測する方法を定義します。
プロパティ | 説明 | 型 |
---|---|---|
|
計測の種類です。 |
文字列 |
|
消耗品の現在の残量レベルです。使用量を出力するときに指定します。 |
文字列 |
|
そのタイプの標準測定単位です。 |
文字列 |
Replenishmentオブジェクト
Replenishment
オブジェクトにより、消耗品を識別します。
プロパティ | 説明 | 型 |
---|---|---|
|
IDの種類を識別します。 |
文字列 |
|
消耗品のDash Replenishment IDです。 |
文字列 |
検出
Alexa.InventoryLevelSensor
をサポートするエンドポイントは、Alexa.Discoveryの標準検出メカニズムを使用して表します。
変更レポートでAlexaにプロアクティブにレポートするプロパティのproactivelyReported
をtrueに設定します。
エンドポイントは複数のセンサーに対応しています。センサーを区別するには、サポートする各センサーにAlexa.InventoryLevelSensor
を含め、instance
プロパティを指定します。
表示カテゴリーの一覧は、表示カテゴリーを参照してください。
Alexaにデバイスの健全性を通知する場合、Alexa.EndpointHealth
インターフェースも実装してください。
capabilities配列
機能配列の各Alexa.InventoryLevelSensor
エントリには、通常の検出応答フィールドのほかに、次のフィールドを含めます。
プロパティ | 説明 | 型 |
---|---|---|
|
センサーの名前です。 |
文字列 |
|
消耗品の測定方法です。 |
|
|
消耗品のDash Replenishment IDです。 |
|
|
ユーザーがセンサーとの対話に使用できる消耗品のフレンドリー名です。 |
|
検出応答の例
以下は、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 日