開発者コンソール

チャンネルナビゲーション用のGetPlayableItemsディレクティブ


チャンネルナビゲーション用のGetPlayableItemsディレクティブ

チャンネルを変更するための発話(「PBSを見せて」など)をユーザーが行うと、表示するチャンネルについての情報を含むGetPlayableItemsディレクティブがVideoContentProvider APIからLambdaに送信されます。

下図のように、LambdaからはレスポンスとしてGetPlayableItemsResponseを返す必要があります。

GetPlayableItemsディレクティブとLambdaのGetPlayableItemsResponse

GetPlayableItemsの発話(チャンネルナビゲーション)

ユーザーが以下のチャンネル変更の発話を行うと、AlexaはLambdaにGetPlayableItemsディレクティブを送信します。これは通常のGetPlayableItemsディレクティブとほぼ同じですが、チャンネル固有のプロパティが含まれます。

機能 サンプル発話 想定されるレスポンス バージョン
チャンネル名に移動

Go to fox

(schalt auf|geh zu) <ChannelName>

schalt kanal <ChannelName> ein

(geh|schalt|wechsel|änder) zum kanal <ChannelName>

(geh|schalt|wechsel|änder) zu <ChannelName> kanal

(wechsel|änder) den kanal zu <ChannelName>

(wechsel|änder) den kanal zu <ChannelName> auf <AppName>

schalt <ChannelName> auf <AppName> an

schalt kanal <ChannelName> auf <AppName> an

(geh|schalte|wechsel) zu <ChannelName> auf <AppName>

(stell|schalt) <ChannelName> ein auf <AppName>

(stell|schalt|wechsel) (um zu|auf) <ChannelName> auf <AppName>

schalt kanal <ChannelName> auf <AppName> an

mach <ChannelName> auf <AppName> an

Va sur <ChannelName>

Va sur <ChannelName>

vai su <ChannelName>

vai a <ChannelName>

cambia a antena tres

<ChannelName>を検索

vá/vai/ir para o canal <ChannelName>

fox पर/पे जाओ/जाइए/जाना/चलो/चलना

ビューが指定されたチャンネル名に切り替わり、そのチャンネルのコンテンツが再生されます。

1.0

チャンネル番号に移動

Go to channel thirteen

schalt kanal <ChannelNumber> ein

(geh|schalt|wechsel|änder) zum kanal <ChannelNumber>

(geh|schalt|wechsel|änder) zu <ChannelNumber> kanal

(wechsel|änder) den kanal zu <ChannelNumber>

(wechsel|änder) den kanal zu <ChannelNumber> auf <AppName>

schalt <ChannelNumber> auf <AppName> an

schalt kanal <ChannelNumber> auf <AppName> an

(geh|schalte|wechsel) zu <ChannelNumber> auf <AppName>

(stell|schalt) <ChannelNumber> ein auf <AppName>

(stell|schalt|wechsel) (um zu|auf) <ChannelNumber> auf <AppName>

schalt kanal <ChannelNumber> auf <AppName> an

mach <ChannelNumber> auf <AppName> an

kanal <ChannelNumber>

va sur <ChannelNumber>

va sur <ChannelNumber>

vai al <ChannelNumber>

vai su <ChannelNumber>

cambia el canal a la dos

channel दस पर/पे जाओ/जाना/जाइए/चलो/चलना

ビューが指定されたチャンネル番号に切り替わり、そのチャンネルのコンテンツが再生されます。

1.0

チャンネルコールサインに移動

Go to channel k. c. p. q.

schalte/änder/geh zu/auf den fernsehsender <ChannelName>

geh zum (fernseh)kanal <ChannelName>

ändern den (fernseh)kanal zu/auf <ChannelName>

va sur <channel>

cambia canal a t. p. d.

vai su <Channel>

vai a <Channel>

cambia canal a t. p. d.

vá para o canal <CallSign>

channel sony पर/पे जाओ/जाना/जाइए/चलो/चलना

ビューが指定されたチャンネルコールサインに切り替わり、そのチャンネルのコンテンツが再生されます。

1.0

チャンネル名を視聴

Watch fox

<ChannelName> auf <AppName> ansehen

spiel den kanal <ChannelName> ab

mets <ChannelName>

joue <ChannelName>

mets <ChannelName>

joue <ChannelName>

guarda <ChannelName>

fammi vedere <ChannelName>

ver la sexta

pon la sexta

<ChannelName>を見せて

assistir/assiste/assista <ChannelName>Assistir/assiste/assistao <ChannelName>

