Fire TV対応アプリ用のVSK(Video Skills Kit)を使用すると、リモコンを使用せずにアプリコンテンツを発見・検索し、楽しむことができます。アプリにVSKを統合するための前提条件は、まずカタログ統合を行い、Fire TVでユニバーサル検索・閲覧機能と統合することです。 現時点では、カタログ統合を利用できるのは一部の開発者のみです。VSKとカタログ統合を組み合わせることにより、Fire TVでさまざまな方法でコンテンツを表示できます。
VSKを使用すると、アプリのエクスペリエンスを音声で操作できるようになります。ユーザーが「アレクサ、『バットマン』を見せて」(SearchAndPlay)や「アレクサ、『バットマン』を探して」(SearchAndDisplayResults)などと話しかけると、Alexaがアプリにディレクティブを送信するので、アプリではユーザーに対して再生や検索結果の表示を行うことができます。ユーザーは動詞を省略することも可能で、単に「バットマン」とだけ言った場合、Alexaはこれを検索リクエストとして処理します。Alexaは「アレクサ、トム・ハンクスの映画を探して」といった出演俳優による映画の検索や、「アレクサ、コメディを探して」といった映画ジャンルでの検索など、よりあいまいなリクエストにも対応します。
Fire TVでのVSKの動作のしくみ
VSKの統合にアプリのみの実装方法を使用する場合、AlexaビデオスキルAPIはFire TVデバイス上のアプリに直接ディレクティブを送信します。Fire TVには「VSK Agent」と呼ばれるサービスがあり、このサービスがAlexaディレクティブを受信して、インテントとしてブロードキャストします。アプリでは、BroadcastReceiverでそのインテントを処理します。VSKの統合はすべて、Androidコード内で完結します。既にカタログ統合が完了していて、検索などを行うためのテキスト入力を処理するロジックがアプリにある場合は、VSK統合は短期間で完了することができます(2週間以内)。
ユーザーのリクエストの解釈、インテントの確認、ディレクティブへのパッケージ化といった難しい処理はクラウドのAlexaサービスが行うため、アプリではそれぞれのロジックに基づいてリクエストを処理できます。アプリに送信されるディレクティブには、構造化された解決済みの形でリクエストが表現されており、これにはVideo、Actor、Genre、MediaTypeなどのエンティティが含まれます。検索および再生の発話と送信されるディレクティブの包括的なリストについては、SearchAndPlayおよびSearchAndDisplayResultsを参照してください。
優れた検索エクスペリエンスを構築するためのベストプラクティス
ここでは、VSKを使用して優れた検索エクスペリエンスを構築するためのベストプラクティスを紹介します。
SearchAndDisplayResultsディレクティブの処理
以下は、「アレクサ、『バットマン』を探して」というユーザーからのリクエストに対応するため、Alexaが送信するSearchAndDisplayResultsディレクティブです。
EXTRA_DIRECTIVE_NAMESPACE: Alexa.RemoteVideoPlayer
EXTRA_DIRECTIVE_NAME: SearchAndDisplayResults
EXTRA_DIRECTIVE_PAYLOAD_VERSION: 3
EXTRA_DIRECTIVE_PAYLOAD: payload
payloadの内容は以下のとおりです。
{
"payload": {
"entities": [
{
"externalIds": {
"ENTITY_ID": "0"
},
"type": "Franchise",
"uri": "entity://avers/franchise/Batman",
"value": "Batman"
}
],
"searchText": [
{
"transcribed": "batman"
}
],
"timeWindow": {
"end": "2016-09-07T23:59:00+00:00",
"start": "2016-09-01T00:00:00+00:00"
}
}
}
VSK統合では、アプリにBroadcastRecieverクラスを作成します。VSK Agentが、ディレクティブをインテントにパッケージ化して、onReceiveメソッドに渡します。JSONパーサーのサポートにより、transcribedからユーザーの検索リクエストをテキスト変換したものとentitiesオブジェクトの両方を取得できます。このオブジェクトには、Title、Genre、Actor、Franchise、Season、Episode、MediaTypeなど、検索する一連のentityオブジェクトが含まれます。この例では、アプリに「バットマン」の検索結果を表示します。
アプリがディレクティブを正常に処理した場合(または処理しなかった場合)、BroadcastRecieverクラスは成功インテントをtrue(成功の場合)またはfalse(失敗の場合)の形式で返す必要があります。
次のステップ
VSKの統合の詳細については、こちらの開発者ドキュメントを参照してください。Fire TV対応アプリへのVSK統合に関して要点をまとめたビデオチュートリアルも参考にしてください。