Alexa.SecurityPanelControllerインターフェース



Alexa.SecurityPanelControllerインターフェース

ユーザーがセキュリティシステムを開始/解除したり、ユーザーにアラーム状態をレポートしたりできるように、AlexaスキルにAlexa.SecurityPanelControllerインターフェースを実装しましょう。セキュリティスキルの詳細については、スマートホームセキュリティの概要を参照してください。

セキュリティシステムが接触センサーとモーションセンサーを使用している場合は、Alexa.ContactSensorインターフェースとAlexa.MotionSensorインターフェースを実装して、統一されたユーザーエクスペリエンスを実現することもできます。

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

発話

Alexa.SecurityPanelControllerインターフェースを使用する場合、音声対話モデルは既にビルドされています。以下に、ユーザーの発話の例を示します。「my home」はユーザーがセキュリティシステムデバイスに割り当てた名前です。

Alexa, arm my home in away mode.
Alexa, arm my home.
Alexa, disarm my home.
Alexa, is my home armed?

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

プロパティ

armStateプロパティ

Alexa.SecurityPanelControllerインターフェースは、armStateプロパティをプライマリプロパティとして使用します。サポートする警備状態は検出応答で指定します。少なくとも、DISARMEDと1つ以上のARMEDをサポートすることをお勧めします。

ArmStateプロパティの例

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

{
    "namespace": "Alexa.SecurityPanelController",
    "name": "armState",
    "value": "DISARMED"
}

armStateでは以下の値を使用できます。値は文字列です。

説明
ARMED_AWAY セキュリティシステムがアクティブで、居住者が外出している状態です。
ARMED_STAY セキュリティシステムがアクティブで、居住者が在宅している状態です。
ARMED_NIGHT セキュリティシステムがアクティブで、居住者が就寝している状態です。
DISARMED セキュリティシステムが解除されている状態です。

アラームプロパティ

Alexa.SecurityPanelControllerインターフェースは、アラームプロパティを使用して、さまざまな種類のアラームと各アラームの現在のステータスを表します。ディレクティブに応答したり、Alexaに状態をレポートしたりするときは、これらのアラームプロパティをcontextオブジェクトで使用します。アラーム状態が発生していることを示すには、プロパティ値としてALARMを使用します。

アラームのサポートはオプションです。サポートするアラームは検出応答で指定します。

住居侵入アラームの例

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

{
    "name": "burglaryAlarm",
    "value": {
        "value": "OK"
    }
}

次のアラームを使用できます。

プロパティ 説明
burglaryAlarm 住居侵入アラームの現在の状態(OKまたはALARM)です。 オブジェクト
carbonMonoxideAlarm 一酸化炭素アラームの現在の状態(OKまたはALARM)です。 オブジェクト
fireAlarm 火災警報の現在の状態(OKまたはALARM)です。 オブジェクト
waterAlarm 水警報の現在の状態(OKまたはALARM)です。 オブジェクト

セキュリティシステムに関して考慮すべきこと

セキュリティシステムの開始

セキュリティシステムの警備状態がARMED_AWAY(居住者が外出中)の場合、別の警備状態に変更するにはセキュリティシステムを解除する必要があります。たとえば、外出中のユーザーが帰宅して警備状態をARMED_NIGHTに変更する場合は、まずセキュリティシステムを解除してから、新しい状態に設定する必要があります。このルールに違反するarmディレクティブを受信した場合は、エラータイプAUTHORIZATION_REQUIREDエラーを使用して応答します。詳細については、Alexa.SecurityPanelController.ErrorResponseを参照してください。

音声オプションによるバイパス

ユーザーがセキュリティシステムを開始しようとしても、リクエストを満たせない場合があります。たとえば、ユーザーがシステムを開始しようとしたときに、接触センサー付きの窓が開いていた場合などです。開閉センサーは、セキュリティシステムを開始する前にユーザーの対処またはバイパスが必要なエラーを表します。その場合、システム開始のリクエストを拒否し、タイプがBYPASS_NEEDEDAlexa.SecurityPanelController.ErrorResponseを送信します。

