開発者コンソール

Alexa.RemoteVideoPlayerインターフェース: SearchAndPlay


Alexa.RemoteVideoPlayerインターフェース: SearchAndPlay

「『ボッシュ』を再生して」や「ウォリアーズの試合を見せて」などと、特定ビデオコンテンツの再生をユーザーがAlexaに依頼すると、Alexa.RemoteVideoPlayerインターフェースはSearchAndPlayディレクティブをLambdaに送信します。

SearchAndPlayディレクティブの発話

ユーザーが以下の発話を行うと、AlexaはLambdaにSearchAndPlayディレクティブを送信します。

機能 サンプル発話 想定されるレスポンス
タイトルを再生

Watch Breaking Bad

Spiele {title}

Öffne {title}

mets breaking bad

mets breaking bad

joue breaking bad

fai partire breaking bad

metti breaking bad

Pon la pelicula (title)

Pon breaking bad

Pon la pelicula (title)

Pon breaking bad

{title}を再生して

{title}を見せて

assistir {title}

ver {title}

{title} दिखाओ

{title} चलाओ

リクエストされたメディアが再生されます。一致するコンテンツが複数ある場合、ユーザーは目的のメディアを選択するように求められます。

メディアタイプで再生

Watch a movie

Spiele Filme

Spiele einen Film

mets un film

je veux voir un film

mets un film

joue un film

fai partire un film

metti un film

pon una película

(quiero) ver una película

pon una película

pon una peli

{media type}を再生して

{media type}を見せて

assistir filmes

ver filmes

एक {media type} चलाओ

एक {media type} चलाओ

タイトル以外のリクエストに一致するメディアが(ユーザーへのおすすめビデオを選び出すアルゴリズムによって)再生されるか、検索結果リストがユーザーに表示されます。

俳優で再生

Watch Sean Connery

Play a movie with Tom Hanks

spiele einen Film mit {actor} ab.

<Ann Blyth, Axel Deller, John Oliver>

mets un film de sean connery

je veux voir un film avec sean connery

mets un film de sean connery

mets un film avec sean connery

metti film con adriano celentano

fai partire un film con sean connery

pon (una película) de Sean Connery

(quiero) ver (una película) de Sean Connery

pon (una película) de Sean Connery

ponme (una película) de Sean Connery

{actor}を再生して

{actor}を見せて

assistir um filme com {actor/actress}

ver um filme com {actor/actress}

{actor}की movie चलाओ

{actor} की film लगा दो

俳優が出演しているメディアが(ユーザーへのベストマッチを選び出すアルゴリズムによって)再生されるか、検索結果リストがユーザーに表示されます。

シーズン番号で<タイトル>を再生

Watch breaking bad season two

Spiele {title} Staffel {X}

Spiele die {X}. Staffel von {title}

mets la saison 2 de breaking bad

mets la deuxième saison de breaking bad

mets la deuxième saison de breaking bad

joue la deuxième saison de breaking bad

metti la seconda stagione di breaking bad

fai partire la seconda stagione di breaking bad

Pon la temporada 2 de breaking bad

pon la segunda temporada de breaking bad

pon la temporada 2 de breaking bad

pon la segunda temporada de breaking bad

{title} シーズン{season number}を再生して

{title} シーズン{season number}を見せて

assistir {title} temporada {cardinal number}

ver {title} temporada {cardinal number}

{title} season two चलाओ

{title} season two चला दो

シリーズの最後に視聴したエピソードが視聴途中の場合は、そのエピソードが再生されます。視聴が完了している場合は、次の未視聴エピソードが再生されます。

エピソード番号で<タイトル>を再生

Watch breaking bad episode five

Spiele {title} Folge 5 ab.

<Breaking Bad>

mets l' épisode 5 de breaking bad

mets le cinquième épisode de breaking bad

mets le cinquième épisode de breaking bad

joue le cinquième épisode de breaking bad

metti il quinto episodio di breaking bad

fai partire il quinto episodio di breaking bad

pon el episodio 5 de breaking bad

pon el capítulo 5 de breaking bad

pon el episodio 5 de breaking bad

pon el capítulo 5 de breaking bad

{title} エピソード{episode number}を再生して

{title} エピソード{episode number}を見せて

assistir {title} episódio {cardinal number}

ver {title} number} episódio {cardinal number}

watch {title} episode five

play {title} episode five

