Alexa.ContactSensorインターフェース



Alexa.ContactSensorインターフェース

Alexa.ContactSensorインターフェースは、2つの面の接触を検出するエンドポイントの状態をレポートするために使用されるプロパティとイベントを表します。たとえば、接触センサーはドアや窓が開いているかどうかをレポートできます。

接触センサーには通常2つのコンポーネントがあります。メインコンポーネントとマグネットコンポーネントです。コンポーネントが互いに接触していると、センサーはクローズになります。接触しなくなると、センサーはオープンになります。

以下の図は、窓の接触センサーのオープン状態とクローズ状態を表しています。

検出

Alexa.ContactSensorをサポートするエンドポイントは、Alexa.Discoveryの標準検出メカニズムを使用して表します。センサーの検出応答メッセージの例は、センサー用のスマートホームスキルを作成するページの検出の例を参照してください。

ディレクティブ

このインターフェースではディレクティブを定義しませんが、機能プロパティが変更されると変更レポートを送信し、オプションでAlexaからのエンドポイントの状態リクエストに応答します。

ReportState

ReportStateディレクティブは、エンドポイントの状態をリクエストするために送信されます。

ReportStateリクエストの例

以下の例は、IDがappliance-001のエンドポイントに関する現在の状態のリクエストを表しています。

{
  "directive": {
    "header": {
      "messageId": "abc-123-def-456",
      "correlationToken": "abcdef-123456",
      "namespace": "Alexa",
      "name": "ReportState",
      "payloadVersion": "3"
    },
    "endpoint": {
      "endpointId": "appliance-001",
      "cookie": {},
      "scope":{
            "type":"BearerToken",
            "token":"access-token-from-skill"
      }
    },
    "payload": {
    }
  }
}

プロパティとイベント

このインターフェースでは、以下のように応答できます。

  • スキルのLambda関数からStateReportディレクティブと同期をとって応答します。
  • 非同期的にStateReportイベントをAlexaイベントゲートウェイに送信します。非同期的に応答する場合、認可トークンにscopeを含めてユーザーを識別し、相関トークンを含めて応答先のディレクティブを識別する必要があります。

プロパティ

プロパティ名 説明
detectionState Detectionオブジェクト 接触センサーの状態を表します。

DETECTEDは、センサーがオープンで、センサーの2つの部品が互いに接触していない状態を表します。たとえば、窓が開いている状態です。

NOT_DETECTEDは、センサーがクローズで、センサーの2つの部品が互いに接触している状態を表します。

StateReportイベント

StateReportイベントは、ReportStateディレクティブへの応答でエンドポイントのすべてのプロパティの値をレポートするために使用します。

例: StateReport

{
  "context": {
    "properties": [
      {
        "namespace": "Alexa.ContactSensor",
        "name": "detectionState",
        "value": "DETECTED",
        "timeOfSample": "2017-02-03T16:20:50.52Z",
        "uncertaintyInMilliseconds": 0
      }
    ]
  },
  "event": {
    "header": {
      "messageId": "abc-123-def-456",
      "correlationToken": "abcdef-123456",
      "namespace": "Alexa",
      "name": "StateReport",
      "payloadVersion": "3"
    },
    "endpoint": {
      "endpointId": "appliance-001",
      "cookie": {}
    },
    "payload": {}
  }
}

ChangeReportイベント

ChangeReportイベントは、エンドポイントのプロパティのいずれかの値が何らかの理由で変更された場合にその値をレポートするために使用されます。その他の変化していないプロパティ値は、メッセージのコンテキストに出力されます。ChangeReportイベントは、Alexaイベントゲートウェイに送信します。この方法の詳細については、イベントゲートウェイにイベントを送信するを参照してください。

デバイスの電力が小さくReportStateリクエストに応答できない場合、検出後すぐにChangeReportイベントを送信してAlexaアプリにエンドポイントの正しい状態が反映されるようにする必要があります。後続の変更レポートは、変更が検出されたときにのみ送信される必要があります。

例: ChangeReport

{
  "context": {},
  "event": {
    "header": {
      "messageId": "abc-123-def-456",
      "namespace": "Alexa",
      "name": "ChangeReport",
      "payloadVersion": "3"
    },
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-Amazon"
      },
      "endpointId": "endpoint-001"
    },
    "payload": {
      "change": {
        "cause": {
          "type": "PHYSICAL_INTERACTION"
        },
        "properties": [
          {
            "namespace": "Alexa.ContactSensor",
            "name": "detectionState",
            "value": "DETECTED",
            "timeOfSample": "2018-02-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  }
}

ErrorResponse

何らかの理由によりユーザーのリクエストを完了できない場合、エラー応答を返す必要があります。詳細については、Alexa.ErrorResponseを参照してください。

Alexa.MotionSensor
動きを感知するエンドポイントについて説明します。
センサー用のスマートホームスキルを作成する
センサーをサポートするスマートホームスキルの作成時に考慮すべき事項について説明します。