View a markdown version of this page

Construction et création de modèles d'offres - AWS Elemental MediaTailor

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.

Construction et création de modèles d'offres

Cette page explique comment MediaTailor créer une demande d'enchère OpenRTB à partir de votre modèle, comment fonctionne l'interpolation des variables et quelles valeurs sont définies automatiquement. MediaTailor

Champs de configuration

Lorsque vous activez l'optimisation du rendement dans une configuration de lecture, vous fournissez quatre champs :

Champ Description Obligatoire
PublisherId Votre identifiant d'éditeur APS (obtenu lors de l'enregistrement APS). app.publisher.idInjecté dans chaque demande d'offre. Oui
Region Région APS : AMERICASEUROPE, ouASIA_PACIFIC. Détermine le point de terminaison APS. Oui
MinimumUnfilledDuration Minimum de secondes libres requises avant qu'une demande d'offre ne soit MediaTailor déclenchée. Également utilisé commeimp.video.minduration. Oui
OpenRtbTemplate Votre modèle JSON ORTB (100 Ko maximum). Définit le corps de la demande d'offre. Oui

Comment est construite la demande d'offre

Lorsqu'il ne reste plus de temps pour une pause publicitaire, MediaTailor construit la demande d'offre en procédant comme suit :

  1. Interpolation de modèles. MediaTailor résout{{session.*}},, {{player_params.*}} {{avail.*}} {{request.*}}{{asset.*}}, et les {{scte.*}} espaces réservés dans votre modèle à l'aide de la syntaxe de modélisation standard de Moustache. Moustache utilise des crochets doubles{{ }}, qui diffèrent des crochets [ ] utilisés dans la substitution de variables d'URL ADS.

  2. Analyse JSON. Le modèle interpolé est analysé au format JSON.

  3. Extraction et validation sur le terrain. MediaTailorextrait les champs obligatoires et renvoie un message BidRequestConfigurationError s'il en manque ou est vide.

  4. Injection de champ codée en dur. MediaTailor remplace ou injecte des champs qu'il gère automatiquement à l'aide de valeurs issues de la configuration de la console et du contexte de disponibilité actuel (par exemple, app.publisher.id à partir de votre identifiant d'éditeur configuré, imp.video.maxduration de la durée non remplie calculée).

  5. Sérialisation et soumission. La version finale BidRequest est sérialisée au format JSON et envoyée sous forme de HTTP POST au point de terminaison APS.

Important

Si un champ obligatoire est manquant ou vide après l'interpolation, la demande d'offre échoue avec un BidRequestConfigurationError et aucune demande n'est envoyée à APS. L'erreur est enregistrée mais la lecture se poursuit normalement (échec d'ouverture).

Modèle de console par défaut

Lorsque vous activez l'optimisation du rendement dans la MediaTailor console, le modèle prérempli suivant est fourni comme point de départ. Vous devez personnaliser les valeurs de votre application :

{ "imp": [ { "bidfloor": 5 } ], "app": { "id": "{{player_params.app_id}}", "name": "{{player_params.app_name}}", "bundle": "{{player_params.bundle}}", "storeurl": "{{player_params.storeurl}}", "domain": "{{player_params.domain}}", "content": { "genre": "{{asset.genre}}", "contentrating": "{{asset.content_rating}}" } }, "device": { "dnt": "{{player_params.dnt}}", "ua": "{{session.user_agent}}", "ip": "{{session.client_ip}}", "ifa": "{{player_params.device_ifa}}", "w": "{{player_params.device_width}}", "h": "{{player_params.device_height}}", "language": "{{player_params.language}}", "model": "{{player_params.model}}", "os": "{{player_params.os}}", "osv": "{{player_params.osv}}", "devicetype": "{{player_params.devicetype}}", "make": "{{player_params.make}}" }, "user": { "consent": "{{player_params.consent}}" }, "regs": { "gdpr": "{{player_params.gdpr}}", "us_privacy": "{{player_params.us_privacy}}", "gpp": "{{player_params.gpp_consent}}", "gpp_sid": "{{player_params.gpp_sid}}" } }

Field-by-field explication :

Champ Catégorie Que faire
imp[0].bidfloor Facultatif (par défaut : 1.0) Définissez votre CPM minimum. La valeur par défaut de la console est de 5$ Plus bas pour de meilleurs taux de remplissage pendant les tests.
app.id APS recommandé L'identifiant de votre application. Le joueur doit envoyerplayerParams.app_id.
app.name APS recommandé Le nom de votre application. Le joueur doit envoyerplayerParams.app_name.
app.bundle obligatoire L'identifiant de votre pack d'applications. Le joueur doit envoyer playerParams.bundle ou remplacer par une valeur statique (recommandé).
app.storeurl obligatoire URL de votre boutique d'applications. Le joueur doit envoyer playerParams.storeurl ou remplacer par une valeur statique (recommandé).
app.domain APS recommandé Le domaine de votre application. Le joueur doit envoyerplayerParams.domain.
app.content.genre APS recommandé Rempli à partir des métadonnées des ressources de la source de contenu.
app.content.contentrating APS recommandé Rempli à partir des métadonnées des ressources de la source de contenu.
device.dnt APS recommandé Drapeau Do Not Track. Le joueur doit envoyerplayerParams.dnt.
device.ua obligatoire Rempli automatiquement à partir de l' User-Agent en-tête de l'utilisateur{{session.user_agent}}. Aucun paramètre de joueur n'est nécessaire.
device.ip obligatoire Rempli automatiquement à partir de l'adresse IP du spectateur via{{session.client_ip}}. Aucun paramètre de joueur n'est nécessaire.
device.ifa APS recommandé Identifiant publicitaire. Le joueur doit envoyerplayerParams.device_ifa.
device.w / device.h APS recommandé Dimensions de l'écran. Le joueur doit envoyerplayerParams.device_width/device_height.
device.language APS recommandé Langue de l'appareil. Le joueur doit envoyerplayerParams.language.
device.model APS recommandé Modèle de l'appareil Le joueur doit envoyerplayerParams.model.
device.os / device.osv APS recommandé Système d'exploitation et version. Le joueur doit envoyerplayerParams.os/osv.
device.devicetype Peut être remplacé (par défaut : 3) Type d'appareil IAB. Le joueur doit envoyerplayerParams.devicetype. La valeur par défaut est 3 (CTV) si elle est vide.
device.make APS recommandé Fabricant de l'appareil. Le joueur doit envoyerplayerParams.make.
user.consent APS recommandé (UE) Chaîne de consentement RGPD (TCF). Le joueur doit envoyerplayerParams.consent.
regs.gdpr APS recommandé (UE) Drapeau RGPD (0 ou 1). Le joueur doit envoyerplayerParams.gdpr.
regs.us_privacy APS recommandé (États-Unis) chaîne CCPA (par exemple,1YNY). Le joueur doit envoyerplayerParams.us_privacy.
regs.gpp APS recommandé Chaîne de consentement de la Global Privacy Platform. Le joueur doit envoyerplayerParams.gpp_consent. À privilégier us_privacy pour de meilleurs taux de remplissage.
regs.gpp_sid APS recommandé Identifiants de section GPP (par exemple, [7] pour les ressortissants américains). Le joueur doit envoyerplayerParams.gpp_sid.
Important

La console utilise par défaut {{player_params.*}} des champs obligatoires tels que app.bundle etapp.storeurl. Si votre joueur n'envoie pas ces paramètres, la demande d'enchère échoueraBidRequestConfigurationError. Pour les champs identiques pour chaque session (généralementapp.bundle, app.storeurlapp.name, et autres identifiants au niveau de l'application), pensez à remplacer l'espace réservé par une valeur statique (par exemple,). "bundle": "com.yourcompany.app" Ne codez pas en dur les champs qui varient d'un utilisateur à l'autre device.ua device.ipdevice.ifa, tels que les chaînes de consentement RGPD et GPP, ni les champs de règles ou d'objets utilisateur. Ceux-ci doivent provenir de {{session.*}} ou{{player_params.*}}.

Note

La valeur par défaut de la console n'inclut pas video.mimes ou n'est pas incluse video.protocols dans le modèle. MediaTailor utilise des valeurs de repli codées en dur (["video/mp4"]pour les mimes, [1,2,3,4,5,6,7,8] pour les protocoles) lorsqu'elles ne sont pas fournies. Vous pouvez les ajouter à votre modèle si vous souhaitez restreindre les formats pris en charge.

Interpolation de modèles (modèles de moustache)

Votre modèle ORTB utilise la syntaxe de modélisation Mustache pour la substitution dynamique de valeurs. Les espaces réservés utilisent des crochets doubles. {{ }}

Variables de modèle disponibles

Votre modèle ORTB peut utiliser les mêmes variables dynamiques que celles disponibles dans les modèles d'URL ADS. Il s'agit notamment des variables de session (par exemple{{session.user_agent}},{{session.client_ip}}), des paramètres du joueur ({{player_params.*}}), des métadonnées des actifs ({{asset.*}}), du contexte de disponibilité ({{avail.*}}) et des données de signal SCTE ({{scte.*}}).

Pour obtenir la liste complète des variables disponibles et leurs descriptions, consultezMediaTailor variables publicitaires dynamiques pour les demandes ADS. Pour savoir comment MediaTailor URL-decodes le joueur paramètre les valeurs avant de les remplacer dans le modèle, voir Comportement de codage et de décodage plus loin sur cette page.

Les variables les plus couramment utilisées dans les modèles ORTB sont les suivantes :

  • {{session.user_agent}}: User-Agent En-tête de l'utilisateur (à utiliser pourdevice.ua).

  • {{session.client_ip}}: Adresse IP de l'utilisateur (à utiliser pourdevice.ip).

  • {{player_params.*}}: valeurs personnalisées transmises par le joueur lors de l'initialisation de la session.

  • {{asset.*}}: métadonnées de contenu depuis l'origine (par exemple,asset.genre,asset.content_rating).

Avertissement

Placez toujours les espaces réservés entre guillemets, même pour les champs numériques tels que dnt oudevicetype. Si un espace réservé se résout en une chaîne vide et n'est pas entre guillemets (par exemple,"dnt": {{player_params.dnt}}), le résultat est un JSON non valide et l'ensemble de la demande d'enchère échoue avec unBidRequestConfigurationError. Utilisez "dnt": "{{player_params.dnt}}" à la place. APS accepte les champs numériques transmis sous forme de chaînes. Ce comportement est dû à la conception, car la substitution automatique de chaînes vides entre guillemets entrerait en conflit avec le mode JSON brut utilisé ailleurs dans l'interpolateur. La contrainte est documentée plutôt qu'appliquée. Voir également comment MediaTailor gère Comportement de codage et de décodage les valeurs des paramètres du joueur avant l'interpolation.

Comment transmettre les paramètres du joueur

Il existe deux manières de transmettre les paramètres du lecteur lors de l'initialisation de la session.

Méthode 1 : requête POST avec corps JSON (recommandé)

POST https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8 Content-Type: application/json { "playerParams": { "app_id": "558775_example", "slot_id": "608109df-2378-4bc5-8da5-24bc355f01a4", "os": "Tizen", "make": "Samsung", "model": "Tizen TV", "language": "en", "us_privacy": "1YNY" } }

Cette méthode est préférable car elle permet d'éviter les URL-encoding problèmes liés à des valeurs complexes telles que les chaînes de l'agent utilisateur.

Méthode 2 : paramètres de requête d'URL

GET https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8 ?playerParams.app_id=558775_example

Avec cette méthode, les valeurs doivent être URL-encoded. MediaTailor URL-decodes avant l'interpolation.

Comportement de codage et de décodage

MediaTailor effectue un niveau de décodage d'URL sur les valeurs des paramètres du joueur avant de les interpoler dans le modèle. Cela s'applique quelle que soit la manière dont les paramètres sont transmis (corps POST ou paramètres de requête URL).

Exemples de valeurs décodées :

Valeur envoyée Valeur après décodage (utilisée dans le modèle)
Test%20Os Test Os
https%3A%2F%2Flocalhost https://localhost
foo%20bar foo bar
Mozilla%2F5.0%20(SMART-TV) Mozilla/5.0 (SMART-TV)

Points clés :

  • MediaTailor décode à un seul niveau. Double-encoded les valeurs (par exemple,%2520) seront décodées dans un espace %20 et non dans un espace.

  • Les valeurs du corps POST sont également décodées. Si votre corps POST contient des URL-encoded valeurs, celles-ci seront décodées avant l'interpolation.

  • Les valeurs en texte brut (sans codage) sont transmises inchangées.

  • Après le décodage et l'interpolation, l'intégralité du modèle est analysée au format JSON. Les caractères spéciaux contenus dans les valeurs interpolées (comme les guillemets non échappés ou les barres obliques inverses) peuvent interrompre l'analyse JSON.

Astuce

Si votre lecteur envoie des valeurs qui sont déjà en texte brut (pas URL-encoded), elles fonctionnent telles quelles. Il vous suffit de faire attention au décodage des URL-encodes valeurs de votre joueur avant de les envoyer.

Que se passe-t-il lorsqu'une variable est manquante

Si le lecteur n'envoie aucun paramètre référencé dans votre modèle (par exemple, {{player_params.app_name}} mais aucun app_name dans les paramètres du lecteur), l'espace réservé se transforme en une chaîne vide. ""

Conséquence : si la chaîne vide se trouve dans un champ obligatoire (commeapp.bundle), la demande d'offre échoueBidRequestConfigurationError. S'il se trouve dans un champ facultatif, APS reçoit une valeur vide qui peut provoquer une réponse sans enchère (HTTP 204).

Qu'est-ce qui MediaTailor se règle automatiquement

Les champs suivants sont toujours définis à l' MediaTailor aide des valeurs de la configuration de votre console et du contexte de disponibilité actuel. Si vous les incluez dans votre modèle, vos valeurs sont remplacées :

Champ Source
id Auto-generated: {sessionId}_{availId} format (par exemple,abc123-def456_78901). Utile pour corréler les demandes d'enchères avec les journaux de session.
app.publisher.id Votre configuration PublisherId depuis la console.
imp[0].video.minduration Votre configuration MinimumUnfilledDuration depuis la console.
imp[0].video.maxduration Calculé : secondes réelles non utilisées pour cette utilisation.
imp[0].video.maxseq Calculé :floor(unfilled_duration / 6).
imp[0].video.poddur Calculé : secondes réelles non utilisées pour cette utilisation.
ext.integrationType Réglez toujours sur"EMT".

Étapes suivantes