

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

# 広告後のレスポンス
<a name="monetization-functions-hooks-post-ads"></a>

## 起動時
<a name="monetization-functions-hooks-post-ads-when"></a>

MediaTailor は、VAST ラッパーリダイレクトの解決など、ADS からレスポンスを受信して解析`POST_ADS_RESPONSE`した後、 にマッピングされた関数を実行します。この関数は、MediaTailor が挿入する広告を選択する前に解析された広告を表示するため、ここで行った変更は、どの広告が広告時間枠を満たすかに影響します。

フックは、すべてのストリーミングプロトコル (HLS および DASH) とすべての再生モード (ライブ、VOD、およびプリロール) に対して起動します。通常、広告時間枠ごとに 1 回発生します。複数の広告時間枠を一度にカバーする ADS レスポンス (VMAP レスポンスなど) およびプリフェッチされた広告レスポンスの場合、MediaTailor がレスポンスを処理するとフックが起動し、`avail`入力名前空間は存在しません。`$exists(avail)` を使用して、avail フィールドにアクセスする前に を確認します。

## Input
<a name="monetization-functions-hooks-post-ads-input"></a>

`event.*`、`session.*`、`adsRequest.*`、および `adsResponse.*`に加えて、レスポンスが 1 つの広告時間枠に適用される`avail.*`場合。使用可能なすべてのフィールドについては、「」を参照してください[入力フィールドリファレンス](monetization-functions-hooks.md#monetization-functions-hooks-input-ref)。

## 許可される出力名前空間
<a name="monetization-functions-hooks-post-ads-output"></a>


| Namespace | 使用できるタイプ | 出力の使用方法 | 
| --- | --- | --- | 
| adsResponse.ads | 広告オブジェクトの配列 | このレスポンスの解析済み広告リストを置き換えます。MediaTailor は、返された各広告を によって元の広告と照合adIdし、返されたリストで広告の選択に進みます。 | 
| temp.\* | いずれか | エグゼキュターのステップ間で値を渡すための一時的なデータ。永続化されません。 | 

変更された広告リストを に書き戻します`adsResponse.ads`。次のようにできます:
+ **フィルター** — 元の広告のサブセットを返します。省略した広告は挿入対象とは見なされず、その広告が占有した期間が他の広告で埋められるようになります。
+ **並べ替え** — 広告を別の順序で返します。順序は、どの広告が最初に広告時間枠を満たすかに影響します。
+ **変更** — 広告`trackingEvents`の `durationSeconds`、`adSystem``adTitle`、`mediaFiles`、、または を変更します。返された広告は変更されず、元の VAST メタデータがすべて保持されます。
+ **挿入 — **元のレスポンスになかった広告を追加します。新しいエントリには、`adId`、`durationSeconds`、および を含める必要があります`mediaFiles`。同じフック呼び出しの`VAST_REQUEST`関数でフェッチされた広告は例外です。MediaTailor `adId` は広告の完全な解析済み VAST データを復元するため、このような広告を で追加するだけで十分です。詳細については、「[VAST リクエスト](monetization-functions-types-vast-request.md)」を参照してください。

**重要**  
フィルタリングするときは、必ず JSONata 配列コンストラクタまたは配列強制を使用してください。などのフィルター式は、1 つの広告が一致すると 1 つのオブジェクト`adsResponse.ads[adSystem != 'BLOCKED']`を生成します。ゼロ広告が一致すると、まったく値が生成されません。この場合、出力キーは省略され、フィルターは効果がありません。式を角括弧で囲むか、 を追加します`[]`。  

```
{
    "Output": {
        "adsResponse.ads": "{%adsResponse.ads[adSystem != 'BLOCKED'][]%}"
    }
}
```

返される広告リストには、次のルールが適用されます。
+ 2 つのエントリが を共有する場合`adId`、最初の出現が優先されます。
+ 無効なエントリは個別に拒否されます。同じ出力の有効なエントリは引き続き適用されます。
+ 挿入されたエントリの が ADS レスポンスの広告と`adId`衝突した場合、元の広告がベースとして使用され、その上にフィールドの変更が適用されます。

## このフックに表示されないもの
<a name="monetization-functions-hooks-post-ads-scope"></a>

このフックは広告選択の前に実行されるため、後で他の MediaTailor 機能が寄与する広告は表示されず、最終的に挿入される広告は判断できません。これは、トランスコードステータスとフィルの決定が後で行われるためです。プリフェッチされた広告の場合、MediaTailor がプリフェッチレスポンス自体を処理するとフックが起動します。後の広告時間枠では、以前にプリフェッチされた広告は、このフックの実行後にマージされるため、フックには表示されません。最終的な広告セットを操作するには、 を使用します`PRE_MANIFEST_INSERTION`。

## 一般的なユースケース
<a name="monetization-functions-hooks-post-ads-use-cases"></a>
+ 競合する広告システムから広告を削除して、同じ広告ブレークに表示されないようにするなど、メタデータで広告をフィルタリングします (意図的な分離）。
+ プライマリレスポンスが短い場合は、 `VAST_REQUEST`関数を使用してセカンダリ広告サーバーから追加の広告を取得し、広告リストに追加します。
+ 優先広告が広告時間枠を埋めるように広告の順序を変更します。
+ 挿入前に追跡イベントまたは広告メタデータを変更します。

## 失敗動作
<a name="monetization-functions-hooks-post-ads-failure"></a>

にアタッチされた関数がタイムアウト、式エラー、無効な出力などの何らかの理由で`POST_ADS_RESPONSE`失敗した場合、MediaTailor は関数の出力を破棄します。リクエストは、関数がアタッチされていないかのように、元の ADS レスポンスで続行されます。シリアル化された入力が入力サイズ制限を超えると、MediaTailor はフック呼び出しを完全にスキップします。適用される制限については、「」を参照してください[制限](monetization-functions-limits.md)。