fox देखो/देखिए/देखना/देखें

ビューが指定されたチャンネル名に切り替わり、そのチャンネルのコンテンツが再生されます。

1.0

チャンネル番号を視聴

Watch channel thirteen

Zeige Kanal/Sender <channel number>

Kanal/Sender <channel number> anschauen

mets la chaîne<ChannelNumber>

joue la chaîne<ChannelNumber>

mets la chaîne<ChannelNumber>

joue la chaîne<ChannelNumber>

metti <ChannelNumber>

pon canal dos

チャンネル<ChannelNumber>を見せて

assitir canal <ChannelNumber>

channel बारह देखो/देखना/देखिए/देखें

ビューが指定されたチャンネル番号に切り替わり、そのチャンネルのコンテンツが再生されます。

1.0

チャンネルに関しては、マルチモーダルデバイスとFire TV対応アプリとで実装が異なることに注意してください。Fire TV対応アプリではチャンネルナビゲーション専用のディレクティブ(ChangeChannel)があるのに対し、マルチモーダルの実装では、再生とチャンネルナビゲーションのどちらの発話にもGetPlayableItemsを使用します(ただしプロパティは異なります)。

GetPlayableItemsの例(チャンネルナビゲーション)

特定のチャンネルのGetPlayableItemsディレクティブの例を次に示します。payloadには、チャンネルのシナリオに固有のフィールドが存在します。

{
    "directive": {
        "header": {
            "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
            "messageId": "9f4803ec-4c94-4fdf-89c2-d502d5e52bb4",
            "name": "GetPlayableItems",
            "namespace": "Alexa.VideoContentProvider",
            "payloadVersion": "3"
        },
        "endpoint": {
            "scope": {
                "type": "BearerToken",
                "token": "access-token-from-skill"
            },
            "endpointId": "videoDevice-001",
            "cookie": {

            }
        },
        "payload": {
            "entities": [
                {
                    "type": "Channel",
                    "value": "PBS",
                    "externalIds": {
                        "gracenote": "MV000000099001"
                    },
                    "entityMetadata": {
                        "channelCallSign": "KBTC",
                        "channelNumber": "123"
                    }
                }
            ],
            "contentType": "RECORDING",
            "locale": "ja-JP",
            "minResultLimit": 8,
            "maxResultLimit": 25,
            "timeWindow": {
                "end": "2016-09-07T23:59:00+00:00",
                "start": "2016-09-01T00:00:00+00:00"
            }
        }
    }
}

"type": "Channel"を持つentitiesには、 テレビチャンネルに関する情報が含まれていることに注意してください。

ペイロードの説明

次の表は、GetPlayableItemsディレクティブのpayloadについて説明しています。

ペイロードの説明
フィールド 説明 データ型
entities
(必須)

検索するエンティティオブジェクトのリスト。通常、異なるエンティティタイプ間の関係は、AND演算と解釈されます。たとえば、{genreName = "コメディ," actorName ="トム・ハンクス"}を含むリクエストの場合、検索結果にはトム・ハンクスが出演するコメディの映画またはテレビ番組が含まれることになります。

一方、{videoName = "インターステラー," VideoName = "宇宙戦争"}など、同じタイプの複数のエンティティがリクエストに含まれる場合は、OR演算と見なし、ディレクティブ内のすべてのエンティティを検索することができます。不確かな場合は、そのタイプ(このケースではvideoName)の先頭のエンティティを最も関連性が高いものと見なします。

さらに、{mediaType = "MOVIE', genreName = "コメディ," actorName ="トム・ハンクス," actorName = "トム・ハンクス}というリクエストを考えてみましょう。これは、トム・ハンクスという名前の俳優が複数存在すると考えられます。このような場合は、リクエスト内のすべての俳優を含む映画を検索したうえで、コメディのジャンルでフィルタリングして、すべての検索結果を返すことができます。

現時点では、一致するエンティティが複数ある場合にユーザーが何を再生したいかを知る方法がAlexaにはないため、エンティティのランク付けは行われません。

type: Channelを持つentitiesには、 テレビチャンネルの識別データが格納されます。以下に例を示します。

 {
  "type": "Channel",
  "value": "PBS",
  "externalIds": {
      "gracenote": "MV000000099001"
  },
  "entityMetadata": {
      "channelCallSign": "KBTC",
      "channelNumber": "123"
  }
} 

リスト
type

