Alexa.SmartVision.SnapshotProviderインターフェース1.1


Alexa.SmartVision.SnapshotProviderインターフェース1.1

Alexa.SmartVision.SnapshotProviderインターフェースをAlexaスキルに実装すると、セキュリティカメラやその他のカメラデバイスからスナップショット画像を取得して表示するよう、ユーザーがAlexaにリクエストできるようになります。

Alexa.SmartVision.SnapshotProviderインターフェースがサポートする言語については、Alexaインターフェースとサポートしている言語の一覧を参照してください。メッセージプロパティの定義については、Alexaインターフェースのメッセージとプロパティを参照してください。

スナップショット画像のガイドライン

画像はURIとしてAlexaに送信します。ユーザーがAlexaアプリにカメラデバイスを表示すると、Alexaはスナップショット画像をダウンロードして表示します。

スナップショット画像は以下のガイドラインを満たしている必要があります。

  • サポートされているメディアタイプは JPEGまたはPNGです。
  • 必要な解像度は 360ピクセル以上です。
  • URIに有効期限を設定します。Amazonが推奨する期限は10分間です。
  • Alexaは、以下のヘッダーフィールドを指定したHTTP GETリクエストをURIに送信して、画像をダウンロードします。
    Accept: image/jpeg, image/png
    Authorization: Bearer {access token}
    
  • 指定されたURIからのURIリダイレクトはサポートされません。
  • URIのContent-typeヘッダーフィールドには以下のいずれかのメディアタイプを指定する必要があります。
    • image/jpeg
    • image/png(メディアタイプを指定しなかった場合のデフォルト値)
  • 一般に公開されているURIは使用せず、アクセスには認証を要求する必要があります。Alexaはアクセストークン認証をサポートしており、URIダウンロードのAuthorizationヘッダーフィールドでアクセストークンを送信します。トークンを受け取ったら、サービスで次のチェックを実行します。
    • アクセストークンが存在することを確認します。
    • トークンがリソースサーバーの有効なユーザーを表すことを確認します。
    • そのユーザーに当該スナップショットに対する正しいアクセス権限があることを確認します。
  • URIが無効または期限切れになった場合は、HTTP Status 410を返します。エラーを受け取ると、AlexaはGetSnapshotディレクティブを再試行して新しいURIを取得します。

発話

Alexa.SmartVision.SnapshotProviderインターフェースにはユーザー発話が定義されません。

レポート可能なプロパティ

Alexa.SmartVision.SnapshotProviderインターフェースには、レポート可能なプロパティが定義されません。

検出

Alexa.SmartVision.SnapshotProviderインターフェースをサポートするエンドポイントを、Alexa.Discoveryの標準検出メカニズムを使用して記述します。表示カテゴリーにはCAMERAを使用します。表示カテゴリーの一覧は、表示カテゴリーを参照してください。

Alexaにデバイスの健全性を通知する場合、Alexa.EndpointHealthインターフェースも実装してください。

configurationオブジェクト

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

プロパティ 説明 必須

isAvailable

エンドポイントでスナップショット機能を使用できるかどうかを指定します。Alexaは、この値がtrueの場合にのみgetSnapshotディレクティブを送信します。

ブール値

unavailabilityReason

スナップショット機能を使用できない理由を指定します。isAvailablefalseに設定した場合に指定します。
有効な値: SUBSCRIPTION_REQUIREDDISABLED_BY_USER

文字列

minRefreshIntervalInSeconds

新しいスナップショットをリクエストするまでの最小間隔(秒)。
Alexaは、この値をgetSnapshotディレクティブを送信する基準の1つとして使用します。ユーザーがカメラアプリに設定した値、またはスキルで定義されている固定のリフレッシュレートに設定してください。

長整数

検出応答の例

以下は、Alexa.SmartVision.SnapshotProviderインターフェースをサポートするデバイスへのAlexa.Discover.Responseメッセージの例です。

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

{
    "event": {
        "header": {
            "namespace": "Alexa.Discovery",
            "name": "Discover.Response",
            "payloadVersion": "3",
            "messageId": "一意の識別子、バージョン4 UUIDが望ましい"
        },
        "payload": {
            "endpoints": [{
                "endpointId": "エンドポイントの一意のID",
                "manufacturerName": "エンドポイントのメーカー名",
                "description": "Alexaアプリに表示される説明",
                "friendlyName": "Alexaアプリに表示されるデバイス名",
                "displayCategories": ["CAMERA"],
                "additionalAttributes": {
                    "manufacturer": "エンドポイントのメーカー名",
                    "model": "デバイスのモデル",
                    "serialNumber": "デバイスのシリアル番号",
                    "firmwareVersion": "デバイスのファームウェアバージョン",
                    "softwareVersion": "デバイスのソフトウェアバージョン",
                    "customIdentifier": "デバイスのカスタム識別子"
                },
                "capabilities": [{
                        "type": "AlexaInterface",
                        "interface": "Alexa.SmartVision.SnapshotProvider",
                        "version": "1.1",
                        "configuration": {
                            "isAvailable": false,
                            "unavailabilityReason": "SUBSCRIPTION_REQUIRED",
                            "minRefreshIntervalInSeconds": 180
                        }
                    },
                    {
                        "type": "AlexaInterface",
                        "interface": "Alexa.EndpointHealth",
                        "version": "3.1",
                        "properties": {
                            "supported": [{
                                "name": "connectivity"
                            }],
                            "proactivelyReported": true,
                            "retrievable": true
                        }
                    },
                    {
                        "type": "AlexaInterface",
                        "interface": "Alexa",
                        "version": "3"
                    }
                ]
            }]
        }
    }
}

AddOrUpdateReport

