Alexa.ModeControllerインターフェース



Alexa.ModeControllerインターフェース

ユーザーがデバイスのモード設定を制御できるように、AlexaスキルにAlexa.ModeControllerインターフェースを実装しましょう。ModeControllerインターフェースを使用すると、洗濯機の洗浄サイクルモードなど、リストのいずれかの値に設定できるエンドポイントプロパティをモデル化できます。値のリストは順序付けできますが、必須ではありません。また、ModeControllerインターフェースでは、ユーザーが変更できないエンドポイントプロパティもモデル化することができます。スマートホームスキルの詳細については、スマートホームスキルAPIについてを参照してください。

ModeControllerインターフェースは設定の柔軟性がきわめて高く、各種デバイス用にさまざまな設定をモデル化できます。以下の具体的なインターフェースの中にデバイスに適したものがある場合は、そちらを使用してください。

ModeControllerインターフェースがサポートする言語については、機能インターフェースとサポートしている言語の一覧を参照してください。

発話

Alexa.ModeControllerインターフェースを使用する場合、音声対話モデルは既にビルドされています。以下に、ユーザーの発話の例を示します。

アレクサ、扇風機は何に設定されている?
アレクサ、洗濯機をデリケートモードにして
アレクサ、コースをドライに設定して
アレクサ、洗濯機の水位を上げて

Alexa, what is the wash setting on the washer?
Alexa, set the wash cycle to cottons.
Alexa, set the wash setting on the washer to normal.
Alexa, increase the water temperature on the washer.

オプションで、セマンティクスを使用して発話を追加できます。以下に、追加できるユーザーの発話の例を示します。

アレクサ、ゴミ箱のふたを開けて
アレクサ、ブラインドを閉めて
アレクサ、シェードを上げて
アレクサ、プロジェクタースクリーンを下げて

Alexa, open the garage door.
Alexa, close the garage door.
Alexa, raise the bedroom blinds.
Alexa, lower the living room blinds.

Alexa, öffne das Garagentor.
Alexa, schließe das Garagentor.
Alexa, fahre das Rollo in der Küche hoch.
Alexa, fahre die Rollläden im Wohnzimmer runter.

ユーザーがこのような発話をすると、Alexaはそれに対応するディレクティブをスキルに送信します。

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

modeプロパティ

Alexa.ModeControllerインターフェースでは、プライマリプロパティとしてmodeプロパティを使用します。プロパティ値は文字列です。

1つのエンドポイントで複数のモードをサポートできるため、modeプロパティのinstanceアトリビュートを必ず含めてください。instance名は検出応答で指定します。

Modeプロパティの例

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

{
    "namespace": "Alexa.ModeController",
    "name": "mode",
    "instance": "Washer.WashTemperature",
    "value": "WashTemperature.Cold"
}

modeオブジェクト

modeオブジェクトには、有効なモードの値を指定します。

Modeオブジェクトの詳細

フィールド 説明
value モード値の名前です。 文字列
modeResources ユーザーがモードの操作に使用できるフレンドリー名です。 modeResourcesオブジェクト

Modeオブジェクトの例

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

{
  "value": "WashCycle.Normal",
  "modeResources": {
    "friendlyNames": [
      {
        "@type": "text",
        "value": {
          "text": "標準",
          "locale": "ja-JP"
        }
      },
      {
        "@type": "text",
        "value": {
          "text": "コットン",
          "locale": "ja-JP"
        }
      }
    ]
  }
}

modeResourcesオブジェクト

modeResourcesオブジェクトを使用して、ユーザーがモード値の操作に使用できる一連のフレンドリー名を指定します。最初のフレンドリー名が、Alexaモバイルアプリに表示される名前です。詳細については、リソースとアセットを参照してください。

ModeResourcesオブジェクトの例

