

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exemple 4 : solution de repli sur un serveur publicitaire secondaire
<a name="monetization-functions-examples-backup-ads"></a>

## Scénario
<a name="monetization-functions-examples-backup-ads-scenario"></a>

Votre ADS principal renvoie parfois moins d'annonces que ce que la pause publicitaire peut contenir. Dans ce cas, vous souhaitez récupérer des publicités supplémentaires sur un serveur publicitaire secondaire et les ajouter à la liste des annonces, afin que les publicités supplémentaires puissent occuper le temps restant.

Cet exemple utilise le hook du `POST_ADS_RESPONSE` cycle de vie. Une `VAST_REQUEST` fonction récupère les publicités secondaires et une `SEQUENTIAL_EXECUTOR` orchestre le processus. Le bloc de sortie de l'exécuteur ajoute les publicités récupérées à la liste des annonces et `RunCondition` ignore complètement l'extraction secondaire lorsque la réponse principale contient déjà suffisamment de publicités.

## Configuration de la fonction
<a name="monetization-functions-examples-backup-ads-config"></a>

**Fonction de récupération (`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%}"
        }
    }
}
```

**Séquence (`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[]%}"
        }
    }
}
```

## Cartographie des fonctions
<a name="monetization-functions-examples-backup-ads-mapping"></a>

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

## Que se passe-t-il lors de l'exécution
<a name="monetization-functions-examples-backup-ads-runtime"></a>

1. MediaTailor reçoit et analyse la réponse ADS principale, puis déclenche le hook du `POST_ADS_RESPONSE` cycle de vie.

1. Si la réponse principale contient moins de 3 publicités, le serveur publicitaire secondaire `RunCondition` est évalué `true` et `fetchBackupAds` appelle le serveur publicitaire secondaire. MediaTailor analyse ensuite la réponse en tant que VAST, résout les redirections de wrapper et écrit les publicités analysées dans. `temp.backupAds`

1. Si la réponse principale contient déjà 3 annonces ou plus, l'extraction est ignorée et n'`temp.backupAds`est pas définie.

1. Le bloc de sortie de la séquence écrit la liste d'annonces combinée dans`adsResponse.ads`. Lorsque l'extraction a été ignorée, la condition prend la `else` branche et renvoie les annonces d'origine inchangées. Étant donné que les publicités secondaires ont été analysées par une `VAST_REQUEST` fonction dans le même hook d'invocation, MediaTailor restaure les données VAST complètes de chaque annonce ajoutée avant la sélection de l'annonce.

1. La sélection des annonces se poursuit avec la liste combinée. Si l'extraction secondaire a échoué, un tableau `temp.backupAds` est vide et la liste d'annonces d'origine est utilisée telle quelle.

**Note**  
La fin de `[]` l'expression de sortie est obligatoire. Sans coercition de tableau, une expression qui produit zéro ou une annonce ne produit pas de tableau, et la sortie est ignorée ou mal appliquée. Pour de plus amples informations, veuillez consulter [Post-ads réponse](monetization-functions-hooks-post-ads.md).

Pour plus d'informations sur les champs utilisés dans cet exemple, consultez [Demande Vaste](monetization-functions-types-vast-request.md) et[Post-ads réponse](monetization-functions-hooks-post-ads.md).