ユーザーが音声コマンドを使用してエラーをバイパスできるようにするには、バイパスが必要なエンドポイントのリストをBYPASS_NEEDED応答のペイロードに含めます。エンドポイントのリストをペイロードに含むBYPASS_NEEDED応答を受信すると、Alexaはエラーをバイパスするようユーザーに求めます。詳細については、BYPASS_NEEDEDの例を参照してください。

以下は、バイパスが必要なエンドポイントのリストをBYPASS_NEEDED応答のペイロードに含める場合の会話の例です。「my home」はユーザーがセキュリティシステムデバイスに割り当てた名前です。

Alexa, arm my home in away mode.
Hmm, side window, kitchen window, and one more sensor need bypassing.Do you want to arm your system anyway?
Yes
Okay.My home is armed in away mode.Side window, kitchen window, and one more sensor were bypassed.You have 60 seconds to exit.

ユーザーが「No」と言った場合、Alexaは「Okay, I won’t arm the security system」と答えます。 BYPASS_NEEDEDエラー応答のペイロードにエンドポイントのリストを含めなかった場合、Alexaは「One or more sensors need bypassing.Please see your security system's panel or smartphone app for more details」と答えます。

セキュリティシステムの解除

ユーザーは音声による解除機能を選択する必要があります。これは、Alexaにユーザーのデバイスを接続するときにAlexaアプリで行います。選択すると、AlexaはDisarmディレクティブをスキルに送信します。選択しなかった場合は送信しません。選択する場合、ユーザーは次のいずれかの方法で音声コードを設定します。

  • スキルが既存のPINコードをサポートしていない場合は、新しい音声コードを設定する必要があります。
  • スキルが既存のPINコードをサポートしている場合は、新しい音声コードを設定することも、セキュリティシステムに既に関連付けられている4桁のPINコードを使用することもできます。

新しい音声コードを設定した場合、Alexaサービスは音声コードを安全に保存し、ユーザーが音声リクエストでセキュリティシステムを解除するときに音声コードを要求します。Alexaはその音声コードを検証し、正しかった場合にのみ、Disarmディレクティブをスキルに送信します。

既存のPINコードを使用する場合、ユーザーが音声リクエストでセキュリティシステムを解除するときにAlexaがPINコードを要求します。セキュリティシステムを解除する前に、バックエンドシステムでそのPINコードを検証する必要があります。PINコードが有効でない場合は、UNAUTHORIZEDタイプのエラーを使用して応答する必要があります。詳細については、

PINコードのサポート

スキルで制御しているセキュリティシステムが4桁のPINコードを既に使用していて、バックエンドシステムがPINコードを検証できる場合、ユーザーは既存のPINコードを使用して音声でセキュリティシステムを解除できます。

検出

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

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

サポートされているプロパティのフィールドで、サポートするアラーム(住居侵入や火災警報など)を指定します。アラームのサポートはオプションです。詳細については、アラームプロパティを参照してください。

表示カテゴリーにはSECURITY_PANELを使用します。表示カテゴリーの一覧は、表示カテゴリーを参照してください。

SecurityPanelControllerには、標準の検出応答フィールドのほかに、次のフィールドを含むconfigurationオブジェクトを含めます。

フィールド 説明 必須
supportedAuthorizationTypes セキュリティパネルが使用する認可タイプです。現在有効な値はFOUR_DIGIT_PINのみです。このフィールドを含めるのは、スキルで制御しているセキュリティシステムが4桁のPINコードをサポートしていて、バックエンドシステムがそのPINコードを検証できる場合のみです。 オブジェクトの配列
supportedArmStates セキュリティシステムがサポートする状態です。このフィールドを含めない場合、Alexaはセキュリティシステムがすべての状態をサポートしていると見なします。 armStateプロパティ値の配列

検出応答の例

以下は、Alexa.SecurityPanelControllerインターフェースをサポートするセキュリティパネルへのDiscover.Responseメッセージの例です。

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

