Alexa.SceneControllerインターフェース



Alexa.SceneControllerインターフェース

SceneControllerインターフェースには、エンドポイントを有効(またはオプションで無効)にするためのメッセージが含まれます。エンドポイントがこのインターフェースを実装している場合は、有効化がサポートされていることになります。ただし、検出中にエンドポイントを無効にできるかどうかを記述するようにしてください。

検出

検出中にエンドポイントがAlexa.SceneController機能インターフェースをサポートしていることを記述する場合、有効化は必ず設定する必要があるので、このエンドポイントを有効にできることがわかります。ただし、エンドポイントが無効化をサポートしているどうかは、supportsDeactivationフィールドで示す必要があります。

Alexa.SceneControllerを含むDiscoveryResponseの例

{
  "event": {
    "header": {
      "namespace":"Alexa.Discovery",
      "name":"Discover.Response",
      "payloadVersion":"3",
      "messageId":"ff746d98-ab02-4c9e-9d0d-b44711658414"
    },
    "payload":{
      "endpoints":[
        {
          "endpointId": "uniqueIdOfScene",
          "manufacturerName": "エンドポイントの作成者名",
          "friendlyName": "TV視聴",
          "description": "ユーザーに表示される説明です",
          "displayCategories": [ "ACTIVITY_TRIGGER" ],
          "cookie": {
          },
          "capabilities":
          [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.SceneController",
              "version" : "3",
              "supportsDeactivation" : false,
              "proactivelyReported" : true
            }
          ]
        }
      ]
    }
  }
}

ディレクティブ

このインターフェースの制御とクエリーのディレクティブは、以下の言語のスキルで使用できます。

  • 英語(カナダ)
  • 英語(英国)
  • 英語(米国)
  • フランス語
  • ドイツ語

詳細については、スマートホームスキルを複数の言語で開発するを参照してください。

SceneControllerには、ActivationDeactivationの2つのディレクティブがあります。シーンは有効化をサポートしている必要がありますが、無効化は任意です。無効化をサポートしている場合は、シーンの検出時に示す必要があります。詳細については検出を参照してください。

有効化

シーンを有効にするためのメッセージです。

リクエストの例:

{
  "directive": {
    "header": {
      "namespace": "Alexa.SceneController",
      "name": "Activate",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
      "payloadVersion": "3"
    },
     "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-skill"
      },
      "endpointId": "appliance-001"
    },
    "payload": {
    }
  }
}

ペイロードの詳細

フィールド 説明 タイプ 必須
なし ペイロードに必須または任意のフィールドはありません。 なし なし

無効化

シーンを無効にするためのメッセージです。エンドポイントの無効化のサポートは任意です。

リクエストの例:

{
  "directive": {
    "header": {
      "namespace": "Alexa.SceneController",
      "name": "Deactivate",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
      "payloadVersion": "3"
    },
     "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-skill"
      },
      "endpointId": "appliance-001"
    },
    "payload": {
    }
  }
}

ペイロードの詳細

フィールド 説明 タイプ 必須
なし ペイロードに必須または任意のフィールドはありません。 なし なし

プロパティとイベント

シーンコントローラーにイベントを同期的または非同期的に送信できます。非同期的に応答する場合は、ユーザーを認証するためのトークンと、メッセージのやり取りを識別するための相関トークンを含める必要があります。

プロパティ

現在、このインターフェースに定義されているレポート可能なプロパティはありません。

ActivationStartedイベント

ActivationStartedイベントは、エンドポイントの有効化リクエストに対する同期的な応答として、またはその他の理由で有効化が行われたときにプロアクティブに送信します。たとえば、ユーザーがエンドポイントを有効にするようAlexaに依頼したときや、他のアプリケーションで有効化の操作を行ったときに、このイベントを送信します。有効化の原因は、メッセージペイロードで示します。ディレクティブに対して非同期的に応答する場合は、このイベントに相関トークンを含める必要があります。それ以外の場合、このトークンは不要です。

ActivationStartedの例

{
  "context" : { },
  "event": {
    "header": {
      "messageId": "8d9c4fa2-9de0-4e75-ac38-9dde79abb1bd",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
      "namespace": "Alexa.SceneController",
      "name": "ActivationStarted",
      "payloadVersion": "3"
    },
     "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-Amazon"
      },
      "endpointId": "appliance-001"
    },
    "payload": {
      "cause" : {
        "type" : "VOICE_INTERACTION"
      },
      "timestamp" : "2017-02-03T23:23:23.23Z"
    }
  }
}

ペイロードの詳細

フィールド 説明 タイプ 必須
cause このイベントが発生した原因です。 Causeオブジェクト
timestamp 有効化イベントが発生した時間です。 ISO 8601形式の時刻を含む文字列です。UTCで指定する必要があります。

DeactivationStarted

DeactivationStartedイベントは、エンドポイントの無効化リクエストに対する同期的な応答として、またはその他の理由で無効化が行われたときに非同期的に送信します。たとえば、ユーザーがエンドポイントを無効にするようAlexaに依頼したときや、他のアプリケーションで無効化の操作を行ったときに、このイベントを送信します。有効化の原因は、メッセージペイロードで示します。ディレクティブに対して非同期的に応答する場合は、このイベントに相関トークンを含める必要があります。それ以外の場合、このトークンは不要です。

DeactivationStartedの例

{
  "context" : { },
  "event": {
    "header": {
      "messageId": "8d9c4fa2-9de0-4e75-ac38-9dde79abb1bd",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
      "namespace": "Alexa.SceneController",
      "name": "DeactivationStarted",
      "payloadVersion": "3"
    },
     "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-Amazon"
      },
      "endpointId": "appliance-001"
    },
    "payload": {
      "cause" : {
        "type" : "VOICE_INTERACTION"
      },
      "timestamp" : "2017-02-03T23:23:23.23Z"
    }
  }
}
フィールド 説明 タイプ 必須
cause このイベントが発生した原因です。 Causeオブジェクト
timestamp 有効化イベントが発生した時間です。 ISO 8601形式の時刻を含む文字列です。UTCで指定する必要があります。

その他のサンプルコード

リクエストと応答のサンプルについては、AlexaスマートホームのGitHubリポジトリで以下を参照してください。

SceneController