Discoverディレクティブ
ビデオスキルでサポートされる機能を特定するために、AmazonはDiscovery APIを介してDiscover
ディレクティブを送信します。このDiscoverディレクティブへのレスポンスで、AlexaからLambda関数に送信されるディレクティブの種類が決まります。
たとえば、チャンネル変更をサポートしていることを指定した場合、「チャンネルをPBSに変えて」とユーザーが発話すると、Alexaは"type": "Channel"ペイロードを含む
GetPlayableItems
ディレクティブを送信します。しかし、このサポートを指定しない場合、Alexaはこのディレクティブを送信しません。
Discoverディレクティブ
ユーザーがAlexaスキルをAmazonアカウントに関連付けると、AlexaはDiscoverディレクティブを送信します。その後、AlexaはDiscoverディレクティブを定期的に送信して、検出されたデバイスを更新します。
Discover
ディレクティブを受信したら、スキルがサポートしているディレクティブを指定する必要があります。サポートされている処理は、supportedOperations
配列で指定します。
(Fire TV対応アプリの実装では、Alexa Client Libraryを初期化する際にAndroidアプリの機能サポートも指定しましたが、マルチモーダル実装では、Lambda関数でサポートを指定するだけで構いません。)
Discoverの例
Alexaから送信されるDiscover
ディレクティブの例を次に示します。
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "a1dccea0-fe52-45ca-9ed9-a03a45be6fb6"
},
"payload": {
"scope": {
"type": "BearerToken",
"token": "1bdaa2eb-4aa3-d0dc-fb10-7a5513981cf8"
}
}
}
}
ペイロードの説明
payload
のフィールドについて次の表で説明します。
ペイロードの説明
フィールド
説明
データ型
scope
(必須)
リクエストの範囲(token
およびtype
プロパティが含まれます)。
オブジェクト
token
(必須)
OAuth2ベアラートークン。
例:b68f05cc-6a25-4134
文字列
type
(必須)
スコープの種類(現在サポートされている値はBearerToken
です)。
例: BearerToken
列挙型
レスポンスの例
Discover
ディレクティブに対するレスポンス(Discover.Response
)の例を次に示します。レスポンスでは、サポートされている処理を指定します。
{
"event": {
"header" : {
"messageId" : "directive.header.messageId",
"name" : "Discover.Response",
"namespace": "Alexa.Discovery",
"payloadVersion": "3"
},
"payload": {
"endpoints": [{
"endpointId": "ALEXA_VOICE_SERVICE_EXTERNAL_MEDIA_PLAYER_VIDEO_PROVIDER",
"endpointTypeId": "TEST_VSK_MM",
"manufacturerName": "TEST_VSK_MM",
"friendlyName": "TEST_VSK_MM",
"description": "TEST_VSK_MM",
"displayCategories": ["APPLICATION"],
"cookie": {},
"capabilities": [{
"type": "AlexaInterface",
"interface": "Alexa.RemoteVideoPlayer",
"version": "1.0"
}, {
"type": "AlexaInterface",
"interface": "Alexa.PlaybackController",
"version": "1.0"
}, {
"type": "AlexaInterface",
"interface": "Alexa.SeekController",
"version": "1.0"
}, {
"type": "AlexaInterface",
"interface": "Alexa.ChannelController",
"version": "1.0"
},
{
"type": "AlexaInterface",
"interface": "Alexa.MultiModalLandingPage",
"version": "1.0"
}
]
}]
}
}
};
ペイロードの説明
ペイロードの説明
フィールド
説明
データ型
endpoints
(必須)
ユーザーのデバイスクラウドアカウントに関連付けられたデバイスを表すエンドポイントオブジェクト配列。
オブジェクト
capabilities
(必須)
スキルがエンドポイントに対してサポートしている機能インターフェース。詳細については、以下の機能オブジェクトを参照してください。
機能オブジェクトの配列
interface
(必須)
デバイスのアクションを記述するAlexa.Interface
の修飾名。
例: Alexa.RemoteVideoPlayer
文字列
type
(必須)
スコープの種類(現在サポートされている値はBearerToken
です)。
例: BearerToken
列挙型
version
(省略可能)
エンドポイントでサポートしているインターフェースのバージョン。
例: 1.0
文字列
cookie
(省略可能)
スキルアダプターで使用するデバイスに関する追加情報を表す、名前と値のペアで構成される文字列。このプロパティの内容は5000バイト以内に収める必要があります(Amazon側はこのフィールドを使用せず、開発者が入力した値もユーザーには表示されません。ただし、ビデオスキル名と同じ値を入力することはできません)。
例:key1
オブジェクト
extraDetail
(省略可能)
cookie
オブジェクトのキー。
例:key1
description
(必須)
デバイスの説明。会社名または実装を含む必要があります。この値は最大128文字までです(Amazon側はこのフィールドを使用せず、開発者が入力した値もユーザーには表示されません。ただし、ビデオスキル名と同じ値を入力することはできません)。
例: Amazon Streaming Media App
文字列
endpointId
(必須)
エンドポイントの識別子。たとえば、VSKTV
などです。注: ビデオスキル名と同じ値を入力することはできません。また、値の先頭にTEST_
やPROD_
を付けて、ビデオスキル名と明確に区別することをお勧めします。
例: TEST_VSKTV
文字列
friendlyName
(必須)
ビデオスキルの実装タイプを識別するための名前。この値は最大128文字までで、特殊文字や句読点を含めることはできません。注: ビデオスキル名と同じ値を入力しないでください。たとえば、ビデオスキルの名前が「ACME Media」の場合、フレンドリー名には「ACME Media」と入力しないでください。同じ名前を入力すると、エラーになります。名前に何らかの接頭辞を付けることをお勧めします(「TEST_ACME_Media」や「PROD_ACME_Media」など)。
例: TEST_VSK_FTV
文字列
manufacturerName
(必須)
デバイスのメーカーの名前。この値は最大128文字までです(Amazon側はこのフィールドを使用せず、開発者が入力した値もユーザーには表示されません。ただし、ビデオスキル名と同じ値を入力することはできません)。
例: Amazon
文字列
機能オブジェクト
capabilities
配列は、interface
、type
、version
、supportOperations
の各プロパティをそれぞれに含むオブジェクトのリストです。たとえば、再生機能のサポートを宣言するcapabilities
配列内の項目は次のようになります。
{
"type": "AlexaInterface",
"interface": "Alexa.PlaybackController",
"version": "3",
"supportedOperations" : ["Play", "Pause", "Stop", "StartOver", "Next", "Previous",
"Rewind", "FastForward"]
}
supportedOperations
プロパティを含んでいるインターフェースはAlexa.PlaybackController
インターフェースだけです。
ビデオスキルでサポートされている機能とその関連ディレクティブを次の表に示します。
機能
説明
Alexa.RemoteVideoPlayer
SearchAndPlay
ディレクティブとSearchAndDisplayResults
ディレクティブをスキルでサポートできます。これらのディレクティブを使用すると、ユーザーはビデオコンテンツの検索や再生を行うことができます(「アレクサ、『ブレイキング・バッド』を検索して」や「アレクサ、『ブレイキング・バッド』を見せて」など)。
Alexa.PlaybackController
再生制御ディレクティブをスキルでサポートできます。このディレクティブは、オーディオまたはビデオコンテンツの再生、停止、ナビゲーションに使用されます(「アレクサ、早送りして」や「アレクサ、停止して」など)。 上記のように、Alexa.PlaybackController
インターフェースではsupportedOperations
プロパティも使用できます。使用できるプロパティは、Play
、Pause
、Stop
、StartOver
、Next
、Previous
、Rewind
、FastForward
です。
Alexa.SeekController
シーク制御ディレクティブをスキルでサポートできます。このディレクティブを使用すると、ユーザーは「アレクサ、早送りして」や「アレクサ、早戻しして」ではなく、「アレクサ、60秒早送りして」や「アレクサ、5分早戻しして」といったリクエストを使用して、メディアタイムラインの特定の位置に移動できます(アプリでメディアアイテムの早送りまたは早戻しのみが可能で、タイムラインの別のポイントまでシークできない場合は、代わりにAlexa.PlaybackController
インターフェースを実装してください)。
Alexa.ChannelController
ChangeChannel
ディレクティブをビデオスキルでサポートできます。このディレクティブは、エンターテインメントデバイスのチャンネルを変更または進めるために使用されます(「アレクサ、チャンネルをPBSに変えて」など)。
Alexa.MultiModalLandingPage
ランディングページの設定をビデオスキルでサポートできます。たとえば、ユーザーが「ビデオホーム」と発話してビデオスキルをタップすると、ビデオのリストが表示されます。