ビデオコンテンツのエンティティタイプ。ビデオコンテンツのエンティティタイプの一覧については、ビデオコンテンツのエンティティタイプを参照してください。マルチモーダルデバイスには、エンティティタイプ (LISTTYPESORTTYPE)が追加されています。

LISTTYPEは、ユーザーがウォッチリストやライブラリの閲覧を希望した場合に設定されます。たとえば、「ウォッチリストを見せて」や「ビデオライブラリを見せて」といった発話が挙げられます。 LISTTYPEには、次の列挙値を設定できます。

  • WATCHLIST: 「ウォッチリストを見せて」 - ユーザーのウォッチリストに追加されているビデオを表示する際に使用します。
  • LIBRARY: 「ビデオライブラリを見せて」 - ユーザーのライブラリに存在するビデオを表示する際に使用します。通常、これにはユーザーが購入したビデオが該当します。

SORTTYPEは、検索時に使用するリクエストの追加情報や、結果のソート方法を指定する際に使用します。たとえば、「おすすめの映画を見せて」という発話の場合、Alexaはコンテンツプロバイダーからのおすすめコンテンツを取得する必要があります。SORTTYPEには、次の列挙値を設定できます。

  • RECOMMENDED: 「おすすめの映画を見せて」や「おすすめのアクション映画を見せて」といった発話の場合、この値が設定されます。

例: MediaTypevideoActorGenreFranchiseSeasonEpisode

文字列
value
(必須)

エンティティの値。チャンネルの場合は、チャンネル名。

例: インターステラーPBS

文字列
externalIds

このエンティティの外部識別子のマップ。keyはプロバイダー、valueidです。

例:key = gracenote(またはgti)、value = SH000000012

オブジェクト
minResultLimit
(必須)

この呼び出しで返される結果でpageTokenが必要となる最小件数。pageTokenは次の結果を取得するためのもので、新しいアイテムを取得する際にこれと一緒に返されたアイテムの件数がminResultLimitフィールドよりも少ない場合、AlexaはpageTokenを無視し、受信したアイテムをそのまま表示します。

pageTokenを使用して次の結果を取得するのは、アイテムの件数がminResultLimitの値以上である場合のみです。ただし、アイテムの件数がminResultLimitを超える場合は、maxResultLimitが上限となります。アイテムの件数がmaxResultLimitを超えると、maxResultLimitを超えたアイテムはAlexaによって破棄されます。

例: 8

整数
maxResultLimit
(必須)

返される結果の最大件数(上限)。詳細については、minResultLimitフィールドの説明を参照してください。

例: 25

整数
timeWindow

リクエストされた処理の開始時刻と終了時刻を指定します。これは通常、ライブTVや録画にのみ使用され、オンデマンドコンテンツには使用されません。一般的に、タイムウィンドウが指定されており、それを使用して結果をフィルタリングできる場合は、タイムウィンドウを使用する必要があります。

検索対象がオンデマンドコンテンツのみとなるプロバイダーの場合は、タイムウィンドウフィールドが通常nullに設定されているため、無視して構いません。

ライブTVや録画でユーザーがタイムウィンドウを指定している場合(「午後4時から5時のテレビ番組を検索して」や「先週録画したテレビ番組を探して」など)、開始時刻と終了時刻が指定されていれば、それらを使用して結果をフィルタリングする必要があります。

機能によって、startendの両方のフィールドが存在する場合と、どちらか一方のフィールドしか存在しない場合とがあります。たとえば、「午後4時から5時のテレビ番組を検索して」の場合は両方のフィールドが存在しますが、「午後5時に始まるテレビ番組を見せて」の場合、設定されるのはstartフィールドだけで、endフィールドはnullになります。

startendの時間を含むオブジェクト
start

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

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

ISO 8601形式の文字列
end

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

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

ISO 8601形式の文字列
contentType
(必須)

ContentTypeは、検索結果で返されたビデオのコンテンツタイプを示します。録画された映画やテレビ番組を送信する場合、contentTypeRECORDINGに設定されます。ライブのテレビ番組に関する情報が結果に含まれる場合、contentTypeLIVEに設定されます。オンデマンドコンテンツが結果に含まれる場合、contentTypeON_DEMANDに設定されます。

contentTypeは、ユーザーにプロンプトを提供する際にも使用されます。たとえば、contentTypeLIVEの場合、「CBSで現在放送中のアカデミー賞はこちらです」などのプロンプトがAlexaから提供されます。 contentTypeRECORDINGの場合は、「アカデミー賞はこちらです」などのプロンプトが提供されます。

例: RECORDINGLIVEON_DEMAND

列挙型
locale
(必須)

