バッジ


バッジ

検索結果のタイル上やビデオの再生時にユーザーに有益な情報を提供するには、多くの場合、バッジ(コンテキスト画像)の使用が効果的です。このセクションでは、使用可能なバッジの種類とその用途について説明します。

実装できるバッジ

次の表に、実装できる表示バッジの種類を示します。

バッジの種類 説明
Recording(録画中) ユーザーが意図的にコンテンツを録画しているときに表示されます。このバッジは、ほかのどのバッジよりも優先されます。
Live(生放送中) コンテンツがリアルタイムで放送されているときに表示されます(例:アカデミー賞、エミー賞、スポーツ試合などの番組)。
On Now(放送中) 特定の時間にチャンネルでコンテンツが放送されているときに表示されます。ライブとはみなされません。

バッジに加え、ネットワークロゴやネットワークコールサインを表示して、コンテンツの放送局を示す必要もあります。たとえば、ユーザーが「<プロバイダー>でコメディのテレビ番組を見せて」と発話したとします。 このような場合、<プロバイダー>は、ABC、HBO、CBSなど複数のネットワークのコンテンツを表示することができます。 

こうした結果をマルチモーダルデバイスで返すときは、コンテンツの提供元を示すネットワークロゴをボックスアートの下部に表示する必要があります。ネットワークロゴが利用できない場合は、ABC、HBOなどのネットワークコールサインを表示してください。 

コンテンツの鮮度

また、検索結果のメタデータで、コンテンツが「新しい」かどうかを示すことも必要です。この情報をコンテンツプロバイダーから取得して表示することで、そのコンテンツが初回放送であることがわかります。

たとえば、「ビッグバン・セオリー」のエピソードを検索するとします。エピソード1~5は放送済みであり、新たにエピソード6の視聴が可能になっている場合、この情報がコンテンツプロバイダーから提供されるので、エピソード6についてはほかのメタデータと一緒に「NEW」を表示することができます。 

スキルでは、Lambdaから返されるGetDisplayableItemsMetadataResponseGetPlayableItemsMetadataResponseのレスポンスを通じてバッジを指定できます。 

バッジAPI

バッジをサポートするには、GetDisplayableItemsMetadataResponseレスポンスのペイロード内で次の構造体を使用する必要があります。 

  • recording: コンテンツが録画中であるかどうかを示す目的で使用されます。
  • contentFreshness: 新しいコンテンツであるかどうかを示す目的で使用されます。
  • networkDetails: チャンネルのメタデータを指定する目的で使用されます。
  • airingDetails: 開始時刻と終了時刻のほか、コンテンツが生放送中であるかどうかを指定する目的で使用されます。

GetDisplayableItemsMetadataResponseの例

Lambdaから返される、バッジを含んだGetDisplayableItemsMetadataResponseの例を次に示します。

