View a markdown version of this page

Construção e modelagem de propostas - AWS Elemental MediaTailor

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Construção e modelagem de propostas

Esta página explica como MediaTailor cria uma solicitação de lance do OpenRTB a partir do seu modelo, como a interpolação de variáveis funciona e quais valores são definidos automaticamente. MediaTailor

Campos de configuração

Ao ativar a otimização de rendimento em uma configuração de reprodução, você fornece quatro campos:

Campo Description Obrigatório
PublisherId Seu ID de editor do APS (obtido do registro do APS). Injetado app.publisher.id em cada solicitação de licitação. Sim
Region Região APS:AMERICAS,EUROPE, ouASIA_PACIFIC. Determina o endpoint do APS. Sim
MinimumUnfilledDuration O mínimo de segundos não preenchidos é necessário antes de MediaTailor acionar uma solicitação de lance. Também usado comoimp.video.minduration. Sim
OpenRtbTemplate Seu modelo ORTB JSON (máximo de 100 KB). Define o corpo da solicitação de oferta. Sim

Como a solicitação de licitação é construída

Quando um intervalo de anúncio tem a duração restante não preenchida, cria MediaTailor a solicitação de lance nas seguintes etapas:

  1. Interpolação de modelos. MediaTailor resolve{{session.*}},,, {{player_params.*}} {{avail.*}} {{request.*}}{{asset.*}}, e {{scte.*}} espaços reservados em seu modelo usando a sintaxe de modelagem padrão do Mustache. O Mustache usa colchetes duplos{{ }}, o que difere dos colchetes [ ] usados na substituição de variáveis de URL do ADS.

  2. Análise JSON. O modelo interpolado é analisado como JSON.

  3. Extração e validação de campo. MediaTailorextrai campos obrigatórios e lança um BidRequestConfigurationError se algum estiver ausente ou vazio.

  4. Injeção de campo codificada. MediaTailor substitui ou injeta campos que ele gerencia automaticamente usando valores da configuração do console e do contexto atual de disponibilidade (por exemplo, app.publisher.id do seu ID de editor configurado, da duração calculada não imp.video.maxduration preenchida).

  5. Serialização e envio. O final BidRequest é serializado para JSON e enviado como HTTP POST para o endpoint APS.

Importante

Se algum campo obrigatório estiver ausente ou vazio após a interpolação, a solicitação de oferta falhará com a BidRequestConfigurationError e nenhuma solicitação será enviada à APS. O erro é registrado, mas a reprodução continua normalmente (falha na abertura).

Modelo padrão do console

Quando você ativa a otimização de rendimento no MediaTailor console, o seguinte modelo pré-preenchido é fornecido como ponto de partida. Você deve personalizar os valores do seu aplicativo:

{ "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 explicação:

Campo Categoria O que fazer
imp[0].bidfloor Opcional (padrão: 1,0) Defina seu CPM mínimo. O padrão do console é $5. Reduza para melhores taxas de preenchimento durante o teste.
app.id APS recomendado O identificador do seu aplicativo. O jogador deve enviarplayerParams.app_id.
app.name APS recomendado Nome do seu aplicativo. O jogador deve enviarplayerParams.app_name.
app.bundle Obrigatório ID do seu pacote de aplicativos. O jogador deve enviar playerParams.bundle ou substituir por um valor estático (recomendado).
app.storeurl Obrigatório URL da sua loja de aplicativos. O jogador deve enviar playerParams.storeurl ou substituir por um valor estático (recomendado).
app.domain APS recomendado O domínio do seu aplicativo. O jogador deve enviarplayerParams.domain.
app.content.genre APS recomendado Preenchido a partir de metadados de ativos da fonte de conteúdo.
app.content.contentrating APS recomendado Preenchido a partir de metadados de ativos da fonte de conteúdo.
device.dnt APS recomendado Sinalizador do Do Not Track. O jogador deve enviarplayerParams.dnt.
device.ua Obrigatório Preenchido automaticamente do User-Agent cabeçalho do visualizador até {{session.user_agent}} o. Nenhum parâmetro de jogador é necessário.
device.ip Obrigatório Preenchido automaticamente a partir do IP do espectador até{{session.client_ip}}. Nenhum parâmetro de jogador é necessário.
device.ifa APS recomendado ID de publicidade. O jogador deve enviarplayerParams.device_ifa.
device.w / device.h APS recomendado Dimensões da tela. O jogador deve enviarplayerParams.device_width/device_height.
device.language APS recomendado Idioma do dispositivo. O jogador deve enviarplayerParams.language.
device.model APS recomendado Modelo do dispositivo. O jogador deve enviarplayerParams.model.
device.os / device.osv APS recomendado Sistema operacional e versão. O jogador deve enviarplayerParams.os/osv.
device.devicetype Substituível (padrão: 3) Tipo de dispositivo IAB. O jogador deve enviarplayerParams.devicetype. O padrão é 3 (CTV) se estiver vazio.
device.make APS recomendado Fabricante do dispositivo. O jogador deve enviarplayerParams.make.
user.consent APS recomendado (UE) Cadeia de consentimento do GDPR (TCF). O jogador deve enviarplayerParams.consent.
regs.gdpr APS recomendado (UE) Sinalizador GDPR (0 ou 1). O jogador deve enviarplayerParams.gdpr.
regs.us_privacy APS Recomendado (EUA) Cadeia de caracteres CCPA (por exemplo,1YNY). O jogador deve enviarplayerParams.us_privacy.
regs.gpp APS recomendado Cadeia de consentimento da Global Privacy Platform. O jogador deve enviarplayerParams.gpp_consent. Preferida em vez us_privacy de obter melhores taxas de preenchimento.
regs.gpp_sid APS recomendado IDs de seção GPP (por exemplo, [7] para cidadãos dos EUA). O jogador deve enviarplayerParams.gpp_sid.
Importante

O console padrão usa {{player_params.*}} campos obrigatórios como app.bundle app.storeurl e. Se seu jogador não enviar esses parâmetros, a solicitação de lance falharáBidRequestConfigurationError. Para campos que são iguais para todas as sessões (normalmenteapp.bundle, app.storeurlapp.name, e outros identificadores no nível do aplicativo), considere substituir o espaço reservado por um valor estático (por exemplo,). "bundle": "com.yourcompany.app" Não codifique campos que variem de acordo com o espectador, como,device.ua, device.ipdevice.ifa, cadeias de consentimento do GDPR e GPP, nem quaisquer registros ou campos de objetos do usuário. Esses devem vir de {{session.*}} ou{{player_params.*}}.

nota

O padrão do console não inclui video.mimes ou video.protocols no modelo. MediaTailor usa valores alternativos codificados (["video/mp4"]para mímicos, [1,2,3,4,5,6,7,8] para protocolos) quando eles não são fornecidos. Você pode adicioná-los ao seu modelo se quiser restringir os formatos suportados.

Interpolação de modelos (modelagem Mustache)

Seu modelo ORTB usa a sintaxe de modelagem Mustache para substituição dinâmica de valores. Os espaços reservados usam colchetes duplos. {{ }}

Variáveis de modelo disponíveis

Seu modelo ORTB pode usar as mesmas variáveis dinâmicas disponíveis nos modelos de URL do ADS. Isso inclui variáveis de sessão (por exemplo,{{session.client_ip}}){{session.user_agent}}, parâmetros do player ({{player_params.*}}), metadados do ativo ({{asset.*}}), contexto de disponibilidade ({{avail.*}}) e dados de sinal SCTE (). {{scte.*}}

Para obter a lista completa das variáveis disponíveis e suas descrições, consulteMediaTailor variáveis de anúncios dinâmicos para solicitações de ADS. Para saber como os parâmetros MediaTailor URL-decodes do jogador são avaliados antes de substituí-los no modelo, veja Comportamento de codificação e decodificação mais adiante nesta página.

As variáveis mais usadas nos modelos ORTB são:

  • {{session.user_agent}}: User-Agent cabeçalho do visualizador (use paradevice.ua).

  • {{session.client_ip}}: Endereço IP do visualizador (use paradevice.ip).

  • {{player_params.*}}: valores personalizados passados pelo jogador durante a inicialização da sessão.

  • {{asset.*}}: metadados de conteúdo da origem (por exemplo,asset.genre,asset.content_rating).

Atenção

Sempre coloque espaços reservados entre aspas, mesmo para campos numéricos como oudnt. devicetype Se um espaço reservado for resolvido para uma string vazia e não estiver entre aspas (por exemplo,"dnt": {{player_params.dnt}}), o resultado será um JSON inválido e toda a solicitação de oferta falhará com a. BidRequestConfigurationError Use "dnt": "{{player_params.dnt}}" em vez disso. APS aceita campos numéricos passados como strings. Esse comportamento ocorre intencionalmente porque as substituições de cadeias vazias de aspas entre aspas automáticas entrariam em conflito com o modo Raw-JSON usado em outras partes do interpolador. A restrição é documentada em vez de imposta. Veja também como MediaTailor lida com Comportamento de codificação e decodificação os valores dos parâmetros do player antes da interpolação.

Como passar os parâmetros do jogador

Há duas maneiras de passar parâmetros do jogador durante a inicialização da sessão.

Método 1: solicitação POST com corpo JSON (recomendado)

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

Esse método é preferido porque evita URL-encoding problemas com valores complexos, como cadeias de caracteres de agente de usuário.

Método 2: parâmetros de consulta de URL

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

Com esse método, os valores devem ser URL-encoded. MediaTailor URL-decodes eles antes da interpolação.

Comportamento de codificação e decodificação

MediaTailor executa um nível de decodificação de URL nos valores dos parâmetros do player antes de interpolá-los no modelo. Isso se aplica independentemente de como os parâmetros são passados (corpo do POST ou parâmetros de consulta de URL).

Exemplos de valores decodificados:

Valor enviado Valor após a decodificação (usado no modelo)
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)

