View a markdown version of this page

Exemplo 3: metadados contextuais - 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á.

Exemplo 3: metadados contextuais

Esta seção fornece JSONata expressões para padrões comuns ao trabalhar com respostas de inferência GetMetadata elementar. Use-os no Output bloco de sua AWS_SERVICE_REQUEST função.

nota

GetMetadataretorna uma items matriz em que cada item representa uma foto analisada com categorias de IAB taxonomia e avaliações de segurança GARM da marca. Quando sua janela de tempo de consulta abrange várias capturas, a resposta inclui vários itens. As expressões nas seções a seguir tratam disso agregando todas as capturas.

Para ver o esquema de GetMetadata resposta completo do Elemental Inference, consulte a referência da API Elemental Inference.

Crie a janela de tempo de consulta

Use a seguinte expressão para o Body campo da sua AWS_SERVICE_REQUEST função:

{%'{"outputName": "my-contextual-output", "timeSpecification": {"ptsBased": {"startPts": ' & $string(($exists(inference.previousBreakEndPts) and inference.previousBreakEndPts > inference.pts - 30 * inference.timescale ? inference.previousBreakEndPts : inference.pts - 30 * inference.timescale)) & ', "endPts": ' & $string(inference.pts + 1) & ', "timescale": ' & $string(inference.timescale) & '}}, "parameters": {"contextualMetadata": {}}}' %}

Essa expressão seleciona o lookback mais recente inference.previousBreakEndPts e um de 30 segundos, garantindo que a janela de consulta nunca exceda 30 segundos. Se não inference.previousBreakEndPts estiver disponível (por exemplo, o primeiro intervalo de anúncio), a expressão assumirá como padrão o lookback de 30 segundos.

nota

my-contextual-outputSubstitua pelo nome da saída de metadados contextuais do seu feed de inferência elementar.

Extract IAB IDs de categoria

{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), ',') : ''%}

Resultado: "641,645,324" — IDs exclusivos de taxonomia de IAB conteúdo, adequados para serem passados como um parâmetro de consulta (por exemplo,iab_cats=641,645,324).

Extract IAB caminhos de categoria

{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.($join(path, ' > '))), '|') : ''%}

Resultado: "Genres > Animation & Anime|Genres > Family/Children|Entertainment > Movies" — caminhos de taxonomia legíveis por humanos.

Extrato sinalizado GRÃO categories

{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].category), ',') : ''%}

Resultado: "ILLEGAL_DRUGS_TOBACCO_ALCOHOL" — categorias a serem excluídas da segmentação de anúncios ou para sinalizar questões de segurança da marca para seu servidor de decisões de anúncios.

Determine o mais alto GRÃO nível de risco

{%response.statusCode = 200 and $exists(response.body.items) ? ($names := ['NONE','LOW','MEDIUM','HIGH']; $flagged := response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].risk; $scores := $map($flagged, function($r){ $r = 'HIGH' ? 3 : $r = 'MEDIUM' ? 2 : $r = 'LOW' ? 1 : 0 }); $count($scores) > 0 ? $names[$max($scores)] : 'NONE') : ''%}

Resultado: "MEDIUM" — o pior nível de risco em todas as fotos e GARM categorias analisadas. Retorna uma string vazia se a solicitação falhar ou se o corpo da resposta estiver ausente, para que os dados ausentes não sejam relatados comoNONE.

Verifique a segurança da marca

{%response.statusCode = 200 and $exists(response.body.items) ? $string($not($exists(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true]))) : ''%}

Resultado: "false" se alguma GARM categoria for sinalizada, "true" se o conteúdo for seguro para a marca. Retorna uma string vazia se a solicitação falhar ou se o corpo da resposta estiver ausente.

Importante

O $exists(response.body.items) guarda é necessário. Uma resposta pode retornar o código de status 200 enquanto response.body é null — por exemplo, quando o corpo excede 20.000 caracteres ou não é um JSON válido. Sem o guarda, a expressão retorna "true" e relata que o conteúdo é seguro para a marca, mesmo que GARM as classificações nunca tenham sido recebidas.

Sinal contextual combinado

{%response.statusCode = 200 ? $string({'categories': $distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.($join(path, ' > '))), 'category_ids': $distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), 'garm_flagged': $distinct(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].category)}) : ''%}

Resultado: uma string JSON combinando todos os sinais contextuais em uma única carga estruturada.

Per-shot detalhe

{%response.statusCode = 200 ? $string(response.body.items.{'pts': pts, 'categories': metadata.contextualMetadata.iabTaxonomy.categories.($join(path, ' > ')), 'garm_flagged': metadata.contextualMetadata.garm.suitability.categories[flagged = true].category}) : ''%}

Resultado: matriz de objetos por foto preservando qual conteúdo em que o PTS acionou quais classificações. Use quando sua lógica de decisão de anúncios precisar de granularidade temporal.

Dicas e práticas recomendadas

Use as dicas a seguir ao criar expressões de saída para respostas de inferência elementar.

  • Sempre verifique response.statusCode antes de processar o corpo. Se a chamada falhar, response.body énull.

  • Use $distinct() para desduplicar categorias em várias capturas.

  • A inferência elementar retorna várias IAB categorias por foto e um conjunto de categorias de segurança da GARM marca. Para saber os limites atuais, consulte a documentação da Inferência Elemental.

  • Quando a janela de tempo abrange vários disparos, a resposta contém vários itens na items matriz.

  • O tamanho máximo da resposta é de 20.000 caracteres. Se você receber respostas truncadas, reduza a janela de tempo.

  • Use as chaves temp.* de saída ao fazer o encadeamento com outras funções em a SEQUENTIAL_EXECUTOR e player_params.* ao passar valores diretamente para a URL do servidor de decisão de anúncios.

  • Para ver a lista completa de JSONata funções e operadores compatíveis, consulteJSONata referência de expressão para funções.

Para ver o guia de configuração completo, incluindo pré-requisitos e políticas de recursos, consulte. Integração com inferência elementar Para obter a referência do tipo de função, consulteAWS solicitação de serviço.