エンドポイントの機能サポートが変更された場合は、Alexa.Discovery.AddOrUpdateReportイベントをプロアクティブに送信する必要があります。たとえば、サブスクリプションステータスが変わったためにスナップショットを利用できるようになった場合などです。詳細については、AddOrUpdateReportイベントを参照してください。

AddOrUpdateReportイベントの例

以下は、機能を利用できるようになった場合のAddOrUpdateReportメッセージの例です。

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

{
    "event": {
        "header": {
            "namespace": "Alexa.Discovery",
            "name": "AddOrUpdateReport",
            "payloadVersion": "3",
            "messageId": "一意の識別子、バージョン4 UUIDが望ましい"
        },
        "payload": {
            "endpoints": [{
                "endpointId": "エンドポイントの一意のID",
                "manufacturerName": "サンプルメーカー",
                "description": "Alexaアプリに表示される説明",
                "friendlyName": "Alexaアプリに表示されるデバイス名",
                "displayCategories": ["CAMERA"],
                "additionalAttributes": {
                    "manufacturer": "サンプルメーカー",
                    "model": "サンプルモデル",
                    "serialNumber": "デバイスのシリアル番号",
                    "firmwareVersion": "デバイスのファームウェアバージョン",
                    "softwareVersion": "デバイスのソフトウェアバージョン",
                    "customIdentifier": "デバイスのカスタム識別子"
                },
                "cookie": {},
                "capabilities": [{
                        "type": "AlexaInterface",
                        "interface": "Alexa.SmartVision.SnapshotProvider",
                        "version": "1.1",
                        "configuration": {
                            "isAvailable": true,
                            "minRefreshIntervalInSeconds": 180
                        }
                    },
                    {
                        "type": "AlexaInterface",
                        "interface": "Alexa.EndpointHealth",
                        "version": "3.1",
                        "properties": {
                            "supported": [{
                                "name": "connectivity"
                            }],
                            "proactivelyReported": true,
                            "retrievable": true
                        }
                    },
                    {
                        "type": "AlexaInterface",
                        "interface": "Alexa",
                        "version": "3"
                    }
                ]
            }]
        }
    }
}

ディレクティブ

Alexa.SmartVision.SnapshotProviderインターフェースは以下のディレクティブを定義します。

GetSnapshot

ユーザーがエンドポイントで撮影されたスナップショットをリクエストできるよう、GetSnapshotディレクティブをサポートします。

GetSnapshotディレクティブの例

以下は、スナップショットのURIを取得するリクエストの例です。

{
    "directive": {
        "header": {
            "namespace": "Alexa.SmartVision.SnapshotProvider",
            "name": "GetSnapshot",
            "messageId": "一意のバージョン4 UUID",
            "correlationToken": "opaque相関トークン",
            "payloadVersion": "1.1"
        },
        "endpoint": {
            "scope": {
                "type": "BearerToken",
                "token": "OAuth2ベアラートークン"
            },
            "endpointId": "エンドポイントID",
            "cookie": {}
        },
        "payload": {
            "preferOnDemandSnapshot": true
        }
    }
}

GetSnapshotディレクティブのペイロード

次の表は、GetSnapshotディレクティブのペイロードの詳細を示しています。

プロパティ 説明 必須

preferOnDemandSnapshot

サポートされている場合、新しいスナップショットを返すようカメラに指示します。サポートされていない場合、カメラはキャッシュされたスナップショット(存在する場合)を返すことができます。
trueに設定すると、AlexaはminRefreshIntervalInSecondsの設定を無視します。
デフォルト値はfalseです。

ブール値

GetSnapshotの応答

GetSnapshotディレクティブを正しく処理したら、Snapshotイベントで応答します。応答にはスナップショットイメージのURIを含めます。

キャッシュされた画像を送信する場合、またはデバイスが8秒以内にスナップショットを撮影できる場合、同期応答を送信します。デバイスが撮影に8秒以上かかる場合、まずDeferredResponseを送信し、その後スナップショットを利用できるようになった時点で非同期のSnapshotイベントを送信します。応答には相関トークンを含めてください。非同期で応答する場合はscopeも含め、認可トークンを指定します。

以下は、同期Snapshot応答の例です。

以下は、DeferredResponse応答と、それに続く非同期Snapshot応答の例です。

次の表は、Snapshotイベントのペイロードの詳細を示しています。

プロパティ 説明 必須

value

スナップショット画像へのリンクを定義します。

オブジェクト

value.uri

エンドポイント用に保存されているスナップショットのURIを指定します。
詳細については、スナップショット画像のガイドラインを参照してください。

文字列

value.uriExpirationTime

URIの有効期限。
ISO 8601形式で定義し、YYYY-MM-DDThh:mm:ssZとなります。

文字列

value.authenticationType

URIへのアクセスに必要な認証のタイプ。
詳細については、スナップショット画像のガイドラインを参照してください。
有効な値: ACCESS_TOKEN

文字列

timeOfSample

スナップショットのタイムスタンプ(スナップショットが作成された時刻)。
ISO 8601形式で定義し、YYYY-MM-DDThh:mm:ssZとなります。

文字列

uncertaintyInMilliseconds

timeOfSampleフィールドの不確実性をミリ秒で指定します。
たとえば、カメラの前での動作が画像処理ソフトウェアに届くまでの時間による不確実性などです。

数値

GetSnapshotのエラー処理

GetSnapshotディレクティブを正しく処理できなかった場合は、Alexa.SmartVision.SnapshotProvider.ErrorResponseイベントで応答します。スナップショット機能固有のエラーではない場合は、汎用のAlexa.ErrorResponseイベントで応答することもできます。


このページは役に立ちましたか?

最終更新日: 2025 年 03 月 07 日