ユーザーが最後に視聴したエピソードから、適切なシーズンが特定されます。シリーズの最後に視聴したエピソードが視聴途中の場合は、そのエピソードが再生されます。視聴が完了している場合は、次の未視聴エピソードが再生されます。

シーズン番号とエピソード番号で<タイトル>を再生

Watch breaking bad season two episode five

Spiele {title} Staffel 2 Folge 5 ab.

<Breaking Bad>

mets l' épisode 5 de la saison 2 de breaking bad

mets l' épisode 5 de la deuxième saison de breaking bad

mets l' épisode 5 de la saison 2 de breaking bad

mets l' épisode 5 de la deuxième saison de breaking bad

metti il quinto episodio della seconda stagione di breaking bad

fai partire il quinto episodio della seconda stagione di breaking bad

pon el episodio 5 de la temporada 2 de breaking bad

pon el episodio 5 de la segunda temporada de breaking bad

pon el episodio 5 de la temporada 2 de breaking bad

pon el episodio 5 de la segunda temporada de breaking bad

{title} シーズン{season number}エピソード{episode number}を再生して

{title} シーズン{season number}エピソード{episode number}を見せて

assistir {title} {ordinal number} temporada episódio {cardinal number}

ver {title} {ordinal number} temporada episódio {cardinal number}

play {title} season two episode five

{title} season two episode five लगाओ

リクエストされたシーズンとエピソードに対応するコンテンツが再生されます。

シリーズの<タイトル>で再生

Watch star trek

Spiele {franchise title}

Spiele {franchise title} Filme

mets star trek

je veux voir star trek

mets star trek

joue star trek

metti star trek

fai partire star trek

pon star trek

(quiero) ver star trek

pon star trek

pon una película de star trek

{franchise title}を再生して

{franchise title}を見せて

assistir {franchise title}

ver {franchise title}

{franchise title} चलाओ

watch {franchise title}

リクエストされたシリーズの検索結果から最上位のおすすめが再生されるか、一致するシリーズのリストがユーザーに表示されます。

キャラクター名で再生

Watch james bond

spiele einen Film mit {actor} ab.

<James Bond>

mets james bond

je veux voir james bond

mets james bond

mets un film de james bond

metti james bond

metti un film di james bond

pon james bond

(quiero) ver james bond

pon james bond

pon una película de james bond

{character}を再生して

{character}を見せて

assistir filmes com {character name}

ver filmes com {character name}

{character name} की picture चलाओ

{character name} की movie चलाओ

キャラクター名に一致するメディアが(ユーザーへのおすすめメディアを選び出すアルゴリズムによって)再生されるか、メディアの検索結果リストがユーザーに表示されます。

ジャンル名で再生

Watch comedy

einen (title) (film/serie) ansehen

mets un film policier

mets une émission sportive

mets film d' comédie

mets une comédie

metti una commedia

fam mi vedere una commedia

pon una comedia

(quiero) ver una comedia

pon una comedia

pon una película de comedia

{genre}を再生して

{genre}を見せて

assistir uma/um {genre name}

ver uma/um {genre name}

watch {genre name}

play {genre name}

リクエストされたジャンルからメディアが(ユーザーへのおすすめメディアを選び出すアルゴリズムによって)再生されるか、メディアの検索結果リストがユーザーに表示されます。

スポーツのチームで再生

Watch seahawks

Zeig mir {sports team}

Zeig mir das Spiel von {sports team}

mets les bleus

je veux voir les bleus

mets les canadiens

mets le match des canadiens

fam mi vedere la Juventus

<Aberdeen, ac milan>

pon el Madrid

(quiero) ver el Madrid

pon el América

pon el partido del América

{sports team}を再生して

{sports team}を見せて

assistir {sports team}

ver {sports team}

{sports team} चलाओ

{sports team} की game चलाओ

スポーツのチームに一致するメディアが(ユーザーへのおすすめメディアを選び出すアルゴリズムによって)再生されるか、メディアの検索結果リストがユーザーに表示されます。

スポーツの種類で再生

Watch soccer

Zeig mir {sports type}

{sports type} anschauen

mets du foot

je veux voir du foot

mets du hockey

mets le hockey

fam mi vedere una partita di calcio

metti la/una partita

pon el fútbol

(quiero) ver el fútbol

pon fútbol

ponme fútbol

{sports type}を再生して

{sports type}を見せて

assistir {sports type}

ver {sports type}

watch {sports type}

{sports type} चलाओ