以下は、扇風機のナイトモードに使用するモードリソースの例です。このスキルは2つのフレンドリー名を提供します。 Alexa.Setting.Nightをアセットに、静音をテキストに指定します。ユーザーは「アレクサ、扇風機をナイトモードにして」「アレクサ、扇風機を静音に変えて」などと言うことができます。

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

"modeResources":
{
  "friendlyNames": [
    {
      "@type": "asset",
      "value": {
        "assetId": "Alexa.Setting.Night"
      }
    },
    {
      "@type": "text",
      "value": {
        "text": "静音",
        "locale": "ja-JP"
      }
    }
  ]
}

セマンティクスを使用して発話を追加する

Alexa.ModeControllerインターフェースを使用する場合、音声対話モデルは既にビルドされています。ユーザーは、デバイスとの対話にModeControllerの標準の発話を使用できます。詳細については、発話を参照してください。

オプションで、セマンティクスを使用して発話を追加できます。セマンティクスを使用する場合は、「開いて」「閉じて」「上げて」「下げて」といったフレーズを、ModeControllerのディレクティブであるSetModeAdjustModeに手動でマップします。たとえば、ガレージドアオープナーでは、「開けて」SetModeディレクティブにマップできます。

セマンティクスは同じデバイスの複数のコントローラーでサポートできますが、各コントローラーで異なるフレーズをサポートすることが必要となります。たとえば、「開いて」ModeControllerでサポートし、「上げて」RangeControllerでサポートすることはできますが、「開いて」ModeControllerRangeControllerの両方でサポートすることはできません。

セマンティクスを使用するには、次のセクションで説明するように、検出応答にsemanticsオブジェクトを含めます。

検出

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

Alexaからの状態レポートリクエストに応じてスキルがレポートする場合は、プロパティのretrievableをtrueに設定します。変更レポートでAlexaにプロアクティブにレポートする場合はプロパティのproactivelyReportedをtrueに設定します。

ユーザーが変更できないエンドポイントプロパティは、nonControllableをtrueに設定することでモデル化できます。たとえば、洗濯機が自動で洗い、すすぎ、脱水に移行する場合、洗浄サイクルの変更を許可せずに、現在の洗浄サイクルをユーザーにレポートできます。

機能配列の各ModeControllerエントリには、オプションでsemanticsオブジェクトを含めることができます。詳細については、セマンティクスを使用して発話を追加するを参照してください。

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

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

フィールド 説明
instance Washer.WashCycleWasher.WashTemperatureといったモード名です。 文字列
capabilityResources ユーザーがモードとの対話に使用できるフレンドリー名です。 CapabilityResourcesオブジェクト
configuration.
ordered
モード名が順序付けされている場合はTrue、それ以外はFalseです。たとえば、洗浄温度モードは、冷たい、温かい、熱いの順に並べることができます。順序付けされているモードのみがAdjustModeディレクティブをサポートします。 ブール値
configuration.
supportedModes
有効なモードの値です。順序付けされたモード値は、昇順で列挙される必要があります。 modeオブジェクトの配列です。

検出応答の例

