View a markdown version of this page

Costruzione e modellazione delle offerte - AWS Elemental MediaTailor

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Costruzione e modellazione delle offerte

Questa pagina spiega come MediaTailor creare una richiesta di offerta OpenRTB dal tuo modello, come funziona l'interpolazione delle variabili e quali valori vengono impostati automaticamente. MediaTailor

Campi di configurazione

Quando abiliti l'ottimizzazione del rendimento su una configurazione di riproduzione, fornisci quattro campi:

Campo Description Richiesto
PublisherId Il tuo ID editore APS (ottenuto dalla registrazione APS). Inserito in ogni app.publisher.id richiesta di offerta. Sì
Region Regione APS:AMERICAS,EUROPE, oASIA_PACIFIC. Determina l'endpoint APS. Sì
MinimumUnfilledDuration Sono necessari almeno secondi vuoti prima che venga MediaTailor attivata una richiesta di offerta. Utilizzato anche come. imp.video.minduration Sì
OpenRtbTemplate Il tuo modello JSON ORTB (max 100 KB). Definisce il corpo della richiesta di offerta. Sì

Come viene costruita la richiesta di offerta

Quando un'interruzione pubblicitaria ha una durata residua non completata, MediaTailor costruisce la richiesta di offerta in questi passaggi:

  1. Interpolazione dei modelli. MediaTailor risolve{{session.*}},, {{player_params.*}} {{avail.*}}{{request.*}}, e i {{scte.*}} segnaposto nel modello {{asset.*}} utilizzando la sintassi standard di Mustache per i modelli. https://mustache.github.io/mustache.5.html Mustache utilizza doppie parentesi graffe{{ }}, che differiscono dalle parentesi quadre utilizzate nella sostituzione delle variabili URL ADS. [ ]

  2. Analisi JSON. Il modello interpolato viene analizzato come JSON.

  3. Estrazione e convalida dei campi. MediaTailorestrae i campi obbligatori e genera un messaggio BidRequestConfigurationError se mancano o sono vuoti.

  4. Iniezione di campo codificata. MediaTailor sovrascrive o inserisce i campi che gestisce automaticamente utilizzando i valori della configurazione della console e del contesto di disponibilità corrente (ad esempio, app.publisher.id dall'ID editore configurato, dalla durata non compilata calcolata). imp.video.maxduration

  5. Serializzazione e invio. La finale BidRequest viene serializzata in JSON e inviata come HTTP POST all'endpoint APS.

Importante

Se un campo obbligatorio è mancante o vuoto dopo l'interpolazione, la richiesta di offerta ha esito negativo BidRequestConfigurationError e nessuna richiesta viene inviata ad APS. L'errore viene registrato ma la riproduzione continua normalmente (fail-open).

Modello predefinito della console

Quando abiliti l'ottimizzazione del rendimento nella MediaTailor console, viene fornito il seguente modello precompilato come punto di partenza. Dovresti personalizzare i valori per la tua applicazione:

{ "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 spiegazione:

Campo Categoria Cosa fare
imp[0].bidfloor Facoltativo (impostazione predefinita: 1.0) Imposta il tuo CPM minimo. L'impostazione predefinita della console è $5. Inferiore per una migliore percentuale di riempimento durante i test.
app.id APS consigliato L'identificatore della tua app. Il giocatore deve inviareplayerParams.app_id.
app.name APS consigliato Il nome della tua app. Il giocatore deve inviareplayerParams.app_name.
app.bundle È obbligatorio L'ID del tuo pacchetto di app. Il giocatore deve inviare playerParams.bundle o sostituire con un valore statico (consigliato).
app.storeurl È obbligatorio L'URL del tuo app store. Il giocatore deve inviare playerParams.storeurl o sostituire con un valore statico (consigliato).
app.domain APS consigliato Il dominio della tua app. Il giocatore deve inviareplayerParams.domain.
app.content.genre APS consigliato Compilato a partire dai metadati delle risorse di origine dei contenuti.
app.content.contentrating APS consigliato Compilato a partire dai metadati delle risorse di origine dei contenuti.
device.dnt APS consigliato Bandiera Do Not Track. Il giocatore deve inviareplayerParams.dnt.
device.ua È obbligatorio Compilato automaticamente dall' User-Agent intestazione dello spettatore fino a. {{session.user_agent}} Non è necessario alcun parametro del giocatore.
device.ip È obbligatorio Compilato automaticamente dall'IP del visualizzatore tramite{{session.client_ip}}. Non è necessario alcun parametro del giocatore.
device.ifa APS consigliato ID pubblicitario. Il giocatore deve inviareplayerParams.device_ifa.
device.w / device.h APS consigliato Dimensioni dello schermo. Il giocatore deve inviareplayerParams.device_width/device_height.
device.language APS consigliato Lingua del dispositivo. Il giocatore deve inviareplayerParams.language.
device.model APS consigliato Modello del dispositivo. Il giocatore deve inviareplayerParams.model.
device.os / device.osv APS consigliato Sistema operativo e versione. Il giocatore deve inviareplayerParams.os/osv.
device.devicetype Sostituibile (impostazione predefinita: 3) Tipo di dispositivo IAB. Il giocatore deve inviareplayerParams.devicetype. Il valore predefinito è 3 (CTV) se vuoto.
device.make APS consigliato Produttore del dispositivo. Il giocatore deve inviareplayerParams.make.
user.consent Consigliato APS (UE) Stringa di consenso GDPR (TCF). Il giocatore deve inviareplayerParams.consent.
regs.gdpr Consigliato APS (UE) Bandiera GDPR (0 o 1). Il giocatore deve inviareplayerParams.gdpr.
regs.us_privacy Consigliato APS (USA) Stringa CCPA (ad esempio,1YNY). Il giocatore deve inviareplayerParams.us_privacy.
regs.gpp APS consigliato Stringa di consenso di Global Privacy Platform. Il giocatore deve inviareplayerParams.gpp_consent. Preferito rispetto us_privacy ai tassi di riempimento migliori.
regs.gpp_sid Consigliato APS ID di sezione GPP (ad esempio, [7] per i cittadini statunitensi). Il giocatore deve inviareplayerParams.gpp_sid.
Importante

L'impostazione predefinita della console utilizza {{player_params.*}} campi obbligatori come app.bundle eapp.storeurl. Se il giocatore non invia questi parametri, la richiesta di offerta non andrà a buon fineBidRequestConfigurationError. Per i campi uguali per ogni sessione (in genereapp.bundle,app.storeurl, e altri identificatori a livello di app)app.name, valuta la possibilità di sostituire il segnaposto con un valore statico (ad esempio,). "bundle": "com.yourcompany.app" Non inserire l'hardcode nei campi che variano a seconda del visualizzatore, ad esempio,,, le device.ua stringhe di consenso GDPR e GPP o i campi dei registri o degli oggetti utente. device.ip device.ifa Questi devono provenire da o. {{session.*}} {{player_params.*}}

Nota

L'impostazione predefinita della console non include video.mimes o video.protocols nel modello. MediaTailor utilizza valori di riserva codificati (["video/mp4"]per MIME, [1,2,3,4,5,6,7,8] per protocolli) quando non vengono forniti. Puoi aggiungerli al tuo modello se desideri limitare i formati supportati.

Interpolazione dei modelli (Moustache templating)

Il modello ORTB utilizza la sintassi dei modelli Mustache per la sostituzione dinamica dei valori. I segnaposto {{ }} utilizzano doppie parentesi graffe.

Variabili di modello disponibili

Il modello ORTB può utilizzare le stesse variabili dinamiche disponibili nei modelli di URL ADS. Queste includono variabili di sessione (ad esempio,{{session.client_ip}}){{session.user_agent}}, parametri del giocatore ({{player_params.*}}), metadati delle risorse ({{asset.*}}), avail context () e dati del segnale SCTE ({{avail.*}}). {{scte.*}}

Per l'elenco completo delle variabili disponibili e le relative descrizioni, consulta. MediaTailor variabili pubblicitarie dinamiche per richieste ADS Per informazioni sui valori dei parametri del MediaTailor URL-decodes giocatore prima di sostituirli nel modello, consulta Comportamento di codifica e decodifica più avanti questa pagina.

Le variabili più comunemente usate nei template ORTB sono:

  • {{session.user_agent}}: User-Agent intestazione del visualizzatore (da usare perdevice.ua).

  • {{session.client_ip}}: indirizzo IP del visualizzatore (da utilizzare perdevice.ip).

  • {{player_params.*}}: valori personalizzati passati dal giocatore durante l'inizializzazione della sessione.

  • {{asset.*}}: metadati del contenuto dall'origine (ad esempio,asset.genre). asset.content_rating

avvertimento

Racchiudi sempre i segnaposto tra virgolette, anche per campi numerici come o. dnt devicetype Se un segnaposto si risolve in una stringa vuota e non viene citato (ad esempio"dnt": {{player_params.dnt}}), il risultato è un JSON non valido e l'intera richiesta di offerta ha esito negativo con un. BidRequestConfigurationError Usare invece "dnt": "{{player_params.dnt}}". APS accetta i campi numerici passati come stringhe. Questo comportamento è stato progettato perché la quotazione automatica delle sostituzioni di stringhe vuote entrerebbe in conflitto con la modalità RAW-JSON utilizzata altrove nell'interpolatore. Il vincolo è documentato anziché applicato. Vedi anche come MediaTailor gestisce Comportamento di codifica e decodifica i valori dei parametri del giocatore prima dell'interpolazione.

Come passare i parametri del giocatore

Ci sono due modi per passare i parametri del giocatore durante l'inizializzazione della sessione.

Metodo 1: richiesta POST con corpo JSON (consigliato)

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" } }

Questo metodo è preferito perché evita URL-encoding problemi con valori complessi come le stringhe dell'agente utente.

Metodo 2: parametri di interrogazione degli URL

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

Con questo metodo, i valori devono essere URL-encoded. MediaTailor URL-decodes prima dell'interpolazione.

Comportamento di codifica e decodifica

MediaTailor esegue un livello di decodifica degli URL sui valori dei parametri del giocatore prima di interpolarli nel modello. Ciò si applica indipendentemente da come vengono passati i parametri (parametri del corpo POST o dei parametri di interrogazione dell'URL).

Esempi di valori decodificati:

Valore inviato Valore dopo la decodifica (utilizzato nel modello)
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)

Punti chiave:

  • MediaTailor decodifica su un solo livello. Double-encoded i valori (ad esempio,%2520) verranno decodificati in uno spazio%20, non in uno spazio.

  • Vengono decodificati anche i valori del corpo POST. Se il corpo del POST contiene URL-encoded valori, questi verranno decodificati prima dell'interpolazione.

  • I valori di testo normale (senza codifica) vengono trasmessi invariati.

  • Dopo la decodifica e l'interpolazione, l'intero modello viene analizzato come JSON. I caratteri speciali nei valori interpolati (come virgolette senza escape o barre rovesciate) possono interrompere l'analisi JSON.

Suggerimento

Se il lettore invia valori che sono già in testo normale (non), funzionano così come sono. URL-encoded Devi solo essere consapevole della decodifica dei URL-encodes valori da parte del lettore prima di inviarli.

Cosa succede quando manca una variabile

Se il giocatore non invia un parametro a cui si fa riferimento nel modello (ad esempio, {{player_params.app_name}} ma non app_name nei parametri del player), il segnaposto si trasforma in una stringa vuota. ""

Impatto: se la stringa vuota si trova in un campo obbligatorio (ad esempioapp.bundle), la richiesta di offerta non va a buon fine. BidRequestConfigurationError Se si trova in un campo opzionale, APS riceve un valore vuoto che può causare una risposta di mancata offerta (HTTP 204).

Cosa viene MediaTailor impostato automaticamente

I seguenti campi vengono sempre impostati MediaTailor utilizzando i valori della configurazione della console e del contesto di disponibilità corrente. Se li includi nel modello, i tuoi valori vengono sovrascritti:

Campo Origine
id Auto-generated: {sessionId}_{availId} formato (ad esempio,abc123-def456_78901). Utile per correlare le richieste di offerta con i registri delle sessioni.
app.publisher.id La tua configurazione viene effettuata PublisherId dalla console.
imp[0].video.minduration La tua configurazione viene MinimumUnfilledDuration dalla console.
imp[0].video.maxduration Calcolato: secondi effettivi non occupati per questo risultato.
imp[0].video.maxseq Calcolato:. floor(unfilled_duration / 6)
imp[0].video.poddur Calcolato: secondi vuoti effettivi per questo risultato.
ext.integrationType Sempre impostato su. "EMT"

Fasi successive