{
  "event": {
    "header": {
      "namespace": "Alexa.Discovery",
      "name": "Discover.Response",
      "payloadVersion": "3",
      "messageId": "<メッセージID>"
    },
    "payload": {
      "endpoints": [
        {
          "endpointId": "<エンドポイントの一意のID>",
          "manufacturerName": "<エンドポイントのメーカー名>",
          "description": "<Alexaアプリに表示される説明>",
          "friendlyName": "<Alexaアプリに表示されるセキュリティパネル名>",
          "displayCategories": ["SECURITY_PANEL"],
          "cookie": {},
          "capabilities": [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.SecurityPanelController",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name": "armState"
                  },
                  {
                    "name": "burglaryAlarm"
                  },
                  {
                    "name": "fireAlarm"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              },
              "configuration": {
                "supportedArmStates": [
                  {
                    "value": "ARMED_AWAY"
                  },
                  {
                    "value": "ARMED_STAY"
                  },
                  {
                    "value": "DISARMED"
                  }
                ],
                "supportedAuthorizationTypes": [
                  {
                    "type": "FOUR_DIGIT_PIN"
                  }
                ]
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth",
              "version": "3",
              "properties": {
                "supported": [
                  {
                    "name":"connectivity"
                  }
                ],
                "proactivelyReported": true,
                "retrievable": true
              }
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

ディレクティブ

Armディレクティブ

Armディレクティブをサポートすると、ユーザーがセキュリティシステムを開始できます。Armディレクティブの受信時、新しいarmStateが現在のarmStateと一致した場合は、エラー応答ではなく成功応答を使用して応答します。ただし、armStateの変更には厳格な要件があります。詳細については、セキュリティシステムに関して考慮すべきことを参照してください。

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

Alexa, arm my home in away mode.

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

フィールド 説明
armState エンドポイントに設定する警備状態です。 armStateの値
bypassType バイパスのタイプです。現在指定できる値はBYPASS_ALLのみです。このフィールドは該当する場合にのみ含めます。詳細については、音声オプションによるバイパスを参照してください。 文字列

Armディレクティブの例

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

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

バイパスを含むArmディレクティブの例

次の例は、Alexaがスキルに送信する、バイパスリクエストを含むArmディレクティブを示しています。

{
  "directive": {
    "header": {
      "namespace": "Alexa.SecurityPanelController",
      "name": "Arm",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>",
      "cookie": {}
    },
    "payload": {
      "armState": "ARMED_AWAY",
      "bypassType": "BYPASS_ALL"
    }
  }
}

Arm応答イベント

Armディレクティブを正しく処理したら、Arm.Responseイベントを使用して応答します。contextオブジェクトに、関連するすべてのプロパティの値とアクティブなアラームを含めます。

Arm.Responseイベントのペイロードの詳細

フィールド 説明 必須
exitDelayInSeconds 居住者が外出してからセキュリティシステムがアクティブになるまでの待機秒数です。即座にアクティブにする場合は、この値を0に設定します。 整数(0~255)
bypassedEndpoints バイパスされたエンドポイントです。Armディレクティブにバイパスリクエストが含まれている場合にのみ、このフィールドを含めます。Alexa.ContactSensorインターフェースとAlexa.MotionSensorインターフェースを実装するセンサーのendpointIdを含めます。詳細については、音声オプションによるバイパスを参照してください。 エンドポイントの配列

Arm.Responseイベントの例

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

{
  "event": {
    "header": {
      "namespace": "Alexa.SecurityPanelController",
      "name": "Arm.Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {
      "exitDelayInSeconds": 60
    }
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "armState",
        "value": "ARMED_AWAY",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

アクティブなALARMを含むArm.Responseイベントの例

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

{
  "event": {
    "header": {
      "namespace": "Alexa.SecurityPanelController",
      "name": "Arm.Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {
      "exitDelayInSeconds": 60
    }
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "burglaryAlarm",
        "value": {
          "value": "ALARM"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "armState",
        "value": "ARMED_AWAY",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

バイパスされたエンドポイントを含むArm.Responseイベントの例

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

{
  "event": {
    "header": {
      "namespace": "Alexa.SecurityPanelController",
      "name": "Arm.Response",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {
      "exitDelayInSeconds": 60,
      "bypassedEndpoints": [
        {
          "friendlyName": "側面窓のセンサー", 
          "endpointId": "<エンドポイントID>"
        },
        {
          "friendlyName": "玄関ドアのセンサー", 
          "endpointId": "<エンドポイントID>"
        },
        {
          "friendlyName": "水センサー"
        }
      ]
    }
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "armState",
        "value": "ARMED_AWAY",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

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

Armディレクティブを正しく処理できなかった場合は、Alexa.SecurityPanelController.ErrorResponseイベントを使用して応答します。1つ以上のセンサーが開いているためにArmディレクティブを正しく処理できなかった場合に、ユーザーが音声でエラーをバイパスできるようにするには、音声オプションによるバイパスを参照してください。

Disarmディレクティブ

Disarmディレクティブをサポートすると、ユーザーがセキュリティシステムを解除できます。Disarmディレクティブの受信時、システムが既に解除されている場合は、エラー応答ではなく成功応答を使用して応答します。

Alexaは、ユーザーが解除機能を選択した場合のみ、スキルにDisarmディレクティブを送信します。詳細については、セキュリティシステムに関して考慮すべきことを参照してください。

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

Alexa, disarm my home.

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

フィールド 説明
authorization このプロパティは、既存のPINコードをスキルがサポートしていて、ユーザーが既存のPINコードの使用を選択した場合にのみ含まれます。セキュリティシステムを解除する前に、PINコードを検証する必要があります。ユーザーがAlexa音声コードを使用して解除した場合は、このプロパティは含まれません。 オブジェクト

Disarmディレクティブの例

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

{
  "directive": {
    "header": {
      "namespace": "Alexa.SecurityPanelController",
      "name": "Disarm",
      "messageId": "<メッセージID>",
      "correlationToken": "<opaque相関トークン>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
          "type": "BearerToken",
          "token": "<OAuth2ベアラートークン>"
        },
        "endpointId": "<エンドポイントID>",
      "cookie": {}
    },
    "payload": {
      "authorization": {
        "type": "FOUR_DIGIT_PIN",
        "value": "1234"
      }
    }
  }
}

Disarm応答イベント

Disarmディレクティブを正しく処理したら、Alexa.Responseイベントを使用して応答します。contextオブジェクトに、関連するすべてのプロパティの値とアクティブなアラームを含めます。

Disarm応答イベントの例

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

{
  "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.SecurityPanelController",
        "name": "armState",
        "value": "DISARMED",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

アクティブなALARMを含むDisarm応答イベントの例

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

{
  "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.SecurityPanelController",
        "name": "burglaryAlarm",
        "value": {
          "value": "ALARM"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "armState",
        "value": "ARMED_AWAY",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

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

Disarmディレクティブを正しく処理できなかった場合は、Alexa.SecurityPanelController.ErrorResponseイベントを使用して応答します。

状態レポート

ReportStateディレクティブをサポートすると、ユーザーがセキュリティパネルの状態について質問できます。

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

Alexa, is my home armed?

Alexaはエンドポイントの状態についての情報をリクエストするために、ReportStateディレクティブを送信します。AlexaがReportStateディレクティブを送信したら、それに対する応答としてStateReportイベントを送信します。応答には、contextオブジェクトのすべてのretrievableプロパティの現在の状態を含めます。retrievableプロパティは検出応答で特定します。状態レポートの詳細については、状態レポートについてを参照してください。

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.SecurityPanelController",
        "name": "armState",
        "value": "ARMED_AWAY",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "burglaryAlarm",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "fireAlarm",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

変更レポート

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

サポートするアラームの状態はプロアクティブにレポートする必要があります。

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.SecurityPanelController",
            "name": "armState",
            "value": "DISARMED",
            "timeOfSample": "2017-02-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "burglaryAlarm",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "fireAlarm",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}

アクティブなALARMを含むChangeReportイベントの例

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

{  
  "event": {
    "header": {
      "namespace": "Alexa",
      "name": "ChangeReport",
      "messageId": "<メッセージID>",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "<OAuth2ベアラートークン>"
      },
      "endpointId": "<エンドポイントID>"
    },
    "payload": {
      "change": {
        "cause": {
          "type": "RULE_TRIGGER"
        },
        "properties": [
          {
            "namespace": "Alexa.SecurityPanelController",
            "name": "burglaryAlarm",
            "value": {
              "value": "ALARM"
            },
            "timeOfSample": "2017-02-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  },
  "context": {
    "properties": [
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "armState",
        "value": "ARMED_AWAY",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.SecurityPanelController",
        "name": "fireAlarm",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      },
      {
        "namespace": "Alexa.EndpointHealth",
        "name": "connectivity",
        "value": {
          "value": "OK"
        },
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  }
}