Pontos-chave:

  • MediaTailor decodifica para apenas um nível. Double-encoded valores (por exemplo,%2520) serão decodificados para%20, não para um espaço.

  • Os valores corporais do POST também são decodificados. Se o corpo do POST contiver URL-encoded valores, eles serão decodificados antes da interpolação.

  • Valores de texto simples (sem codificação) passam inalterados.

  • Após a decodificação e a interpolação, todo o modelo é analisado como JSON. Caracteres especiais em valores interpolados (como aspas sem escape ou barras invertidas) podem interromper a análise do JSON.

dica

Se seu player enviar valores que já são texto simples (não URL-encoded), eles funcionarão como estão. Você só precisa estar atento à decodificação dos URL-encodes valores do seu jogador antes de enviá-los.

O que acontece quando uma variável está ausente

Se o player não enviar um parâmetro referenciado em seu modelo (por exemplo, {{player_params.app_name}} mas não app_name nos parâmetros do player), o espaço reservado será resolvido para uma string vazia. ""

Impacto: se a string vazia estiver em um campo obrigatório (comoapp.bundle), a solicitação de lance falhará comBidRequestConfigurationError. Se estiver em um campo opcional, o APS recebe um valor vazio que pode causar uma resposta sem oferta (HTTP 204).

O que MediaTailor define automaticamente

Os campos a seguir são sempre definidos MediaTailor usando valores da configuração do console e do contexto atual de disponibilidade. Se você incluí-los em seu modelo, seus valores serão substituídos:

Campo Fonte
id Auto-generated: {sessionId}_{availId} formato (por exemplo,abc123-def456_78901). Útil para correlacionar solicitações de lances com registros de sessão.
app.publisher.id Seu PublisherId a partir da configuração do console.
imp[0].video.minduration Seu MinimumUnfilledDuration a partir da configuração do console.
imp[0].video.maxduration Calculado: segundos reais não preenchidos para esse benefício.
imp[0].video.maxseq Calculado:floor(unfilled_duration / 6).
imp[0].video.poddur Calculado: segundos reais não preenchidos para esse benefício.
ext.integrationType Sempre definido como"EMT".

Próximas etapas