

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

# 例 4: セカンダリ広告サーバーのフォールバック
<a name="monetization-functions-examples-backup-ads"></a>

## シナリオ
<a name="monetization-functions-examples-backup-ads-scenario"></a>

プライマリ ADS が返す広告は、広告時間枠が保持できる数よりも少なくなることがあります。その場合は、セカンダリ広告サーバーから追加の広告を取得し、広告リストに追加して、余分な広告が残りの時間を埋められるようにします。

この例では、`POST_ADS_RESPONSE`ライフサイクルフックを使用します。`VAST_REQUEST` 関数はセカンダリ広告を取得し、プロセスを`SEQUENTIAL_EXECUTOR`オーケストレーションします。エグゼキュターの出力ブロックは、フェッチされた広告を広告リストに追加し、プライマリレスポンスに十分な広告がすでにある場合、そのセカンダリフェッチを完全に`RunCondition`スキップします。

## 関数の設定
<a name="monetization-functions-examples-backup-ads-config"></a>

**フェッチ関数 (`fetchBackupAds`):**

```
{
    "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%}"
        }
    }
}
```

**シーケンス (`backupAdsFallback`):**

```
{
    "FunctionId": "backupAdsFallback",
    "FunctionType": "SEQUENTIAL_EXECUTOR",
    "SequentialExecutorConfiguration": {
        "Runtime": "JSONATA",
        "TimeoutMilliseconds": 2000,
        "FunctionList": [
            { "FunctionId": "fetchBackupAds", "RunCondition": "{%$count(adsResponse.ads) < 3%}" }
        ],
        "Output": {
            "adsResponse.ads": "{%$count(adsResponse.ads) < 3 ? $append(adsResponse.ads, temp.backupAds)[] : adsResponse.ads[]%}"
        }
    }
}
```

## 関数マッピング
<a name="monetization-functions-examples-backup-ads-mapping"></a>

```
{
    "FunctionMapping": {
        "POST_ADS_RESPONSE": "backupAdsFallback"
    }
}
```

## 実行時の処理
<a name="monetization-functions-examples-backup-ads-runtime"></a>

1. MediaTailor はプライマリ ADS レスポンスを受信して解析し、`POST_ADS_RESPONSE`ライフサイクルフックを起動します。

1. プライマリレスポンスに含まれる広告が 3 つ未満の場合、 は `RunCondition` を評価し`true`、セカンダリ広告サーバーを`fetchBackupAds`呼び出します。次に、MediaTailor はレスポンスを VAST として解析し、ラッパーリダイレクトを解決して、解析された広告を に書き込みます`temp.backupAds`。

1. プライマリレスポンスに既に 3 つ以上の広告がある場合、フェッチはスキップされ`temp.backupAds`、設定されません。

1. シーケンスの出力ブロックは、結合された広告リストを に書き込みます`adsResponse.ads`。フェッチがスキップされると、条件は`else`ブランチを受け取り、元の広告を変更せずに返します。セカンダリ広告は同じフック呼び出しの`VAST_REQUEST`関数によって解析されたため、MediaTailor は、広告を選択する前に、追加された各広告の完全な VAST データを復元します。

1. 広告の選択は、結合されたリストに進みます。セカンダリフェッチが失敗した場合、 `temp.backupAds`は空の配列であり、元の広告リストは変更されずに使用されます。

**注記**  
`[]` 出力式の末尾は必須です。配列強制がない場合、ゼロまたは 1 つの広告を生成する式は配列を生成せず、出力は破棄または誤適用されます。詳細については、「[広告後のレスポンス](monetization-functions-hooks-post-ads.md)」を参照してください。

この例で使用されるフィールドの詳細については、[VAST リクエスト](monetization-functions-types-vast-request.md)「」および「」を参照してください[広告後のレスポンス](monetization-functions-hooks-post-ads.md)。