スポーツの種類に一致するメディアが(ユーザーへのおすすめメディアを選び出すアルゴリズムによって)再生されるか、検索結果リストがユーザーに表示されます。

スポーツのリーグで再生

Watch n. b. a. league

Zeig mir die {sports league}

{sports league} anschauen

Mets la n.b.a.

Je veux voir la n.b.a.

mets la l. n. h.

je veux regarder la l. n. h.

fam mi vedere la n.b.a.

metti l'n.b.a.

pon la n. b. a.

(quiero) ver la n. b. a.

pon la n. b. a.

ponme la n. b. a.

{sports league}を再生して

{sports league}を見せて

assistir {sports league}

ver {sports league}

watch {sports league}

{sports league} चलाओ

スポーツのリーグに一致するメディアが(ユーザーへのおすすめメディアを選び出すアルゴリズムによって)再生されるか、検索結果リストがユーザーに表示されます。

スポーツのイベントで再生

Watch soccer game

Zeig mir das {sports event}

Zeig mir ein {sports event}

mets un match de foot/football

je veux voir un match de foot/football

mets une partie de hockey

je veux regarder une partie de hockey

metti una partita di calcio

fam mi vedere una/la partita

pon el partido de fútbol

(quiero) ver el partido de fútbol

pon el partido de fútbol

ponme el partido de fútbol

{sports event}を再生して

{sports event}を見せて

assistir {sports event}

ver {sports event}

watch {sports event}

play {sports event}

スポーツのイベントに一致するメディアが(ユーザーへのおすすめメディアを選び出すアルゴリズムによって)再生されるか、検索結果リストがユーザーに表示されます。

SearchAndPlayディレクティブの処理

SearchAndPlayディレクティブには、メディアを再生するための命令が含まれています。このディレクティブでは、対象となるメディアオブジェクトと取得したURIがエンティティとして記述されます。このディレクティブには、検索および再生対象を指定するエンティティの配列が含まれます

SearchAndPlayディレクティブは、マルチモーダル実装用ビデオスキルのGetPlayableItemsと似ています)。

以下のセクションでは、さまざまなリクエストに対してSearchAndPlayディレクティブを処理するためのガイダンスを提供します。

タイトルで再生

「アレクサ、『インターステラー』を再生して」など、ユーザーがAlexa搭載デバイスにタイトルを言った場合に、LambdaはSearchAndPlayディレクティブを受け取ります。

SearchAndPlayディレクティブには、externalIdsセクションが含まれています。このセクションで、カタログに対応するフィールドを探す必要があります。このフィールドには、カタログ統合で使用したID値が含まれるため、ユーザーがどの番組を再生したいかを正確に知ることができます。これを使用してメディアを再生することで、ユーザーのリクエストを満たすことができます。

アプリにあるコンテンツの再生をAlexaに確実に依頼しているにもかかわらず、externalIdsフィールドにカタログのID値が見つからない場合は、Fire TVソリューションアーキテクトに問い合わせてサポートを依頼してください。

また、受信したディレクティブには複数のエンティティが含まれる場合があることにも注意してください。これは、同じ名前の番組が複数存在することが多いためです。Alexa Client Libraryを統合して、スキルの自動ペアリングを設定して仕上げる手順が完了したら、ディレクティブが絞り込まれ、(すべてのカタログからエントリを受け取るのではなく)独自のカタログから1つのエンティティのみを受け取ることができるようになります。ID値を自分のカタログのみに絞り込まない限り、独自のカタログIDを持つエンティティが見つかるまで、Lambdaコードで受け取ったエンティティを繰り返し処理する必要があります。エンティティが見つかったら、コード内で対応します。

同じカタログ内でディレクティブに複数のID値が含まれている場合は、Alexaがカタログ内の複数の番組を、ユーザーがリクエストしたタイトルに一致すると識別したことが原因である可能性があります。その場合は、ユーザーに最適な再生コンテンツを選択する必要があります。ユーザーに合ったコンテンツを選び出すためのアルゴリズムを活用してください。

タイトル、エピソード、シーズンで再生

ユーザーが「アレクサ、『インターステラー』シーズン2エピソード2を再生して」と話しかけた場合は、ユーザーが「アレクサ、『インターステラー』を再生して」と話しかけた場合と類似のディレクティブを受け取ります。 ただし、重要な違いとして、このディレクティブには次のJSONが含まれます。

