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:
-
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. -
Análise JSON. O modelo interpolado é analisado como JSON.
-
Extração e validação de campo. MediaTailorextrai campos obrigatórios e lança um
BidRequestConfigurationErrorse algum estiver ausente ou vazio. -
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.iddo seu ID de editor configurado, da duração calculada nãoimp.video.maxdurationpreenchida). -
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 {{ }}
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
-
Para obter a referência completa de campo a campo, consulte. Referência de campo ORTB
-
Para modelos de copiar e colar, consulte. Exemplos de modelos do