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 :
-
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 deMoustache. Moustache utilise des crochets doubles {{ }}, qui diffèrent des crochets[ ]utilisés dans la substitution de variables d'URL ADS. -
Analyse JSON. Le modèle interpolé est analysé au format JSON.
-
Extraction et validation sur le terrain. MediaTailorextrait les champs obligatoires et renvoie un message
BidRequestConfigurationErrors'il en manque ou est vide. -
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.maxdurationde la durée non remplie calculée). -
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 {{ }}
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%20et 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
-
Pour la référence complète champ par champ, voir. Champ de référence ORTB
-
Pour les modèles copier-coller, consultez. Exemple de modèles