

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 関数ライフサイクルフック
<a name="monetization-functions-hooks"></a>

ライフサイクルフックは、MediaTailor が再生中に関数を実行するタイミングを定義します。このページは、入力フィールド、出力名前空間、および各フックのデータフローを管理するルールの完全なリファレンスです。

## 概要
<a name="monetization-functions-hooks-overview"></a>

MediaTailor は 4 つのライフサイクルフックをサポートしています。
+ **`PRE_SESSION_INITIALIZATION`** ビューワーが新しいセッションを開始すると、 が 1 回発生します。オーディエンスセグメントの取得などの 1 回限りのセットアップ作業に使用します。この時点では広告時間枠は発生していないため、広告時間枠コンテキストは使用できません。
+ **`PRE_ADS_REQUEST`** は、ストリーム内の広告ブレークごとに 1 回、すべての広告決定サーバー (ADS) リクエストの前に起動します。これを使用して、ターゲットデータを使用して ADS リクエストをカスタマイズしたり、ADS URL を変更したり、ヘッダーを追加したりできます。
+ **`POST_ADS_RESPONSE`** MediaTailor が 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`実行され、結合された予算の一部ではありません。詳細については、「[制限](monetization-functions-limits.md)」を参照してください。

**注記**  
このドキュメントでは、広告ブレークは *avail* とも呼ばれます。入力フィールド名 ( `avail.availId`や など`avails.avails`) と CloudWatch メトリクスは `avail`形式を使用します。

## 入力フィールドリファレンス
<a name="monetization-functions-hooks-input-ref"></a>

次の表に、各ライフサイクルフックで使用できる入力フィールドを示します。フィールド列の`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`または を使用します。