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á.
Funções: ganchos de ciclo de vida
Um gancho de ciclo de vida define quando MediaTailor executa sua função durante a reprodução. Esta página é uma referência completa para campos de entrada, namespaces de saída e as regras que governam o fluxo de dados em cada gancho.
Visão geral do
MediaTailor suporta quatro ganchos de ciclo de vida:
-
PRE_SESSION_INITIALIZATIONé acionado uma vez quando um espectador inicia uma nova sessão. Use-o para trabalhos de configuração únicos, como buscar segmentos de público. Neste momento, nenhum intervalo de anúncio ocorreu, então o contexto do intervalo de anúncio não está disponível. -
PRE_ADS_REQUESTé acionado antes de cada solicitação do servidor de decisão de anúncios (ADS) — uma vez por intervalo de anúncio no stream. Use-o para personalizar a solicitação do ADS com dados de segmentação, modificar o URL do ADS ou adicionar cabeçalhos. -
POST_ADS_RESPONSEé acionado após MediaTailor receber e analisar a resposta do ADS, incluindo a resolução dos redirecionamentos do wrapper do Video Ad Serving Template (VAST). Use-o para filtrar, reordenar, modificar ou complementar os anúncios retornados pelo ADS antes de MediaTailor selecionar os anúncios a serem inseridos. -
PRE_MANIFEST_INSERTIONé acionado no final da personalização do intervalo publicitário, após a seleção do anúncio, as verificações de transcodificação e a política de preenchimento, imediatamente antes de MediaTailor gravar os anúncios no manifesto. Use-o para inspecionar ou modificar o conjunto final de anúncios, incluindo a injeção de anúncios adicionais em intervalos de anúncios mal preenchidos.
Os ganchos diferem em tempo e escopo. PRE_SESSION_INITIALIZATIONé executado uma vez e configura dados que persistem durante toda a sessão. PRE_ADS_REQUESTe POST_ADS_RESPONSE analise cada interação do ADS. PRE_ADS_REQUESTmolda a solicitação de saída e POST_ADS_RESPONSE atua na resposta analisada antes da seleção do anúncio. PRE_MANIFEST_INSERTIONé executado após a conclusão da seleção e vê o conjunto final de anúncios para todos os intervalos de anúncios recém-personalizados em uma única invocação.
Importante
Os PRE_MANIFEST_INSERTION ganchos PRE_ADS_REQUESTPOST_ADS_RESPONSE,, e compartilham um orçamento de execução combinado de 2.000 ms para uma única solicitação. Esse orçamento é adicional ao tempo limite de 2.000 ms de cada gancho. O tempo limite efetivo de um gancho é o menor de seu próprio tempo limite e do orçamento restante. O tempo gasto por um gancho anterior reduz o tempo disponível para ganchos posteriores na mesma solicitação. Se o orçamento restante estiver esgotado antes do início do gancho, MediaTailor ignore esse gancho e continue processando a solicitação sem ele. PRE_SESSION_INITIALIZATIONé executado durante a inicialização da sessão e não faz parte do orçamento combinado. Para obter mais informações, consulte Limites.
nota
Nesta documentação, um intervalo publicitário também é chamado de “avail”. Os nomes dos campos de entrada (como avail.availId eavails.avails) e CloudWatch as métricas usam o avail formulário.
Referência do campo de entrada
A tabela a seguir lista os campos de entrada disponíveis em cada gancho do ciclo de vida. Na coluna Campo, a parent[].child notação indica um campo de cada elemento na parent matriz.
nota
Os PRE_MANIFEST_INSERTION ganchos POST_ADS_RESPONSE e expõem campos de sessão em CamelCase (por exemplo,session.clientIp), enquanto os dois primeiros ganchos usam snake_case (por exemplo,). session.client_ip Os parâmetros do player estão disponíveis por meio do player_params namespace nos dois primeiros ganchos e como session.playerParams objeto nos outros dois.
| Campo | Tipo | INICIALIZAÇÃO_PRÉ-SESSÃO | PRÉ-SOLICITAÇÃO_DE_ANÚNCIOS | POST_ADS_RESPONSE | INSERÇÃO PRÉ-MANIFESTO |
|---|---|---|---|---|---|
session.id | Longo | ✓ | ✓ | ✓ | ✓ |
session.uuid | String | ✓ | ✓ | ✓ | ✓ |
session.client_ip | String | ✓ | ✓ | ✗ | ✗ |
session.clientIp | String | ✗ | ✗ | ✓ | ✓ |
session.user_agent | String | ✓ | ✓ | ✗ | ✗ |
session.userAgent | String | ✗ | ✗ | ✓ | ✓ |
session.referer* | String | ✓ | ✓ | ✗ | ✗ |
session.avail_duration_secs | Longo | ✗ | ✓ | ✗ | ✗ |
session.avail_duration_ms | Longo | ✗ | ✓ | ✗ | ✗ |
session.streamingProtocol | String | ✗ | ✗ | ✓ | ✓ |
session.playerParams | Objeto | ✗ | ✗ | ✓ | ✓ |
player_params.* | String | ✓ | ✓ | ✗ | ✗ |
event.id | String | ✓ | ✓ | ✓ | ✓ |
event.hook | String | ✓ | ✓ | ✓ | ✓ |
event.timestamp | String | ✓ | ✓ | ✓ | ✓ |
avail.index | Int | ✗ | ✓ | ✗ | ✗ |
avail.random | Longo | ✗ | ✓ | ✗ | ✗ |
avail.source_content_time_epoch_ms | Longo | ✗ | ✓ | ✗ | ✗ |
avail.availId† | String | ✗ | ✗ | ✓ | ✗ |
avail.durationSeconds† | Número | ✗ | ✗ | ✓ | ✗ |
avail.startTime† | String | ✗ | ✗ | ✓ | ✗ |
scte.event_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.avail_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_event_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_type_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid | String | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.assetId | String | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.cueData.key | String | ✗ | ✓ | ✗ | ✗ |
scte.segmentation_upid.cueData.value | String | ✗ | ✓ | ✗ | ✗ |
scte.unique_program_id | Int | ✗ | ✓ | ✗ | ✗ |
scte.archive_allowed_flag | Booleano | ✗ | ✓ | ✗ | ✗ |
scte.delivery_not_restricted_flag | Booleano | ✗ | ✓ | ✗ | ✗ |
scte.device_restrictions | Int | ✗ | ✓ | ✗ | ✗ |
scte.no_regional_blackout_flag | Booleano | ✗ | ✓ | ✗ | ✗ |
scte.segment_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.segments_expected | Int | ✗ | ✓ | ✗ | ✗ |
scte.sub_segment_num | Int | ✗ | ✓ | ✗ | ✗ |
scte.sub_segments_expected | Int | ✗ | ✓ | ✗ | ✗ |
scte.avails_expected | Longo | ✗ | ✓ | ✗ | ✗ |
asset.* | String | ✗ | ✓ | ✗ | ✗ |
inference.enriched | Booliano | ✗ | ✓ | ✗ | ✗ |
inference.feedId | String | ✗ | ✓ | ✗ | ✗ |
inference.dataEndpoint | String | ✗ | ✓ | ✗ | ✗ |
inference.pts | Longo | ✗ | ✓ | ✗ | ✗ |
inference.timescale | Longo | ✗ | ✓ | ✗ | ✗ |
inference.region | String | ✗ | ✓ | ✗ | ✗ |
inference.previousBreakEndPts | Longo | ✗ | ✓ | ✗ | ✗ |
inference.parseError | Booliano | ✗ | ✓ | ✗ | ✗ |
adsRequest.url | String | ✗ | ✓ | ✓ | ✗ |
adsRequest.method | String | ✗ | ✓ | ✓ | ✗ |
adsRequest.headers.<key> | String | ✗ | ✓ | ✓ | ✗ |
adsRequest.body | String | ✗ | ✓ | ✗ | ✗ |
adsResponse.responseType | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads | Array | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adId‡ | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].durationSeconds | Número | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adSystem | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].adTitle | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].creativeId | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].sequence | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles | Array | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].url | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].mimeType | String | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].width | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].height | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].mediaFiles[].bitrate | Int | ✗ | ✗ | ✓ | ✗ |
adsResponse.ads[].trackingEvents.<eventType> | Matriz de strings | ✗ | ✗ | ✓ | ✗ |
avails.avails | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].availId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].durationSeconds | Número | ✗ | ✗ | ✗ | ✓ |
avails.avails[].startTime | Número | ✗ | ✗ | ✗ | ✓ |
avails.avails[].mediaProtocol | Cadeia de caracteres (HLS|DASH) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].streamingMode | Cadeia de caracteres (LIVE|VOD) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].fillDurationSeconds | Número | ✗ | ✗ | ✗ | ✓ |
avails.avails[].fillRate | Número (0—1) | ✗ | ✗ | ✗ | ✓ |
avails.avails[].mutable | Booleano | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adId§ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].vastAdId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].creativeId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].insertionUuid | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].sequenceInAvail | Int | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].durationSeconds | Número | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adSystem¶ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].adTitle¶ | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].mediaUrl | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].trackingEvents.<eventType> | Matriz de strings | ✗ | ✗ | ✗ | ✓ |
avails.avails[].ads[].mediaFiles | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds | Array | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].adId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].vastAdId | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].durationSeconds | Número | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].creativeUrl | String | ✗ | ✗ | ✗ | ✓ |
avails.avails[].skippedAds[].reason | String | ✗ | ✗ | ✗ | ✓ |
* só session.referer está presente quando um cabeçalho Referer é incluído na solicitação de inicialização da sessão. Use $exists(session.referer) para verificar antes de acessar.
† O avail namespace está presente somente quando a resposta do ADS se aplica a um único intervalo publicitário. Ele não está presente para respostas com várias interrupções (VMAP) ou respostas pré-buscadas. Use $exists(avail) para verificar antes de acessar.
‡ AtPOST_ADS_RESPONSE, adId é o id atributo do <Ad> elemento VAST.
§ EmPRE_MANIFEST_INSERTION, adId é um identificador de posicionamento interno. É estável para um anúncio dentro de seu intervalo publicitário, mas não é o ID do anúncio VAST e não é comparável entre intervalos publicitários ou ganchos. Para verificações de identidade que abrangem intervalos de anúncios ou ganchos, use vastAdId (o id atributo do <Ad> elemento VAST) oucreativeId.
¶ Em transmissões DASH VOD, adTitle e adSystem estamos aquinull. Use vastAdId ou creativeId insira predicados lá.