

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

# VAST リクエスト
<a name="monetization-functions-types-vast-request"></a>

## どのようなときに使うか
<a name="monetization-functions-types-vast-request-when"></a>

`VAST_REQUEST` 関数が Video Ad Serving Template (VAST) エンドポイントから広告を取得する必要がある場合に使用します。MediaTailor はリクエストを送信し、ラッパーリダイレクトが解決された VAST としてレスポンスを解析し、解析された広告を出力式で使用できるようにします。一般的なユースケースには、短いプライマリレスポンスを補完するためのセカンダリ広告サーバーからの広告の取得、不足している広告時間枠に挿入するための住宅広告またはプロモーションの取得などがあります。

`VAST_REQUEST` 関数は、 `POST_ADS_RESPONSE`および `PRE_MANIFEST_INSERTION`ライフサイクルフックで、単独で、またはエグゼキュター内のステップとしてサポートされます。`VAST_REQUEST` 関数によって解析された広告は、完全な忠実度でそれらのフックの出力と統合されます。詳細については、「[解析済み広告とフック出力の統合方法](#monetization-functions-types-vast-request-store)」を参照してください。

## 設定フィールド
<a name="monetization-functions-types-vast-request-fields"></a>

`VAST_REQUEST` 関数には次のフィールドがあります。
+ **ランタイム** — 式言語。これを に設定します`JSONATA`。
+ **MethodType** — HTTP メソッド。サポートされている値は `GET` (デフォルト) と です`POST`。
+ **URL** — リクエストを送信する VAST エンドポイント。静的 URL または URL を動的に構築する JSONata 式を使用できます。静的 URL は `https`スキームを使用する必要があります。
+ **ヘッダー** — リクエストに含める HTTP ヘッダー。ヘッダー名と値のペアとして指定されます。動的ヘッダー値には`{%...%}`式構文を使用します。
+ **本文** — 送信するリクエスト本文。OpenRTB 入札`POST`リクエストを送信するなど、リクエストで使用されます。JSONata 式を使用して、本文を動的に構築できます。
+ **RequestTimeoutMilliseconds** (必須) — レスポンスを待機する時間。
+ **出力** — 呼び出しの完了後に生成する値を定義します。各エントリは、出力キーを、 を含む `response` オブジェクトを参照できる式にマッピングします`response.parsedAds`。

`HTTP_REQUEST` 関数に適用される HTTP リクエストの制限もここで適用されます。詳細については、「[制限](monetization-functions-limits.md)」を参照してください。

## リクエストの処理方法
<a name="monetization-functions-types-vast-request-phases"></a>

1. **リクエストを構築する** — MediaTailor は`Headers`、`Url`、、および `Body`式を現在のセッション状態と照らし合わせて評価し、リクエストを送信します。 `POST` リクエストは `application/json`コンテンツタイプで送信されます。

1. **レスポンスの解析** — MediaTailor はレスポンス本文を VAST として解析します。広告が VAST ラッパーの場合、MediaTailor はリダイレクトチェーンに従い、最終的なインライン広告に解決します。VAST 仕様で必要とされるように`GET`、ラッパーリダイレクトリクエストは常に で送信されます。エンドポイントが VAST 自体ではなく VAST URL を含むドキュメントを返す場合 (一部の入札者と同様）、URL を取得する`HTTP_REQUEST`ステップをチェーンし、その後に URL を取得する`VAST_REQUEST`ステップをチェーンします。

1. **解析された広告の処理** — MediaTailor は出力ブロック内の式を評価します。これらの式は、元のセッション状態と `response` オブジェクトを参照できます。

## レスポンスフィールド
<a name="monetization-functions-types-vast-request-response"></a>

呼び出しが完了したら、出力式で次のフィールドを参照できます。


| フィールド | タイプ | 説明 | 
| --- | --- | --- | 
| response.parsedAds | 配列 | ラッパーリダイレクトが解決された解析済み広告。各広告の形状は、POST\_ADS\_RESPONSEフックのadsResponse.adsエントリと同じです: adId、durationSeconds、、adSystem、adTitle、creativeIdsequencemediaFiles、、および trackingEvents。呼び出しが失敗するか、レスポンスが有効な VAST でない場合、空の配列に設定します。 | 
| response.statusCode | 整数 | エンドポイントによって返される HTTP ステータスコード。ネットワーク障害null時に を に設定します。 | 

解析された広告は と同じシェイプを使用するため`adsResponse.ads`、フィールド参照を書き換えることなく 2 つの表面間で式を移動できます。

## 解析済み広告とフック出力の統合方法
<a name="monetization-functions-types-vast-request-store"></a>

`VAST_REQUEST` 関数が解析するすべての広告は、フック呼び出しの期間中、広告の VAST 広告 ID によってキー指定された MediaTailor によって内部的に保持されます。これにより、解析された広告がフック出力でファーストクラス処理されます。
+ で`POST_ADS_RESPONSE`、解析された広告をその`adsResponse.ads`広告によって に追加すると、完全なメディアファイルリストや追跡イベントなど、広告の完全な解析された VAST データが`adId`復元されます。
+ で`PRE_MANIFEST_INSERTION`、 のみを使用して広告を挿入`vastAdId`すると、MediaTailor は最適なメディアファイルを選択し、トランスコード登録を自動的に処理できます。

**重要**  
保持された広告は、フック呼び出し間で引き継がれません。で行われた`VAST_REQUEST`呼び出し`POST_ADS_RESPONSE`は、後の`PRE_MANIFEST_INSERTION`呼び出しでは利用できません。結果を使用するのと同じフックの関数チェーン`VAST_REQUEST`で を呼び出します。

## 失敗動作
<a name="monetization-functions-types-vast-request-failure"></a>

ネットワークエラーまたはタイムアウトが原因で呼び出しが失敗した場合、エンドポイントが HTTP エラーを返した場合、またはレスポンスを VAST として解析できない場合、 `response.parsedAds`は空の配列であり、関数チェーンは続行されます。HTTP 障害と、実際に広告が含まれていない VAST レスポンスを区別`response.statusCode`するには、 をチェックします。

**ヒント**  
`RequestTimeoutMilliseconds` きつく保ちます。VAST ラッパー解決には複数のネットワークラウンドトリップが含まれる場合があり、それらはすべてフックのタイムアウトと共有フックの予算にカウントされます。

## 例: セカンダリ広告サーバーから広告を取得する
<a name="monetization-functions-types-vast-request-example"></a>

次の 関数は、バックアップ広告サーバーから広告を取得し、解析された広告を一時データに保存します。同じシーケンスの後の`CUSTOM_OUTPUT`ステップでは、それらを に追加できます`adsResponse.ads`。`POST_ADS_RESPONSE` ライフサイクルフック用に設計されています。

```
{
    "FunctionId": "fetchBackupAds",
    "FunctionType": "VAST_REQUEST",
    "VastRequestConfiguration": {
        "Runtime": "JSONATA",
        "MethodType": "GET",
        "Url": "{%'https://backup-ads.example.com/vast?sid=' & session.uuid%}",
        "Headers": {
            "Accept": "application/xml"
        },
        "RequestTimeoutMilliseconds": 1000,
        "Output": {
            "temp.backupAds": "{%response.parsedAds%}"
        }
    }
}
```

代わりに OpenRTB 入札リクエストを送信するには、 `MethodType` を に設定`POST`し、 で入札リクエストを指定します`Body`。入札者はレスポンス本文で VAST を返す必要があります。

同様の例の完全なチュートリアルについては、「」を参照してください[関数の例](monetization-functions-examples.md)。