{
  "type": "Episode",
  "value": "2"
},
{
  "type": "Season",
  "value": "2"
}

このJSONは、ユーザーがリクエストしたシーズン番号とエピソード番号を示します。これを基に、ユーザーの希望するシーズンやエピソードを再生する必要があります。受け取るカタログIDには、シーズン/エピソードIDではなく、トップレベルの番組のカタログIDのみが含まれます。ただし、正しいコンテンツを再生するには、番組のカタログIDと一緒にシーズン番号やエピソード番号を使用できる必要があります。

また、ユーザーがエピソードではなくシーズンだけを指定したり、シーズンではなくエピソードだけを指定する可能性も考慮して、ユーザーのリクエストを満たす必要があります。正しいコンテンツを特定するには、次のガイダンスに従ってください。

  • ユーザーがTVシリーズのシーズンでタイトルを再生するよう依頼していて(「アレクサ、『ボッシュ』シーズン3を再生して」など)、希望するエピソードが不明な場合は、最後に視聴したエピソードを表示します。最後に視聴したエピソードの視聴が完了している場合は、それ以降の次の未視聴エピソードを表示します。または、シーズンのエピソードリストを表示します。
  • ユーザーがエピソードでタイトルを再生するよう依頼していて(「アレクサ、『ボッシュ』エピソード5を再生して」など)、複数のシーズンが考えられる場合は、ユーザーが最後に視聴したエピソードを確認して、正しいシーズンを特定します。最後に視聴したエピソードがシーズン2のものである場合は、シーズン2のエピソード5を再生します。または、シーズンのエピソードリストを表示します。

シリーズで再生

ユーザーが希望するコンテンツが明確に理解できないような発話もあります。たとえば、ユーザーが「アレクサ、『ジュラシックパーク』を見せて」と話しかけたとします。 こういったシナリオでは、ユーザーが「ジュラシックパーク 1」「ジュラシックパーク 2」「ジュラシックパーク 3」のどれを指しているのかがわかりません。このように複数のバリエーションがあるメディアは「シリーズ物」と呼ばれます。 シリーズ物のシナリオは、シーズンやエピソードのモデルにはうまく当てはまらないため、「シリーズで再生」で処理します。

ユーザーがシリーズで再生のリクエストを行うと、ユーザーがリクエストしたシリーズ(この例の場合は「ジュラシックパーク」)をディレクティブで受け取りますが、このディレクティブにはカタログIDは含まれません。このようなディレクティブの場合、カタログ内でこのコンテンツの検索を実行し、検索最上位のタイトルを再生することが望ましい動作です。それができない場合は、少なくともアプリでユーザーに検索結果を表示し、ユーザーがリモコンを使用して希望のコンテンツを見つけられるようにする必要があります。ディレクティブを単に無視することは適切ではありません。

シリーズ物のリストは、シリーズ物リストで確認することができます。

ジャンル、スポーツ、チーム、リーグ、その他あいまいな再生ディレクティブで再生

Alexaは、「アレクサ、コメディを再生して」や「アレクサ、バスケットボールを見せて」などのフレーズもサポートしています。 このように汎用的なシナリオの場合は、ユーザーに検索結果を表示するか、その特定ジャンルまたは適切なエンティティの詳細ページを表示するかを選択します。

たとえば、多くのアプリには、コメディ、アクション映画、シチュエーションコメディなどの専用ページがありますが、これは単純な検索結果とは異なります。このジャンルページは、そのトピックに関連するメディアを厳選したものです。ユーザーからのあいまいなリクエストを受信したときは、必要に応じて、こうした関連するジャンルページに移動することができます。最悪の場合でも、少なくともアプリでユーザーに検索結果を表示する必要があります。ディレクティブを単に無視することはしないでください。

ディレクティブで受け取る可能性のあるジャンルのリストは、ジャンルリストで確認することができます。

あいまいな再生リクエストの処理

SearchAndDisplayResultsと同様に、SearchAndPlayでは、コンテンツタイトル、シリーズ名、俳優、監督、スポーツチーム、メディアタイプなど、複数のエンティティタイプをサポートしています。したがって、これらのディレクティブには、あいまいなエンティティのリクエストが含まれる可能性があります。

