Alexa.SceneControllerインターフェース



Alexa.SceneControllerインターフェース

SceneControllerインターフェースには、1つのシーンにグループ化された複数のデバイスを有効(またはオプションで無効)にするためのメッセージが含まれます。有効化はサポートされている必要がありますが、デバイスの検出中にシーンを無効にするかどうかを記述します。

Discovery

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

応答例

{
  "event": {
    "header": {
      "namespace":"Alexa.Discovery",
      "name":"Discover.Response",
      "payloadVersion":"3",
      "messageId":"abc-123-def-456"
    },
    "payload":{
      "endpoints":[
        {
          "endpointId": "uniqueIdOfScene",
          "manufacturerName": "エンドポイントのメーカー名",
          "friendlyName": "TV視聴",
          "description": "ユーザーに表示される説明です",
          "displayCategories": [ "ACTIVITY_TRIGGER" ],
          "cookie": {
          },
          "capabilities":
          [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.SceneController",
              "version" : "3",
              "supportsDeactivation" : false
            }
          ]
        }
      ]
    }
  }
}

ディレクティブ

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

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

詳細については、[スマートホームスキルを複数の言語で開発する][develop-smart-home-skills-in-multiple-languages#decide-languages]を参照してください。

SceneControllerインターフェースには、ActiveDeactiveの2つのディレクティブがあります。Activateディレクティブは必須ですが、Deactivateディレクティブはオプションです。Deactivateをサポートしている場合は、シーンの検出時に示す必要があります。詳細については検出を参照してください。

Delegateディレクティブ

シーンを有効にするには、Acivateディレクティブを使用します。Activateディレクティブは必須です。

ユーザー発話のサンプル

ユーザー: アレクサ、図書室の電気を点けて

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

Activateディレクティブのペイロードは空です。ペイロードに必須または任意のフィールドはありません。

Activateディレクティブの例

{
  "directive": {
    "header": {
      "namespace": "Alexa.SceneController",
      "name": "Activate",
      "messageId": "abc-123-def-456",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
      "payloadVersion": "3"
    },
     "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-skill"
      },
      "endpointId": "appliance-001"
    },
    "payload": {
    }
  }
}

ActivationStartedイベント

Activateディレクティブが正常に処理された場合、ActivationStartedイベントを使用して応答します。応答は同期または非同期のどちらでも可能です。非同期応答の場合、相関トークンを含めますが、それ以外は必須ではありません。

ActivationStartedイベントのペイロードの詳細

フィールド 説明 必須
cause 有効化の理由です。 A Causeオブジェクトです。
timestamp 有効化の時間はUTCで指定します。 文字列はISO 8601形式で、YYYY-MM-DDThh:mm:ss.sZとなります。

ActivationStartedイベントの例

{
  "context" : { },
  "event": {
    "header": {
      "messageId": "abc-123-def-456",
      "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"
    }
  }
}

Deactivateディレクティブ

シーンを無効にするには、Deacivateディレクティブを使用します。Deactivateディレクティブはオプションです。

ユーザー発話のサンプル

ユーザー: アレクサ、リビングパーティーをオフにして

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

Deactivateディレクティブのペイロードは空です。ペイロードに必須または任意のフィールドはありません。

Deactivateディレクティブの例

{
  "directive": {
    "header": {
      "namespace": "Alexa.SceneController",
      "name": "Deactivate",
      "messageId": "abc-123-def-456",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
      "payloadVersion": "3"
    },
     "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-skill"
      },
      "endpointId": "appliance-001"
    },
    "payload": {
    }
  }
}

DeactivationStartedイベント

Deactivateディレクティブが正常に処理された場合、DeactivationStartedイベントを使用して応答します。応答は同期または非同期のどちらでも可能です。非同期応答の場合、相関トークンを含めますが、それ以外は必須ではありません。

DeactivationStartedイベントのペイロードの詳細

フィールド 説明 必須
cause 無効化の理由です。 A Causeオブジェクトです。
timestamp 無効化の時間はUTCで指定します。 文字列はISO 8601形式で、YYYY-MM-DDThh:mm:ss.sZとなります。

DeactivationStartedイベントの例

{
  "context" : { },
  "event": {
    "header": {
      "messageId": "abc-123-def-456",
      "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"
    }
  }
}

エラー処理

エラーが発生した場合、ErrorResponseイベントを使用して応答します。詳細については、Alexa.ErrorResponseインターフェースを参照してください。

その他のサンプルコード

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

SceneController