

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 예제 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`는 빈 배열이며 원래 광고 목록은 변경되지 않고 사용됩니다.

**참고**  
출력 표현식`[]`의 후행은 필수입니다. 배열 강제가 없으면 0개 또는 1개의 광고를 생성하는 표현식은 배열을 생성하지 않으며 출력이 삭제되거나 잘못 적용됩니다. 자세한 내용은 [광고 후 응답](monetization-functions-hooks-post-ads.md) 단원을 참조하십시오.

이 예제에서 사용되는 필드에 대한 자세한 내용은 [VAST 요청](monetization-functions-types-vast-request.md) 및 섹션을 참조하세요[광고 후 응답](monetization-functions-hooks-post-ads.md).