Alexa.CameraStreamControllerインターフェース



Alexa.CameraStreamControllerインターフェース

Alexa.CameraStreamControllerインターフェースには、カメラのエンドポイントからカメラストリームを取得するのに使用されるメッセージが指定されます。カメラとやりとりするスキルの詳細については、スマートホームカメラスキルの作成を参照してください。

検出

カメラを制御するスキルの検出リクエストに応答するには、cameraStreamConfigurationオブジェクト配列の応答にカメラのコンフィギュレーションを指定します。

Alexa.CameraStreamControllerを含むDiscoveryResponseの例

{
  "event": {
    "header": {
      "namespace":"Alexa.Discovery",
      "name":"Discover.Response",
      "payloadVersion":"3",
      "messageId":"ff746d98-ab02-4c9e-9d0d-b44711658414"
    },
    "payload":{
      "endpoints":[
        {
          "endpointId": "uniqueIdOfCameraEndpoint",
          "manufacturerName": "エンドポイントの作成者名",
          "modelName": "エンドポイントのモデル名",
          "friendlyName": "カメラ",
          "description": "ユーザーに表示される説明です",
          "displayCategories": [ "CAMERA" ],
          "cookie": {
              "key1": "このエンドポイントを参照するためのスキルの任意のキー/値のペアです。",
              "key2": "複数のエントリーがある場合があります",
              "key3": "ただし、参照のためだけに使用してください。",
              "key4": "現在のエンドポイントの状態を維持するのに適切な場所ではありません。"
          },
          "capabilities":
          [
            {
              "type": "AlexaInterface",
              "interface": "Alexa.CameraStreamController",
              "version": "3",
              "cameraStreamConfigurations" : [
                  {
                    "protocols": ["RTSP"],
                    "resolutions": [{"width":1920, "height":1080}, {"width":1280, "height":720}],
                    "authorizationTypes": ["BASIC"],
                    "videoCodecs": ["H264", "MPEG2"],
                    "audioCodecs": ["G711"]
                  },
                  {
                    "protocols": ["RTSP"],
                    "resolutions": [{"width":1920, "height":1080}, {"width":1280, "height":720}],
                    "authorizationTypes": ["NONE"],
                    "videoCodecs": ["H264"],
                    "audioCodecs": ["AAC"]
                 }
              ]
            },
            {
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController",
              "version": "3"
            }
          ]
        }
      ]
    }
  }
}

ペイロードの詳細

フィールド 説明 必須
cameraStreamConfigurations ストリームに関する情報を提供するcameraStream構造の配列です。 オブジェクト配列
cameraStream.protocols ストリームのプロトコル(RTSPなど)です。 文字列
cameraStream.resolutions 解像度オブジェクトの配列。ストリームの解像度を指定します。各解像度には、widthおよびheightプロパティが含まれます。 オブジェクト
cameraStream.resolution.width ビデオストリームの幅を指定します。 整数
cameraStream.resolution.height ビデオストリームの高さを指定します。 整数
cameraStream.authorizationType 認可タイプを指定します。使用できる値は「BASIC」、「DIGEST」、「NONE」です。 文字列
cameraStream.videoCodec ストリームのビデオコーデックです。使用できる値は「H264」、「MPEG2」、「MJPEG」、「JPG」です。 文字列
cameraStream.audioCodec ストリームのオーディオコーデックです。使用できる値は「G711」、「AAC」、「NONE」です。 文字列

ディレクティブ

このインターフェースの制御とクエリーのディレクティブは、以下の言語を対象とするスキルでサポートされます。

  • 英語、すべてのロケール
  • フランス語
  • ドイツ語

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

InitializeCameraStreams

エンドポイントのカメラストリームを初期化します。

「アレクサ、フロントドアのカメラを見せて」

リクエストの例:

{
  "directive": {
    "header": {
      "namespace": "Alexa.CameraStreamController",
      "name": "InitializeCameraStreams",
      "payloadVersion": "3",
      "messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
    },
    "endpoint": {
      "endpointId": "appliance-001",
       "scope": {
                "type": "BearerToken",
                "token": "access-token-from-skill"
            },
      "cookie": {}
    },
    "payload": {
      "cameraStreams": [{
        "protocol": "RTSP",
        "resolution": {
          "width": 1920,
          "height": 1080
        },
        "authorizationType": "BASIC",
        "videoCodec": "H264",
        "audioCodec": "AAC"
      }, {
        "protocol": "RTSP",
        "resolution": {
          "width": 1280,
          "height": 720
        },
        "authorizationType": "NONE",
        "videoCodec": "MPEG2",
        "audioCodec": "G711"
      }]
    }
  }
}