ユーザーのロケール。検索結果に対応する表示可能な情報を取得するために必要となります。ロケールの形式は、Network Working Groupの「Best Current Practice 47(BCP-47)」(英語のみ)で規定されている言語の形式と同じです。認識されないロケールを受信した場合は、デフォルトでen-USになります。

例:en-USen-GBde-DE

文字列
Gracenote

外部Gracenote ID。

例: ST0000000666661

文字列
entityMetadata

チャンネルに関連付けられたメタデータのマップ。

オブジェクト
channelCallSign(channel)

チャンネルのコールサイン。

例: KBTC

文字列
channelNumber(channel)

チャンネル番号。

例: 1234

整数

Lambdaのレスポンス

GetPlayableItemsディレクティブを受信したら、Lambdaはここで示す構造に準拠したGetPlayableItemsResponseレスポンスを返す必要があります。この場合のレスポンス構造は、GetDisplayableItemsディレクティブに対して返すレスポンスと同様です。

レスポンスについては、以下のガイドラインに従ってください。 

  • GetPlayableItemsディレクティブの目的は、そのディレクティブで再生できる単一のアイテムを取得することです。 

  • 再生するアイテムが1つしかない場合、そのアイテムを返せば、Alexaによってアイテムが再生されます。 

  • 再生するアイテムがはっきりしない場合は、レスポンスで複数のアイテムを返すことができます。Alexaは、その中から再生するアイテムを選択するようユーザーに促します。たとえば、ユーザーが「『スター・ウォーズ』を再生して」と言った場合、レスポンスで返すアイテムとしては、「スター・ウォーズ」シリーズの映画だけでなく、「スター・ウォーズ」に関連したさまざまな映画やテレビ番組が考えられます。複数の結果を返した場合、Alexaはメタデータを取得して検索結果を表示するためにGetDisplayableItemsMetadataディレクティブを送信します。1回目の呼び出しで返す結果の件数が、ディレクティブで指定されたresultLimitパラメーターの値を超えないように注意してください。

  • ユーザーにタイトルを再生する権限がないことや、定期購入が必要であることが原因で、見つかった唯一の結果が再生できない場合でも、そのアイテムを返すことができます。そのアイテムが再生できないとわかると、Alexaはメタデータを取得して、購入・レンタル・定期購入を促すプロンプトを提供します。その後、ユーザーは購入ワークフローを開始し、タイトルを購入・レンタルしてから再生することができます。

  • 再生できない結果が複数見つかった場合は、その結果をすべて返すことができます。Alexaは、再生するアイテムを選び出すようユーザーに求めるか、アイテムの購入・レンタル・定期購入を促すプロンプトを提供します。

  • 再生できるアイテムと再生できないアイテムとが混在する複数の結果が見つかった場合は、再生できるアイテムを優先する必要があります。デバイスで再生できるように、再生可能な結果を返すようにしてください。

レスポンスの例(チャンネルナビゲーション)

チャンネル変更のシナリオに関連するGetPlayableItemsResponseの例を次に示します。

{
    "event": {
        "header": {
            "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
            "messageId": "5f0a0546-caad-416f-a617-80cf083a05cd",
            "name": "GetPlayableItemsResponse",
            "namespace": "Alexa.VideoContentProvider",
            "payloadVersion": "3"
        },
        "payload": {
            "nextToken": "fvkjbr20dvjbkwOpqStr",
            "mediaItems": [
                {
                    "mediaIdentifier": {
                        "id": "channelId://provider1.dvr.rp.1234-2345-63434-asdf"
                    }
                }
            ]
        }
    }
}

ペイロードの説明

次の表は、GetPlayableItemsResponsepayloadフィールドについて説明しています。

ペイロードの説明
フィールド 説明 データ型
nextToken

次の結果セットを取得するためのトークン。プロバイダーから送信される不透明型の文字列で、後続の検索リクエストで返されます。

文字列
mediaItems
(必須)

検索結果として画面に表示されるビデオのmediaIdentifierのリスト。

リスト
mediaIdentifier
(必須)

mediaItemの識別子。mediaIdentifierオブジェクトからの画像サイズデータの取得を参照してください。

オブジェクト
id
(必須)

ビデオアイテムの識別子。後続のGetDisplayableItemsMetadataまたはGetPlayableItemsMetadataの呼び出しで、表示または再生に関連したメタデータ情報を取得する目的で使用されます。この識別子は、Alexaからは認識できず、メタデータ情報を照会する際にそのまま使用されます。

文字列