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
オブジェクトも含めます。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
エンドポイントでスナップショット機能を使用できるかどうかを指定します。Alexaは、この値が |
ブール値 |
◯ |
|
スナップショット機能を使用できない理由を指定します。 |
文字列 |
✕ |
|
新しいスナップショットをリクエストするまでの最小間隔(秒)。 |
長整数 |
✕ |
検出応答の例
以下は、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
ディレクティブのペイロードの詳細を示しています。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
サポートされている場合、新しいスナップショットを返すようカメラに指示します。サポートされていない場合、カメラはキャッシュされたスナップショット(存在する場合)を返すことができます。 |
ブール値 |
✕ |
GetSnapshotの応答
GetSnapshot
ディレクティブを正しく処理したら、Snapshot
イベントで応答します。応答にはスナップショットイメージのURIを含めます。
キャッシュされた画像を送信する場合、またはデバイスが8秒以内にスナップショットを撮影できる場合、同期応答を送信します。デバイスが撮影に8秒以上かかる場合、まずDeferredResponseを送信し、その後スナップショットを利用できるようになった時点で非同期のSnapshot
イベントを送信します。応答には相関トークンを含めてください。非同期で応答する場合はscope
も含め、認可トークンを指定します。
以下は、同期Snapshot
応答の例です。
以下は、DeferredResponse
応答と、それに続く非同期Snapshot
応答の例です。
次の表は、Snapshot
イベントのペイロードの詳細を示しています。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
スナップショット画像へのリンクを定義します。 |
オブジェクト |
◯ |
|
エンドポイント用に保存されているスナップショットのURIを指定します。 |
文字列 |
◯ |
|
URIの有効期限。 |
文字列 |
◯ |
|
URIへのアクセスに必要な認証のタイプ。 |
文字列 |
◯ |
|
スナップショットのタイムスタンプ(スナップショットが作成された時刻)。 |
文字列 |
◯ |
|
|
数値 |
◯ |
GetSnapshotのエラー処理
GetSnapshot
ディレクティブを正しく処理できなかった場合は、Alexa.SmartVision.SnapshotProvider.ErrorResponse
イベントで応答します。スナップショット機能固有のエラーではない場合は、汎用のAlexa.ErrorResponse
イベントで応答することもできます。
関連トピック
最終更新日: 2025 年 03 月 07 日