以下は、Alexa.ModeControllerインターフェースをサポートする洗濯機へのDiscover.Responseメッセージの例です。

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

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "家電メーカープラス",
          "description": “家電メーカープラスのスマート洗濯機”,
          "friendlyName": "洗濯機",
          "displayCategories": ["OTHER"],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "instance": "Washer.WashCycle",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true,
                "nonControllable": false
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "洗浄サイクル",
                      "locale": "ja-JP"
                    }
                  },
                  {
                    "@type": "text",
                    "value": {
                      "text": "洗浄設定",
                      "locale": "ja-JP"
                    }
                  }
                ]
              },
              "configuration": {
                "ordered": false,
                "supportedModes": [
                  {
                    "value": "WashCycle.Normal",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "標準",
                            "locale": "ja-JP"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "コットン",
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "WashCycle.Delicates",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "デリケート",
                            "locale": "ja-JP"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            "text": "ニット",
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "instance": "Washer.CurrentWashCycle",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true,
                "nonControllable": true
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "現在の洗浄サイクル",
                      "locale": "ja-JP"
                    }
                  }
                ]
              },
              "configuration": {
                "ordered": false,
                "supportedModes": [
                  {
                    "value": "CurrentWashCycle.Wash",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "洗い",
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "CurrentWashCycle.Rinse",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "すすぎ",
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "CurrentWashCycle.Spin",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "脱水",
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "instance": "Washer.WashTemperature",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true,
                "nonControllable": false
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "text",
                    "value": {
                      "text": "洗浄温度",
                      "locale": "ja-JP"
                    }
                  },
                  {
                    "@type": "asset",
                    "value": {
                      "assetId": "Alexa.Setting.WaterTemperature"
                    }
                  }
                ]
              },
              "configuration": {
                "ordered": true,
                "supportedModes": [
                  {
                    "value": "WashTemperature.Cold",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "冷たい",
                            "locale": "ja-JP"
                          }
                        },
                        {
                          "@type": "text",
                          "value": {
                            “text”: “ぬるい”,
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "WashTemperature.Warm",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            “text”: “温かい”,
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "WashTemperature.Hot",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "熱い",
                            "locale": "ja-JP"
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

ブラインドにセマンティクスを使用した例

以下は、Alexa.ModeControllerインターフェースをサポートするブラインドに対するDiscover.Responseメッセージの例です。この例ではセマンティクスを使用しています。ブラインドで対応できるのが全開と全閉だけの場合は、ModeControllerインターフェースを使用します。範囲内の位置で上げ下げができるブラインドの場合は、代わりにRangeControllerインターフェースを使用します。

ModeControllerインターフェースは次のロケールでブラインドを制御するスキルに使用できます:de-DEen-AUen-GBen-INen-USes-ESes-MXes-USit-ITja-JP

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

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "<メーカー名>",
          "description": "<メーカー製スマートブラインド>",
          "friendlyName": "<ブラインド>",
          "displayCategories": ["INTERIOR_BLIND"],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "instance": "Blinds.Position",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "asset",
                    "value": {
                      "assetId": "Alexa.Setting.Opening"
                    }
                  }
                ]
              },
              "configuration": {
                "ordered": false,
                "supportedModes": [
                  {
                    "value": "Position.Up",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Open"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "Position.Down",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Close"
                          }
                        }
                      ]
                    }
                  }
                ]
              },
              "semantics": {
                "actionMappings": [
                  {
                    "@type": "ActionsToDirective",
                    "actions": ["Alexa.Actions.Close", "Alexa.Actions.Lower"],
                    "directive": {
                      "name": "SetMode",
                      "payload": {
                        "mode": "Position.Down"
                      }
                    }
                  },
                  {
                    "@type": "ActionsToDirective",
                    "actions": ["Alexa.Actions.Open", "Alexa.Actions.Raise"],
                    "directive": {
                      "name": "SetMode",
                      "payload": {
                        "mode": "Position.Up"
                      }
                    }
                  }
                ],
                "stateMappings": [
                  {
                    "@type": "StatesToValue",
                    "states": ["Alexa.States.Closed"],
                    "value": "Position.Down"
                  },
                  {
                    "@type": "StatesToValue",
                    "states": ["Alexa.States.Open"],
                    "value": "Position.Up"
                  }  
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

ガレージドアオープナーにセマンティクスを使用した例

以下は、Alexa.ModeControllerインターフェースをサポートするガレージドアオープナーに対するDiscover.Responseメッセージの例です。この例ではセマンティクスを使用しています。デバイスがガレージドアオープナーの場合、ModeControllerインターフェースとGARAGE_DOOR表示カテゴリーの両方を使う必要があります。

ガレージドアデバイスの場合、ユーザーがガレージドアを開けるよう言うと、Alexaはガレージドアを開ける前に「確認コードは何ですか?」とたずねます。

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

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "<メーカー名>",
          "description": "<メーカー製スマートガレージドアオープナー>",
          "friendlyName": "<ガレージドア>",
          "displayCategories": ["GARAGE_DOOR"],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.ModeController",
              "instance": "GarageDoor.Position",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "mode"
                  }
                ],
                "retrievable": true,
                "proactivelyReported": true
              },
              "capabilityResources": {
                "friendlyNames": [
                  {
                    "@type": "asset",
                    "value": {
                      "assetId": "Alexa.Setting.Mode"
                    }
                  }
                ]
              },
              "configuration": {
                "ordered": false,
                "supportedModes": [
                  {
                    "value": "Position.Up",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "開く",
                            "locale": "ja-JP"
                          }
                        },
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Open"
                          }
                        }
                      ]
                    }
                  },
                  {
                    "value": "Position.Down",
                    "modeResources": {
                      "friendlyNames": [
                        {
                          "@type": "text",
                          "value": {
                            "text": "閉じる",
                            "locale": "ja-JP"
                          }
                        },
                        {
                          "@type": "asset",
                          "value": {
                            "assetId": "Alexa.Value.Close"
                          }
                        }
                      ]
                    }
                  }
                ]
              },
              "semantics": {
                "actionMappings": [
                  {
                    "@type": "ActionsToDirective",
                    "actions": ["Alexa.Actions.Close", "Alexa.Actions.Lower"],
                    "directive": {
                      "name": "SetMode",
                      "payload": {
                        "mode": "Position.Down"
                      }
                    }
                  },
                  {
                    "@type": "ActionsToDirective",
                    "actions": ["Alexa.Actions.Open", "Alexa.Actions.Raise"],
                    "directive": {
                      "name": "SetMode",
                      "payload": {
                        "mode": "Position.Up"
                      }
                    }
                  }
                ],
                "stateMappings": [
                  {
                    "@type": "StatesToValue",
                    "states": ["Alexa.States.Closed"],
                    "value": "Position.Down"
                  },
                  {
                    "@type": "StatesToValue",
                    "states": ["Alexa.States.Open"],
                    "value": "Position.Up"
                  }  
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

ディレクティブ

SetModeディレクティブ

SetModeディレクティブをサポートすると、ユーザーがデバイスのモードを設定できます。

以下は、ユーザーの発話の例です。

アレクサ、洗濯機をデリケートモードにして
アレクサ、コースをドライに設定して

Alexa, set the wash cycle to cottons.
Alexa, set the wash setting on the washer to normal.

SetModeディレクティブペイロードの詳細

フィールド 説明
mode デバイスに設定するモードです。 文字列

SetModeディレクティブの例

次の例は、Alexaがスキルに送信するSetModeディレクティブを示しています。

{
  "directive": {
    "header": {
      "namespace": "Alexa.ModeController",
      "instance": "Washer.WashCycle",
      "name": "SetMode",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>",
      "cookie": {}
    },
    "payload": {
      "mode": "WashCycle.Normal"
    }
  }
}

SetMode応答イベント

SetModeディレクティブを正しく処理したら、Alexa.Responseイベントを使用して応答します。応答は同期または非同期のどちらでも可能です。非同期で応答する場合、相関トークンと、認可トークンを含めたスコープを含めます。

contextオブジェクトに、変更されたすべてのプロパティの値を含めます。レポートするmodeプロパティごとに、instanceアトリビュートを含める必要があります。

SetMode応答イベントの例

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

{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.ModeController",
        "instance": "Washer.WashCycle",
        "name": "mode",
        "value": "WashCycle.Normal",
        "timeOfSample": "2017-02-03T16:20:50Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

SetModeディレクティブのエラー処理

SetModeディレクティブを正しく処理できなかった場合は、Alexa.ErrorResponseイベントを使用して応答します。安全性に関わるエラーの場合は、Alexa.Safety.ErrorResponseを使用して応答します。

AdjustModeディレクティブ

AdjustModeディレクティブをサポートし、ユーザーがデバイスのモードを調整できるようにします。

モードが順序付けされている場合、ユーザーは指定された差分だけモードを増減できます。このディレクティブは、現在のモードによってリクエストを限定することはありません。増減リクエストを適切に処理することで、複数のモード間を遷移することができます。

以下は、ユーザーの発話の例です。

アレクサ、洗濯機の温度を上げて

Alexa, increase the water temperature on the washer.

AdjustModeディレクティブペイロードの詳細

フィールド 説明
modeDelta モードの変更量です。デフォルトは1です。 整数

AdjustModeディレクティブの例

以下の例は、Alexaがスキルに送信するAdjustModeディレクティブを示しています。

{
  "directive": {
    "header": {
      "namespace": "Alexa.ModeController",
      "instance": "Washer.WashTemperature",
      "name": "AdjustMode",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>",
      "cookie": {}
    },
    "payload": {
      "modeDelta": 1
    }
  }
}

AdjustMode応答イベント

AdjustModeディレクティブを正しく処理したら、Alexa.Responseイベントを使用して応答します。応答は同期または非同期のどちらでも可能です。非同期で応答する場合、相関トークンと、認可トークンを含めたスコープを含めます。

contextオブジェクトに、変更されたすべてのプロパティの値を含めます。レポートするmodeプロパティごとに、instanceアトリビュートを含める必要があります。

AdjustMode応答イベントの例

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

{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.ModeController",
        "instance": "Washer.WashTemperature",
        "name": "mode",
        "value": "WashTemperature.Warm",
        "timeOfSample": "2017-02-03T16:20:50Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

AdjustModeディレクティブのエラー処理

AdjustModeディレクティブを正しく処理できなかった場合は、Alexa.ErrorResponseイベントを使用して応答します。安全性に関わるエラーの場合は、Alexa.Safety.ErrorResponseを使用して応答します。

状態レポート

Alexaはエンドポイントの状態についての情報をリクエストするために、ReportStateディレクティブを送信します。AlexaがReportStateディレクティブを送信したら、それに対する応答としてStateReportイベントを送信します。状態レポートの詳細については、状態レポートについてを参照してください。

この応答には、contextオブジェクトのすべてのretrievableプロパティの現在の状態を含めます。レポートするmodeプロパティごとに、instanceアトリビュートを含める必要があります。検出応答では、状態が照会可能なプロパティとinstance名を指定します。

デバイスの電源がオフになっているなど、モードがセットされていない場合、modeプロパティをnullとしてレポートします。

ReportStateディレクティブをサポートすると、ユーザーがデバイスの機能について質問できます。

以下に、ユーザーの発話の例を示します。

アレクサ、洗濯機のモードは何にセットされている?

Alexa, what is the current washer cycle?

StateReport応答イベントの例

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

{
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "StateReport",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {}
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.ModeController",
        "instance": "Washer.WashCycle",
        "name": "mode",
        "value": "WashCycle.Delicates",
        "timeOfSample": "2017-02-03T16:20:50Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

変更レポート

エンドポイントの状態の変化をプロアクティブにレポートするために、ChangeReportイベントを送信します。変更レポートの詳細については、スマートホームスキルの状態レポートについてを参照してください。

ChangeReportには、ペイロードオブジェクトで変更されたすべてのプロパティ値が含まれます。レポートするmodeプロパティごとに、instanceアトリビュートを含める必要があります。検出応答では、プロアクティブにレポートするプロパティとinstance名を指定します。

ChangeReportイベントの例

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

{  
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "ChangeReport",
      "messageId": "<メッセージID>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {
      "change": {
        "cause": {
          "type": "PHYSICAL_INTERACTION"
        },
        "properties": [
          {
            "namespace": "Alexa.ModeController",
            "instance": "Washer.WashTemperature",
            "name": "mode",
            "value": "WashTemperature.Hot",
            "timeOfSample": "2017-02-03T16:20:50Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  },
  "context": {}
}