開発者コンソール

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


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

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

概要

SearchAndPlayディレクティブは、ユーザーがAlexaにアイテムの「再生」を依頼したことを通知します。SearchAndPlayでは、具体的にリクエストされたタイトル、またはリクエストされたエンティティに最も一致するタイトルが再生されます。一致するタイトルがない場合は、代わりに検索結果が返されます。

以下に、発話の例をいくつか示します。

  • アレクサ、<タイトル>を見せて
  • アレクサ、<タイトル>を再生して
  • アレクサ、<タイトル>を流して
  • アレクサ、<タイトル>を開始して

SearchAndPlayディレクティブの発話

ユーザーが以下の発話を行うと、AlexaはSearchAndPlayディレクティブをアプリ(アプリのみの統合の場合)またはLambda(クラウド側の統合の場合)に送信します。

機能 サンプル発話 想定されるレスポンス 完了
<タイトル>を再生
認定に必須

Watch breaking bad

ich möchte <VideoName> gucken

spiel <VideoName>

spiel watchlist ab von <VideoName>?

mets / joue / lance <VideoName> sur <AppName>

mets / joue / lance / pars <VideoName> sur <AppName>

metti / trasmetti / riproduci / fammi guardare / fammi vedere + VideoName (+ da/su DeviceName

pon interstellar

reproduce interstellar

ver interstellar

<VideoName>を再生して <VideoName>を<AppName>で再生して <AppName>で<VideoName><MediaType>を再生して

tocar/assistir/reproduzir <VideoName> no/na <AppName>

<VideoName> चलाओ/बजाओ/लगाओ/play/देखो <AppName> पे/पर/में <VideoName> चलाओ/बजाओ/लगाओ/play

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

 

俳優で再生
認定に必須

Watch sean connery

spiel <VideoName> (mit <ActorName>) auf <AppName>

streame einen film mit <ActorName> auf <AppName>

streame einen <ActorName> film auf <AppName>

streame eine serie mit <ActorName> auf <AppName>

streame eine <ActorName> serie auf <AppName>

regarde un film avec <actor>

mets un film avec <actor>

joue un film avec <actor>

regarde un film avec <actor>

mets un film avec <actor>

joue un film avec <actor>

pars un film avec <actor>

guarda un film con <ActorName>

metti un film con <ActorName>

pon salma hayek

reproduce salma hayek

<ActorNameName>が出ている<MediaType>を再生

assistir <ator>

colocar <ator>

coloque filmes com <ator>

encontre filmes com <ator>

me mostre filmes com <ator>

<ActorName> का/की/के movies को चलाओ/बजाओ/लगाओ/play/देखो <ActorName> का/की/के movies चलाओ/बजाओ/लगाओ/play/देखो <ActorName> का/की/के <GenreName> को चलाओ/बजाओ/लगाओ/play/देखो <ActorName> का/की/के <GenreName> चलाओ/बजाओ/लगाओ/play/देखो <ActorName> का/की/के <VideoName> को चलाओ/बजाओ/लगाओ/play/देखो <ActorName> का/की/के <VideoName> चलाओ/बजाओ/लगाओ/play/देखो

<ActorName> का/की/के/वाला <GenreName> की <VideoName> को चलाओ/बजाओ/लगाओ/play/देखो <ActorName> का/की/के/वाला <GenreName> की <VideoName> चलाओ/बजाओ/लगाओ/play/देखो

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

 

ジャンル名で再生
認定に必須

Watch comedy

spiel eine <GenreName> <MediaType> auf <DeviceType> ab

spiel eine <GenreName> <MediaType> auf <AppName> ab

<GenreName> <MediaType> schauen

spiel einen <GenreName> <MediaType>

regarder un <GenreName>

regarder une <GenreName>

mets un <GenreName>

mets une <GenreName>

joue un <GenreName>

joue une <GenreName

regarder un <GenreName>

regarder une <GenreName>

mets un <GenreName>

mets une <GenreName>

joue un <GenreName>

joue une <GenreName

guarda una <GenreName>

fammi vedere una commedia

mostra mi una commedia

metti una commedia

pon comedia en netflix (Not supported without AppName)

<AppName>で<GenreNameName><MediaType>を再生<AppName>で<GenreNameName>を再生

assitir <GenreName>

assistir programas de <GenreName>

programas de <GenreName>

colocar <GenreName>

por favor reproduzir <GenreName>

reproduzir programas de <GenreName>

c

olocar um programa de <GenreName>

<GenreName> <VideoName> को चलाओ/बजाओ/लगाओ/play/देखो <GenreName> <VideoName> चलाओ/बजाओ/लगाओ/play/देखो

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

 

シリーズの<タイトル>で再生
認定に必須

Watch star trek

ich möchte <VideoName> gucken

spiel <VideoName>

spiel watchlist ab von <VideoName>?

Regarde <title>

Mets <title>

Joue <title>

regarde <title>

mets <title>

joue <title>

pars <title>

guarda star trek

fammi vedere star trek

mostra star trek

pon star wars

reproduce star wars

assitir jornada nas estrelas

colocar jornada nas estrelas

reproduzir jornada nas estrelas

você pode passsar jornada nas estrelas

por favor reproduzir jornada nas estrelas

star trek देखो/देखना/देखिए

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

 

メディアタイプで再生
省略可能

Watch a movie

spiel einen <MediaType>

spiel <MediaType> aus der/meiner watchlist

streame den <MediaType> <VideoName> auf <AppName>/<Device> spiel trailer von <VideoName>

spiel die neueste folge von <VideoName>

regarde un film

mets un film

joue un film

regarde un film

mets un film

joue un film

pars un film

guarda un film

metti un fim

trasmetti un film

riproduci un film

pon la película*

reproduce la película*

Note: Not supported in es-ES or es-US

<VideoName>を再生して <VideoName>を<AppName>で再生して <AppName>で<VideoName><MediaType>を再生して

<MediaType>を再生して

<ActorNameName>が出ている<MediaType>を再生

<Anaphor><MediaType>を流して

<AppName>で<GenreNameName><MediaType>を再生

<AppName>で<VideoName><MediaType>を再生して

<ChannelName>の<MediaType>を再生

assistir um filme

colocar um filme

nós podemos assistir um filme

ver um filme

<VideoName> movies चलाओ/बजाओ/लगाओ/play/देखो

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

 

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

Watch breaking bad season two

spiel <VideoName> <Season> <Season_Numer>

spiel <VideoName> <Season> <Season_Numer> auf <AppName>

Regarde la saison <x> de <title>

Mets la saison <x> de <title>

Regarde <title> saison <x>

Mets <title> saison <x>

Joue <title> saison <x>

Joue la saison <x> de <title>

regarde la saison <x> de <title>

mets la saison <x> de <title>

joue la saison

<x> de <title>

pars la saison <x> de <title>

regarde <title> saison <x>

mets <title> saison <x>

joue <title> saison <x>

pars <title> saison <x>

joue la saison <x> de <title>

guarda <VideoName> stagione due

metti <VideoName> stagione due

riproduci <VideoName> stagione due

empieza la segunda temporada de los rompecorazones

comienza la segunda temporada de los rompecorazones

reproduce la segunda temporada de los rompecorazones

<VideoName>の<Season><Season_Number>の

assistir <title> temporada <x>

colocar <title> temporada <x>

reproduzir <title> temporada <x>

<VideoName> का/की/के <SeasonNumber> को चलाओ/बजाओ/लगाओ/play/देखो <VideoName> का/की/के <SeasonNumber> चलाओ/बजाओ/लगाओ/play/देखो <VideoName> का/की/के <SeasonNumber> को चलाओ/बजाओ/लगाओ/play/देखो <VideoName> का/की/के <SeasonNumber> <SeasonNumber> चलाओ/बजाओ/लगाओ/play/देखो

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

 

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

Watch breaking bad episode five

spiel die <Episode_Number> <Episode> von <VideoName>

spiel <VideoName> <Episode_Number>

spiel von <VideoName> <Episode> <Episode_Number>

Regarde l'épisode <x> de <title>

Mets l'épisode <x> de <title>

Joue l'épisode <x> de <title>

Joue <title> épisode <x>

regarde l'épisode <x> de <title>

mets l'épisode <x> de <title>

joue l'épisode <x> de <title>

pars l'épisode <x> de <title>

joue <title> épisode <x>

mets <title> épisode <x>

guarda <VideoName> episodio cinque

metti <VideoName> episodio cinque

riproduci <VideoName> episodio cinque

pon el capítulo final de los serrano

<Episode_Number><Episode>を再生

assistir <title> episódio <x>

colocar <title> episódio <x>

reproduzir <title> episódio <x>

reproduzir o <title> episódio <x>

<VideoName> का/की/के <EpisodeNumber> को चलाओ/बजाओ/लगाओ/play/देखो <VideoName> का/की/के <EpisodeNumber> चलाओ/बजाओ/लगाओ/play/देखो

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

 

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

Watch breaking bad season two episode five

spiel <Season> <Season_Numer> <Episode> <Episode_Number> von <VideoName>

spiel <VideoName> <Season> <Season_Numer> <Episode> <Episode_Number>

spiel die <VideoName> <Season> <Season_Numer> <Episode> <Episode_Number> auf <AppName> ab

Regarde l'épisode <x> de la saison <x> de <title>

Joue l'épisode <x> de la saison <x> de <title>

Mets l'épisode <x> de la saison <x> de <title>

Same as fr-FR

guarda <VideoName> stagione due episodio cinque

metti <VideoName> stagione due episodio cinque

riproduci <VideoName> stagione due episodio cinque

pon el segundo episodio de la primera temporada de anabel

reproduce el cuarto episodio de la temporada tres de águila roja

<Episode_Number><Episode>を再生

<VideoName>の<Season><Season_Number>の

assistir <title> temporada <x> episódio <x>

colocar <title> temporada <x> episódio <x>

reproduzir <title> temporada <x> episódio <x>

<VideoName> season one episode one चलाओ/बजाओ/लगाओ/play करो

<VideoName> season एक का episode एक चलाओ/बजाओ/लगाओ/play करो

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

 

キャラクター名で再生
省略可能

Watch james bond

Not supported

Not supported

Not supported

guarda <CharacterName>

fammi vedere un film con james bond

mostrami un film di james bond

reproduce algo con james bond

Not Supported

<CharacterName> का/की/के/वाला movies चलाओ/बजाओ/लगाओ/play/देखो <CharacterName> का/की/के/वाला movies को चलाओ/बजाओ/लगाओ/play/देखो Watch <CharacterName> movie <VideoName>

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

 

スポーツのチームで再生
省略可能

Watch seahawks

spiel <SportsTeam> <Event> auf <AppName>

<SportsTeam> <Event> anschauen/ansehen

das <SportsTeam> <Event> auf <AppName> anschauen/ansehen

spiel das <SportsTeam> <Event> auf meinem <Device>

Regarde le <team>

Regarde le match de <team>

Regarde le <team>

Regarde le match de <team>

riproduci la partita del <SportsTeam>

ver el partido del real madrid

<SportsTeam>の<Event>を<AppName>で見せて

assisitr <SportTeam>

assitir o/a <SportTeam>

colocar no/na <SportTeam>

colocar o jogo do/da <SportTeam>

me mostre o jogo do/da <SportTeam>

mostre o jogo do/da <SportTeam>

<Sport/League/Seam> games चलाओ/बजाओ/लगाओ/play/देखो <Sport/League/Seam> के games को चलाओ/बजाओ/लगाओ/play/देखो

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

 

スポーツの種類で再生
省略可能

Watch soccer

spiel das <Sport> <Event> auf meinem <Device>

das <Sport> <Event> ansehen

Not supported

Not supported

not supported

reproduce el partido de fútbol en mi televisor

ver el partido de fútbol en mi tele

ver el partido de fútbol

<SportsTeam>の<Event>を<AppName>で見せて

assistir <Sport>

<Sport/League/Seam> games चलाओ/बजाओ/लगाओ/play/देखो <Sport/League/Seam> के games को चलाओ/बजाओ/लगाओ/play/देखो

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

 

スポーツのリーグで再生
省略可能

Watch n. b. a. league

spiel <SportsTeam> <Event> auf <AppName>

<SportsTeam> <Event> anschauen

Mets <league>

Joue <league>

Regarde <league>

Mets <league>

Joue <league>

Regarde <league>

trasmetti la partita della <League>

pon el partido de la a. c. b. en mi tele

ver el partido de la a. c. b. en mi televisor

<SportsTeam>の<Event>を<AppName>で見せて

assistir <League>

colocar <League>

<Sport/League/Seam> games चलाओ/बजाओ/लगाओ/play/देखो

<Sport/League/Seam> के games को चलाओ/बजाओ/लगाओ/play/देखो

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

 

スポーツのイベントで再生
省略可能

Watch soccer game

spiel das <Sport> <Event> auf meinem <Device>

das <Sport> <Event> ansehen

Not supported

Not supported

not supported

ver el partido de fútbol

<SportsTeam>の<Event>を<AppName>で見せて

not supported

<Sport/League/Seam> games चलाओ/बजाओ/लगाओ/play/देखो <Sport/League/Seam> के games को चलाओ/बजाओ/लगाओ/play/देखो

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

 

SearchAndPlayディレクティブの例

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

EXTRA_DIRECTIVE_NAMESPACE: Alexa.RemoteVideoPlayer
EXTRA_DIRECTIVE_NAME: SearchAndPlay
EXTRA_DIRECTIVE_PAYLOAD_VERSION: 3
EXTRA_DIRECTIVE_PAYLOAD: payload

payloadには、以下が含まれます。

{
    "payload": {
      "entities": [
          {
              "externalIds": {
                  "gracenote": "MV000000099001"
              },
              "type": "Video",
              "uri": "entity://provider/show/manchesterbythesea",
              "value": "マンチェスター・バイ・ザ・シー"
          }
      ],
      "searchText": [
          {
              "transcribed": "マンチェスター・バイ・ザ・シー"
          }
      ],
      "timeWindow": {
          "end": "2016-09-07T23:59:00+00:00",
          "start": "2016-09-01T00:00:00+00:00"
      }
  }
}
{
    "directive": {
        "endpoint": {
            "cookie": {},
            "endpointId": "<ターゲットエンドポイントの識別子>",
            "scope": {
                "token": "<OAuth2ベアラートークン>",
                "type": "BearerToken"
            }
        },
        "header": {
            "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
            "messageId": "e7f9c31f-cb90-4003-9795-c6fb9f487945",
            "name": "SearchAndPlay",
            "namespace": "Alexa.RemoteVideoPlayer",
            "payloadVersion": "3"
        },
        "payload": {
            "entities": [
                {
                    "externalIds": {
                        "gracenote": "MV000000099001"
                    },
                    "type": "Video",
                    "uri": "entity://provider/show/manchesterbythesea",
                    "value": "マンチェスター・バイ・ザ・シー"
                }
            ],
            "searchText": [
                {
                    "transcribed": "マンチェスター・バイ・ザ・シー"
                }
            ],
            "timeWindow": {
                "end": "2016-09-07T23:59:00+00:00",
                "start": "2016-09-01T00:00:00+00:00"
            }
        }
    }
}

ペイロードの定義

フィールド 説明 データ型
entities
タイトル、シリーズ、俳優、チーム、メディアタイプなど、再生するエンティティオブジェクトの配列です。エンティティタイプと値の詳細については、ビデオコンテンツのエンティティタイプを参照してください。 配列
displayMode
ファーフィールドリクエスト(VUI)なのか、ニアフィールドリクエスト(GUI)なのかを識別します。 列挙値「VUI」または「GUI」
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形式の文字列
searchText
ユーザーの検索クエリをテキストに変換したものがtranscribedフィールドの文字列値として格納されます。詳細については、実際のユーザーのリクエストの表示を参照してください。 transcribeを含むオブジェクト
transcribed
ユーザーの発話をテキストに変換したものを提供します。詳細については、searchTextオブジェクトを参照してください。

例:h.d. 人気のコメディTV番組

文字列

SearchAndPlayディレクティブの処理

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

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

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

タイトルで再生

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

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

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

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

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

ユーザーが「アレクサ、『インターステラー』シーズン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つを選択する
  • あいまいなエンティティの検索結果をそのまま表示する

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

実際のユーザーのリクエストの表示

クラウドのAlexaサービスは、ユーザーのリクエストの解釈、インテントの確認、ディレクティブへのパッケージ化を行っているということを思い出してください。開発者が(Alexaが解釈した結果ではなく)実際のユーザーのリクエストを確認したい場合には、ユーザーの実際のリクエストを取得することができます。

ユーザーの検索リクエストは、ディレクティブのpayloadに含まれているsearchTextオブジェクトで確認できます。searchTextオブジェクトの中のtranscribed値が、ユーザーのインテントを表す文字列です。このtranscribed値は、ユーザーの発話から必要な要素を抜き出したものです。たとえば、「アレクサ、HDで人気のコメディTV番組を見せて」とリクエストした場合のtranscribed値は、次のようになります。

{
    "searchText": {
        "transcribed": "h.d. 人気のコメディTV番組"
    }
}

このように、transcribedプロパティは、リクエストを編集してまとめたものであり、リクエストの主要な語句が抜き出されています。searchTextオブジェクトには、次のような制限事項があります。

  • 語順の保証はありません。 同じ発話でも、searchTextが次のように、異なる順序でtranscribed値を返すことがあります。
    • 「h. d.朝鮮戦争のドキュメンタリー映画」
    • 「朝鮮戦争のドキュメンタリーh. d.映画」
  • searchTextの内容は、時間の経過やディレクティブによって変わることがあります。 同じ発話でも、時によってsearchTextが返すtranscribed値が次のように異なることがあります。
    • 「トップテンコメディ」
    • 「トップ10コメディ」
  • アクションの動詞は省略されます。 transcribed値では、ユーザーのリクエストで使用されていたアクションの動詞は確認できません。

searchTextには、(ユーザーのリクエストに含まれていれば)コンテンツプロバイダー名が含まれる場合があることに注意してください。以下に例をいくつか挙げます。

  • 「アレクサ、<コンテンツプロバイダー>の映画を検索して」というリクエストでは、transcribed値として「<コンテンツプロバイダー>の映画」が返されます。
  • 「アレクサ、<コンテンツプロバイダー>のコメディ番組を検索して」というリクエストでは、transcribed値として「<コンテンツプロバイダー>のコメディ番組」が返されます。

キーワード検索(全文検索など)に重点を置く場合は、searchTextを使用します。エンティティは解決されたカタログ値に依存することに注意してください。特定の値に関連する専門カタログ(映画カタログやジャンルカタログなど)がある場合や、構造化クエリを容易にする何らかのデータモデルを使用している場合は、これらのエンティティを使用します。

レスポンスの例

アプリでディレクティブが正常に処理された場合、BroadcastReceiverクラスは、次のような成功ステータスを含む成功のインテントを返送します。

if (response != null && sendResponse) {
 Intent success = new Intent().putExtra(VSKIntentConstants.EXTRA_DIRECTIVE_STATUS, didSucceed);
 try {
   response.send(context, 0, success);
 } catch(PendingIntent.CanceledException e) {
   // 応答に時間がかかりすぎているため、ログにエラーを出力します
 }
}

詳細については、手順7: BroadcastReceiverを追加するを参照してください。また、具体的なコードの例については、サンプルアプリAlexaDirectiveReceiverクラスを参照してください。

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

{
   "context": {
       "properties": []
   },
   "event": {
       "header": {
           "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
           "messageId": "1d8749ce-2805-4781-bb34-c5c59ce71f6a",
           "name": "Response",
           "namespace": "Alexa",
           "payloadVersion": "3"
       },
       "payload": {}
   }
}

payloadの内容は不要です。Fire TV対応アプリのビデオスキルでは、Alexaへのレスポンスは最小限で、空のpayloadが返されます。これは、必要な命令をADM経由でFire TV対応アプリに送信しているためです。

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

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

RemoteVideoPlayerインターフェースからのSearchAndDisplayResultsディレクティブをアプリで受け取るには、機能を宣言する際にこのインターフェースのサポートを明示する必要があります。アプリのみの統合での機能の宣言の詳細については、以下を参照してください。

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