ペイロードの詳細

フィールド 説明 必須
cameraStreams ストリームに関する情報を提供するcameraStream構造の配列です。 オブジェクト配列
cameraStream.protocol ストリームのプロトコル(RTSPなど)です。 文字列
cameraStream.resolution ストリームの解像度を指定する解像度オブジェクトです。widthおよびheightプロパティが含まれます。 オブジェクト
cameraStream.resolution.width ビデオストリームの幅を指定します。 整数
cameraStream.resolution.height ビデオストリームの高さを指定します。 整数
cameraStream.authorizationType 認可タイプを指定します。使用できる値は「BASIC」、「DIGEST」、「NONE」です。 文字列
cameraStream.videoCodec ストリームのビデオコーデックです。使用できる値は「H264」、「MPEG2」、「MJPEG」、「JPG」です。 文字列
cameraStream.audioCodec ストリームのオーディオコーデックです。使用できる値は「G711」、「AAC」、「NONE」です。 文字列

プロパティとイベント

このインターフェースでは、以下のように応答する必要があります。

  • 同期的に応答する。つまり、AlexaからLambda関数に対して応答を送信します。

応答を送信する場合、メッセージのcontextにインターフェースのプロパティの状態を含める必要があります。

プロパティ

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

応答

InitializeCameraStreamsディレクティブが正常に処理された場合、ユーザーはResponseイベントを使用して応答する必要があります。このメッセージのペイロードには、指定されたエンドポイントのカメラストリームが含まれます。

応答の例

{
  "event": {
    "header": {
      "namespace": "Alexa.CameraStreamController",
      "name": "Response",
      "payloadVersion": "3",
      "messageId": "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
    },
    "endpoint": {
       "endpointId": "appliance-001"
    },
    "payload": {
      "cameraStreams": [ {
        "uri": "rtsp://username:password@link.to.video:443/feed1.mp4",
        "expirationTime": "2017-02-03T16:20:50.52Z",
        "idleTimeoutSeconds": 30,
        "protocol": "RTSP",
        "resolution": {
          "width": 1920,
          "height": 1080
        },
        "authorizationType": "BASIC",
        "videoCodec": "H264",
        "audioCodec": "AAC"
      }
     ],
      "imageUri": "https://username:password@link.to.image/image.jpg"
    }
  }
}

ペイロードの詳細

フィールド 説明 必須
cameraStreams ストリームに関する情報を提供するcameraStream構造の配列です。 オブジェクト配列
cameraStream.uri カメラストリームのURIです。これは、expirationTimeで有効期限を指定する一時URIとすることもできます。このURIが期限切れとなりエラーが発生すると、AlexaはInitializeCameraStreamsを新たに呼び出し、期限切れでない新しいURIを取得します。 文字列
cameraStream.expirationTime ストリームの有効期限を示すISO 8601フォーマットの日付です。UTCで指定する必要があります。 文字列
cameraStream.idleTimeoutSeconds ストリームのタイムアウト値を示します。 整数
cameraStream.protocol ストリームのプロトコル(RTSPなど)です。 文字列
cameraStream.resolution ストリームの解像度を指定する解像度オブジェクトです。widthおよびheightプロパティが含まれます。 オブジェクト
cameraStream.resolution.width ビデオストリームの幅を指定します(1920、1280など)。 整数
cameraStream.resolution.height ビデオストリームの高さを指定します(1080など)。 整数
cameraStream.authorizationType 認可タイプを指定します。使用できる値は「BASIC」、「DIGEST」、「NONE」です。 文字列
cameraStream.videoCodec ストリームのビデオコーデックです。使用できる値は「H264」、「MPEG2」、「MJPEG」、「JPG」です。 文字列
cameraStream.audioCodec ストリームのオーディオコーデックです。使用できる値は「G711」、「AAC」、「NONE」です。 文字列
imageUri リクエストに指定されたカメラの以前のフィードの静止画像のURIです。 文字列

ErrorResponse

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

その他のサンプルコード

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

CameraController