翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
関数ライフサイクルフック
ライフサイクルフックは、MediaTailor が再生中に関数を実行するタイミングを定義します。このページは、入力フィールド、出力名前空間、および各フックのデータフローを管理するルールの完全なリファレンスです。
概要
MediaTailor は 4 つのライフサイクルフックをサポートしています。
-
PRE_SESSION_INITIALIZATIONビューワーが新しいセッションを開始すると、 が 1 回発生します。オーディエンスセグメントの取得などの 1 回限りのセットアップ作業に使用します。この時点では広告時間枠は発生していないため、広告時間枠コンテキストは使用できません。 -
PRE_ADS_REQUESTは、ストリーム内の広告ブレークごとに 1 回、すべての広告決定サーバー (ADS) リクエストの前に起動します。これを使用して、ターゲットデータを使用して ADS リクエストをカスタマイズしたり、ADS URL を変更したり、ヘッダーを追加したりできます。 -
POST_ADS_RESPONSEMediaTailor が ADS レスポンスを受信して解析した後、 が起動します。これには Video Ad Serving Template (VAST) ラッパーリダイレクトの解決が含まれます。MediaTailor が挿入する広告を選択する前に、ADS が返した広告をフィルタリング、並べ替え、変更、または補足するために使用します。 -
PRE_MANIFEST_INSERTIONは、MediaTailor がマニフェストに広告を書き込む直前に、広告選択、トランスコードチェック、フィルポリシーの後に、広告ブレークのパーソナライゼーションの最後に発生します。これを使用して、入力不足の広告時間枠に追加の広告を挿入するなど、最終的な広告セットを検査または変更します。
フックはタイミングと範囲が異なります。 は 1 回PRE_SESSION_INITIALIZATION実行され、セッション全体で保持されるデータを設定します。 PRE_ADS_REQUESTと は、各 ADS インタラクションでPOST_ADS_RESPONSE実行されます。 は、送信リクエストPRE_ADS_REQUESTを形成し、広告の選択前に解析されたレスポンスPOST_ADS_RESPONSEを処理します。 は、選択が完了した後にPRE_MANIFEST_INSERTION実行され、新しくパーソナライズされたすべての広告ブレークの最終広告セットを 1 回の呼び出しで表示します。
重要
PRE_ADS_REQUEST、POST_ADS_RESPONSE、および PRE_MANIFEST_INSERTIONフックは、1 つのリクエストに対して合計 2,000 ミリ秒の実行予算を共有します。この予算は、各フックの独自の 2,000 ミリ秒のタイムアウトに追加されます。フックの有効なタイムアウトは、独自のタイムアウトと残りの予算のうち小さい方です。以前のフックで費やされる時間は、同じリクエスト内の後のフックで利用できる時間を短縮します。フックが起動する前に残りの予算を使い果たした場合、MediaTailor はそのフックをスキップし、それなしでリクエストの処理を続行します。 はセッションの初期化中にPRE_SESSION_INITIALIZATION実行され、結合された予算の一部ではありません。詳細については、「制限」を参照してください。
注記
このドキュメントでは、広告ブレークは avail とも呼ばれます。入力フィールド名 ( avail.availIdや などavails.avails) と CloudWatch メトリクスは avail形式を使用します。
入力フィールドリファレンス
次の表に、各ライフサイクルフックで使用できる入力フィールドを示します。フィールド列のparent[].child表記は、parent配列内の各要素のフィールドを示します。
注記
POST_ADS_RESPONSE および PRE_MANIFEST_INSERTIONフックは camelCase のセッションフィールドを公開しますが (例: session.clientIp)、最初の 2 つのフックは snake_case を使用します (例: session.client_ip)。プレイヤーパラメータは、最初の 2 つのフックの名前player_params空間と、他の 2 つのフックのsession.playerParamsオブジェクトとして使用できます。
| フィールド | タイプ | PRE_SESSION_INITIALIZATION | PRE_ADS_REQUEST | POST_ADS_RESPONSE | PRE_MANIFEST_INSERTION |
|---|---|---|---|---|---|
session.id | ロング | ✓ | ✓ | ✓ | ✓ |
session.uuid | String | ✓ | ✓ | ✓ | ✓ |
session.client_ip | 文字列 | ✓ | ✓ | ✗ | ✗ |
session.clientIp | 文字列 | ✗ | ✗ | ✓ | ✓ |
session.user_agent | 文字列 | ✓ | ✓ | ✗ | ✗ |
session.userAgent | 文字列 | ✗ | ✗ | ✓ | ✓ |
session.referer* | String | ✓ | ✓ | ✗ | ✗ |
session.avail_duration_secs | ロング | ✗ | ✓ | ✗ | ✗ |
session.avail_duration_ms | ロング | ✗ | ✓ | ✗ | ✗ |
session.streamingProtocol | String | ✗ | ✗ | ✓ | ✓ |
session.playerParams | オブジェクト | ✗ | ✗ | ✓ | ✓ |
player_params.* | String | ✓ | ✓ | ✗ | ✗ |
event.id | 文字列 | ✓ | ✓ | ✓ | ✓ |
event.hook | 文字列 | ✓ | ✓ | ✓ | ✓ |
event.timestamp | String | ✓ | ✓ | ✓ | ✓ |
avail.index | Int | ✗ | ✓ | ✗ | ✗ |
avail.random | Long | ✗ | ✓ | ✗ | ✗ |
avail.source_content_time_epoch_ms | ロング | ✗ | ✓ | ✗ | ✗ |
avail.availId† | String | ✗ | ✗ | ✓ | ✗ |
avail.durationSeconds† | Number | ✗ | ✗ | ✓ | ✗ |
avail.startTime† | String | ✗ | ✗ | ✓ | ✗ |
scte.event_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.avail_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_event_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_type_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid | String | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.assetId | 文字列 | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.cueData.key | 文字列 | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.cueData.value | String | ✗ | ✓ | ✗ | ✗ |
scte.unique_program_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.archive_allowed_flag | ブール値 | ✗ | ✓ | ✗ | ✗ |
scte.delivery_not_restricted_flag | ブール値 | ✗ | ✓ | ✗ | ✗ |
scte.device_restrictions | Int | ✗ | ✓ | ✗ | ✗ |
scte.no_regional_blackout_flag | ブール値 | ✗ | ✓ | ✗ | ✗ |
scte.segment_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.segments_expected | Int | ✗ | ✓ | ✗ | ✗ |
scte.sub_segment_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.sub_segments_expected | Int | ✗ | ✓ | ✗ | ✗ |
scte.avails_expected | Long | ✗ | ✓ | ✗ | ✗ |
asset.* | String | ✗ | ✓ | ✗ | ✗ |
inference.enriched | ブール値 | ✗ | ✓ | ✗ | ✗ |
inference.feedId | String | ✗ | ✓ | ✗ | ✗ |
inference.dataEndpoint | String | ✗ | ✓ | ✗ | ✗ |
inference.pts | ロング | ✗ | ✓ | ✗ | ✗ |
inference.timescale | ロング | ✗ | ✓ | ✗ | ✗ |
inference.region | String | ✗ | ✓ | ✗ | ✗ |
inference.previousBreakEndPts | ロング | ✗ | ✓ | ✗ | ✗ |
inference.parseError | ブール値 | ✗ | ✓ | ✗ | ✗ |
adsRequest.url | String | ✗ | ✓ | ✓ | ✗ |
adsRequest.method | 文字列 | ✗ | ✓ | ✓ | ✗ |
adsRequest.headers.<key> | 文字列 | ✗ | ✓ | ✓ | ✗ |
adsRequest.body | 文字列 | ✗ | ✓ | ✗ | ✗ |
adsResponse.responseType | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads | 配列 | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adId‡ | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].durationSeconds | Number | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adSystem | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adTitle | 文字列 | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].creativeId | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].sequence | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles | 配列 | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].url | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].mimeType | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].width | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].height | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].bitrate | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].trackingEvents.<eventType> | 文字列の配列 | ✗ | ✗ | ✓ | ✗ |
avails.avails | 配列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].availId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].durationSeconds | Number | ✗ | ✗ | ✗ | ✓ |
avails.avails[].startTime | 数値 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].mediaProtocol | 文字列 (HLS | DASH) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].streamingMode | 文字列 (LIVE | VOD) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].fillDurationSeconds | Number | ✗ | ✗ | ✗ | ✓ |
avails.avails[].fillRate | 数値 (0~1) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].mutable | ブール値 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads | 配列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adId§ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].vastAdId | 文字列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].creativeId | 文字列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].insertionUuid | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].sequenceInAvail | Int | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].durationSeconds | Number | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adSystem¶ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adTitle¶ | 文字列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].mediaUrl | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].trackingEvents.<eventType> | 文字列の配列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].mediaFiles | 配列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds | 配列 | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].adId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].vastAdId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].durationSeconds | Number | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].creativeUrl | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].reason | String | ✗ | ✗ | ✗ | ✓ |
* session.refererは、Referer ヘッダーがセッション初期化リクエストに含まれている場合にのみ存在します。アクセスする前に $exists(session.referer) を使用して確認します。
† avail名前空間は、ADS レスポンスが 1 つの広告時間枠に適用される場合にのみ存在します。マルチブレーク (VMAP) レスポンスやプリフェッチされたレスポンスには存在しません。アクセスする前に $exists(avail) を使用して確認します。
‡ ではPOST_ADS_RESPONSE、 adIdは VAST <Ad>要素のid属性です。
§ ではPRE_MANIFEST_INSERTION、 adIdは内部配置識別子です。広告時間枠内の広告では安定していますが、VAST 広告 ID ではなく、広告時間枠やフック間で比較できません。広告ブレークまたはフックにまたがるアイデンティティチェックの場合は、 vastAdId (VAST <Ad>要素の id 属性) または を使用しますcreativeId。
¶ DASH VOD ストリームでは、 adTitleと adSystemはこのフックnullにあります。述語creativeIdで vastAdIdまたは を使用します。