たとえば、ユーザーが「アレクサ、人気のコメディを再生して」や「アレクサ、ビリー・ボブ・ソーントンが出ている映画見せて」のようなリクエストを行った場合、 あいまいさにかかわらず、リクエストをどのように処理するかは開発者が決定できます。たとえば、以下のように処理できます。

  • 人気のコメディやボブ・ソーントンの映画の再生を開始する
  • コメディやボブ・ソーントンの映画の上位10件のリストを生成し、ユーザーが繰り返し処理を行わずに済むよう、ランダムに1つを選択する
  • あいまいなエンティティの検索結果をそのまま表示する

応答の方法は選択できますが、可能な限りユーザーの再生リクエストに対応することをお勧めします。

コンテンツが見つからない場合の処理

ユーザーがリクエストしたコンテンツが見つからない場合は、CONTENT_NOT_FOUNDエラータイプを指定してエラーレスポンスを送信できます。詳細については、エラー処理を参照してください。

ユーザーエクスペリエンスには、「ボイスクリフ」が含まれないようにしてください。 ボイスクリフとは、ユーザーがリモコンを使わざるを得なくなるような音声エクスペリエンスのことです。

SearchAndPlayの例

以下は、SearchAndPlayディレクティブの例です。これは、ユーザーが「マンチェスター・バイ・ザ・シー」の再生をリクエストした場合に、Alexaからレスポンスとして送信されるディレクティブです。

{
  "directive": {
    "endpoint": {
      "scope": {
        "type": "BearerToken",
        "token": "access-token-from-skill"
      },
      "endpointId": "videoDevice-001",
      "cookie": {         
      }
    },
    "header": {
      "messageId": "abc-123-def-456",
      "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
      "name": "SearchAndPlay",
      "namespace": "Alexa.RemoteVideoPlayer",
      "payloadVersion": "3"
    },
    "payload": {
      "entities": [{
        "externalIds": {
          "gracenote": "MV000000099001"
        },
        "value": "Manchester by the Sea",
        "type": "Video"
      }],
      "timeWindow": {
        "end": "2016-09-07T23:59:00+00:00",
        "start": "2016-09-01T00:00:00+00:00"
      }
    }
  }
}

ペイロードの説明

次の表は、GetBrowseNodeItemsコードサンプルのpayloadフィールドについて説明しています。

ペイロードの説明
フィールド 説明 データ型
entities
タイトル、シリーズ、俳優、チーム、メディアタイプなど、再生するエンティティオブジェクトの配列です。詳細については、[ビデオコンテンツのエンティティタイプ](../video-skills-fire-tv-apps/entity-types-for-video-content.html)を参照してください。 配列
timeWindow
ユーザーが再生したいコンテンツのタイムウィンドウを指定します。たとえば、先週のエピソードを再生したい場合、タイムウィンドウには前の週を指定します。 startendの時間を含むオブジェクト
end

タイムウィンドウの終了時刻です。

例: 2016-09-07T23:59:00+00:002018-01-24T02:30:00Z

ISO 8601形式の文字列
start

タイムウィンドウの開始時刻です。

例: 2016-09-07T23:59:00+00:002018-01-24T02:30:00Z

ISO 8601形式の文字列

レスポンスの例

SearchAndPlayディレクティブが正常に完了した場合、LambdaはAlexa.Responseメッセージで次のように応答する必要があります。

{
    "context": {
        "properties": []
    },
    "event": {
        "endpoint": {
            "scope": {
                "type": "DirectedUserId",
                "directedUserId": "access-token-from-Amazon"
            },
            "endpointId": "videoDevice-001"
        },
        "header": {
            "messageId": "abc-123-def-456",
            "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
            "name": "Response",
            "namespace": "Alexa",
            "payloadVersion": "3"
        },
        "payload": {}
    }
}

payloadコンテンツは不要です。

Fire TV対応アプリのビデオスキルでは、Alexaへのレスポンスは最小限で、空のpayloadを返すことに注意してください。これは、必要な命令をADM経由でFire TV対応アプリに送信しているためです。一方、マルチモーダルデバイスでは、これは当てはまりません。マルチモーダルデバイスはアプリレスであるため、Alexaへのレスポンスにはメディアを再生するための詳細情報が含まれます。

インターフェース機能に対するサポートの宣言

ビデオスキルがAlexa.RemoteVideoPlayerインターフェースをサポートしていることを示すには、Alexa.Discoveryインターフェースを介して送信されたDiscoverディレクティブへのレスポンスで、そのサポートを明示する必要があります。詳細については、Discoveryインターフェースを参照してください。

エラーレスポンス

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