{
    "payload": {
        "searchResults": [
            {
                "name": "インターステラー",
                "contentType": "LIVE",
                "releaseYear": "2011",
                "selectionAction": "PLAY",
                "thumbnailImage": {
                    "contentDescription": "インターステラーの画像",
                    "sources": [
                        {
                            "url": "http: //ecx.images-amazon.com/images/I/81nSh3pZUDL.RI.jpg",
                            "size": "X_SMALL",
                            "widthPixels": 480,
                            "heightPixels": 320
                        }
                    ]
                },
                "runtime": {
                    "runTimeInMilliseconds": 120931123,
                    "displayString": "2時間30分"
                },
                "closedCaption": {
                    "status": "AVAILABLE",
                    "displayString": "字幕"
                },
                "absoluteViewingPositionMilliseconds": 0,
                "parentalControl": {
                    "pinControl": "REQUIRED"
                },
                "viewingDisplayString": "PlayNow",
                "rating": {
                    "category": "PG-13"
                },
                "recording": {
                    "status": "RECORDING"
                },
                "contentFreshness": {
                    "state": "NEW"
                },
                "networkDetails": [
                    {
                        "channel": {
                            "number": "1234",
                            "callSign": "PBS",
                            "affiliateCallSign": "KCTS9",
                            "uri": "someUrl"
                        },
                        "channelMetadata": {
                            "name": "AlternateChannelName",
                            "image": "http: //ecx.images-amazon.com/images/I/81nSh3pZUDL.RI.jpg"
                        },
                        "airingDetails": [
                            {
                                "isLiveBroadcast": "true",
                                "end": "2018-01-24T02: 30: 00Z",
                                "start": "2018-01-24T00: 00: 00Z"
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

ペイロードの説明

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

録画に関連する情報。現在の構造体には、statusのフィールドが1つあるだけです。独立したフィールドではなく構造体にする理由は、Alexa Skills Kitによって将来、recording構造体にほかの情報が追加される可能性があるためです。オブジェクトとして利用できるようにすることで、Alexa Skills Kitでそれらのアイテムをグループ化し、将来の要件に合わせて拡張することが可能になります。

オブジェクト
status(recording)

コンテンツの録画ステータス。次の列挙値を使用できます。

  • RECORDED: コンテンツが以前に録画されたことを意味します。
  • RECORDING: リクエストの時点でコンテンツが意図的に録画されていることを意味します。
  • SCHEDULED: コンテンツが将来録画されるようにスケジュールされていることを意味します。

例: RECORDEDRECORDINGSCHEDULED

文字列
contentFreshness

コンテンツの鮮度についての詳細。このオブジェクトも、「state」のフィールドが1つあるだけです。 前述のフィールドと同様、Alexa Skills Kitでは、将来このフィールドを拡張して、今回のレビュー過程で追加された状態に、さらに別の状態を追加することができます。contentFreshnessに関する詳細情報を追加するために、このオブジェクトは将来的に拡張される可能性があります。

オブジェクト
state(contentFreshness)

Alexaに結果を返しているプロバイダーの新しいコンテンツであるかどうか。使用できる列挙値はNEWだけです。これは、コンテンツが新しいものであり、そのプロバイダーの初回放送であることを意味します。

例: NEW

文字列
networkDetails

プログラムを放映しているネットワークについての情報。たとえば、CBSが放送する「ビッグバン・セオリー」の新しいエピソードや、ESPNがライブで放送するサッカーの試合などが該当します。オンデマンドコンテンツの場合は、HBOが制作した「ゲーム・オブ・スローンズ」を配信するAmazonプライム・ビデオなどです。結果アイテムがチャンネルのライブ番組(contentType = LIVE)である場合、そのメタデータがこのオブジェクトに格納されます。

リスト
isLiveBroadcast

このコンテンツがリアルタイムで放送されているかどうか。NFLフットボールの試合中継や、アカデミー賞、エミー賞のようなショーなど、リアルタイムで放送されるライブイベントの場合、trueに設定します。

実際に放送される時刻よりも前に撮影されたコンテンツの場合は、falseに設定します。たとえば、毎週木曜日に放送される「ビッグバン・セオリー」の新しいエピソードなどが該当します。また、リアルタイムでは二度と行われない過去のフットボールの試合など、一度リアルタイムでストリーム配信されたコンテンツの場合も、falseに設定する必要があります。

例:truefalse

ブール型

GetPlayableItemsMetadataResponseの例

GetDisplayableItemsMetadataで使用されているnetworkDetails構造体は、GetPlayableItemsMetadataでも使用されます。GetPlayableItemsMetadataResponseレスポンスの例を次に示します。

{
    "event": {
        "header": {
            "correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg==",
            "messageId": "38ce5b22-eeff-40b8-a84f-979446f9b27e",
            "name": "GetPlayableItemsMetadataResponse",
            "namespace": "Alexa.VideoContentProvider",
            "payloadVersion": "3"
        },
        "payload": {
            "searchResults": [
                {
                    "name": "インターステラー",
                    "contentType": "LIVE",
                    "playbackContextToken": "amzn1.dv.gti.b4a9f7c6-5def-7e63-9aa7-df38a479333e",
                    "parentalControl": {
                        "pinControl": "REQUIRED"
                    },
                    "networkDetails": [
                        {
                            "channel": {
                                "callSign": "PBS",
                                "affiliateCallSign": "KCTS9"
                            },
                            "channelMetadata": {
                                "name": "AlternateChannelName"
                            },
                            "airingDetails": [
                                {
                                    "isLiveBroadcast": "true",
                                    "end": "2018-01-24T02: 30: 00Z",
                                    "start": "2018-01-24T00: 00: 00Z"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }
}