View a markdown version of this page

Fonctions, cycle de vie, crochets - AWS Elemental MediaTailor

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fonctions, cycle de vie, crochets

Un hook de cycle de vie définit quand MediaTailor votre fonction est exécutée pendant la lecture. Cette page est une référence complète pour les champs de saisie, les espaces de noms de sortie et les règles qui régissent le flux de données à chaque hook.

Vue d’ensemble

MediaTailor prend en charge quatre crochets de cycle de vie :

  • PRE_SESSION_INITIALIZATIONse déclenche une fois lorsqu'un spectateur démarre une nouvelle session. Utilisez-le pour des tâches de configuration ponctuelles, telles que la récupération de segments d'audience. À ce stade, aucune interruption publicitaire ne s'est produite, le contexte de la pause publicitaire n'est donc pas disponible.

  • PRE_ADS_REQUESTse déclenche avant chaque requête du serveur de décision publicitaire (ADS), soit une fois par pause publicitaire dans le flux. Utilisez-le pour personnaliser la demande ADS à l'aide de données de ciblage, modifier l'URL ADS ou ajouter des en-têtes.

  • POST_ADS_RESPONSEse déclenche après MediaTailor réception et analyse de la réponse ADS, y compris la résolution des redirections de l'enveloppe VAST (Video Ad Serving Template). Utilisez-le pour filtrer, réorganiser, modifier ou compléter les annonces renvoyées par l'ADS, avant de MediaTailor sélectionner les annonces à insérer.

  • PRE_MANIFEST_INSERTIONse déclenche à la fin de la personnalisation des pauses publicitaires, après la sélection des annonces, les contrôles de transcodage et la politique de remplissage, juste avant l' MediaTailor écriture des publicités dans le manifeste. Utilisez-le pour inspecter ou modifier le jeu d'annonces final, notamment en injectant des publicités supplémentaires dans les pauses publicitaires insuffisamment remplies.

Les crochets diffèrent en termes de synchronisation et de portée. PRE_SESSION_INITIALIZATIONs'exécute une seule fois et configure les données qui persistent pendant toute la session. PRE_ADS_REQUESTet POST_ADS_RESPONSE parcourez chaque interaction ADS. PRE_ADS_REQUESTfaçonne la demande sortante et POST_ADS_RESPONSE agit en fonction de la réponse analysée avant la sélection de l'annonce. PRE_MANIFEST_INSERTIONs'exécute une fois la sélection terminée et affiche l'annonce finale pour toutes les nouvelles pauses publicitaires personnalisées en une seule invocation.

Important

Les PRE_MANIFEST_INSERTION hooks PRE_ADS_REQUESTPOST_ADS_RESPONSE,, et partagent un budget d'exécution combiné de 2 000 ms pour une seule requête. Ce budget s'ajoute au délai d'attente de 2 000 ms de chaque hook. Le délai d'attente effectif d'un hook est le plus petit entre son propre délai d'attente et le budget restant. Le temps passé par un hook antérieur réduit le temps disponible pour les hooks ultérieurs dans la même requête. Si le budget restant est épuisé avant le démarrage d'un hook, MediaTailor ignore ce hook et continue à traiter la demande sans ce hook. PRE_SESSION_INITIALIZATIONs'exécute lors de l'initialisation de la session et ne fait pas partie du budget combiné. Pour de plus amples informations, veuillez consulter Restrictions.

Note

Dans cette documentation, une pause publicitaire est également appelée avantage. Les noms des champs de saisie (tels que avail.availId etavails.avails) et CloudWatch les métriques utilisent le avail formulaire.

Référence du champ de saisie

Le tableau suivant répertorie les champs de saisie disponibles pour chaque hook de cycle de vie. Dans la colonne Champ, la parent[].child notation indique un champ pour chaque élément du parent tableau.

Note

Les PRE_MANIFEST_INSERTION hooks POST_ADS_RESPONSE et exposent les champs de session dans CamelCase (par exemple,session.clientIp), tandis que les deux premiers hooks utilisent snake_case (par exemple,). session.client_ip Les paramètres du joueur sont disponibles via l'player_paramsespace de noms sur les deux premiers hooks et en tant qu'session.playerParamsobjet sur les deux autres.

Champ Type INITIALISATION_PRÉSESSION DEMANDE_PRE_ANNONCE POST_ADS_RESPONSE INSÉRATION_PRÉALABLE AU MANIFESTE
session.idLong✓✓✓✓
session.uuidChaîne✓✓✓✓
session.client_ipChaîne✓✓✗✗
session.clientIpChaîne✗✗✓✓
session.user_agentChaîne✓✓✗✗
session.userAgentChaîne✗✗✓✓
session.referer*Chaîne✓✓✗✗
session.avail_duration_secsLong✗✓✗✗
session.avail_duration_msLong✗✓✗✗
session.streamingProtocolChaîne✗✗✓✓
session.playerParamsObjet✗✗✓✓
player_params.*Chaîne✓✓✗✗
event.idChaîne✓✓✓✓
event.hookChaîne✓✓✓✓
event.timestampChaîne✓✓✓✓
avail.indexInt✗✓✗✗
avail.randomLong✗✓✗✗
avail.source_content_time_epoch_msLong✗✓✗✗
avail.availId†Chaîne✗✗✓✗
avail.durationSeconds†Number✗✗✓✗
avail.startTime†Chaîne✗✗✓✗
scte.event_idInt✗✓✗✗
scte.avail_numInt✗✓✗✗
scte.segmentation_event_idInt✗✓✗✗
scte.segmentation_type_idInt✗✓✗✗
scte.segmentation_upidChaîne✗✓✗✗
scte.segmentation_upid.assetIdChaîne✗✓✗✗
scte.segmentation_upid.cueData.keyChaîne✗✓✗✗
scte.segmentation_upid.cueData.valueChaîne✗✓✗✗
scte.unique_program_idInt✗✓✗✗
scte.archive_allowed_flagBooléen✗✓✗✗
scte.delivery_not_restricted_flagBooléen✗✓✗✗
scte.device_restrictionsInt✗✓✗✗
scte.no_regional_blackout_flagBooléen✗✓✗✗
scte.segment_numInt✗✓✗✗
scte.segments_expectedInt✗✓✗✗
scte.sub_segment_numInt✗✓✗✗
scte.sub_segments_expectedInt✗✓✗✗
scte.avails_expectedLong✗✓✗✗
asset.*Chaîne✗✓✗✗
inference.enrichedBooléen✗✓✗✗
inference.feedIdChaîne✗✓✗✗
inference.dataEndpointChaîne✗✓✗✗
inference.ptsLong✗✓✗✗
inference.timescaleLong✗✓✗✗
inference.regionChaîne✗✓✗✗
inference.previousBreakEndPtsLong✗✓✗✗
inference.parseErrorBooléen✗✓✗✗
adsRequest.urlChaîne✗✓✓✗
adsRequest.methodChaîne✗✓✓✗
adsRequest.headers.<key>Chaîne✗✓✓✗
adsRequest.bodyChaîne✗✓✗✗
adsResponse.responseTypeChaîne✗✗✓✗
adsResponse.adsTableau✗✗✓✗
adsResponse.ads[].adId‡Chaîne✗✗✓✗
adsResponse.ads[].durationSecondsNumber✗✗✓✗
adsResponse.ads[].adSystemChaîne✗✗✓✗
adsResponse.ads[].adTitleChaîne✗✗✓✗
adsResponse.ads[].creativeIdChaîne✗✗✓✗
adsResponse.ads[].sequenceInt✗✗✓✗
adsResponse.ads[].mediaFilesTableau✗✗✓✗
adsResponse.ads[].mediaFiles[].urlChaîne✗✗✓✗
adsResponse.ads[].mediaFiles[].mimeTypeChaîne✗✗✓✗
adsResponse.ads[].mediaFiles[].widthInt✗✗✓✗
adsResponse.ads[].mediaFiles[].heightInt✗✗✓✗
adsResponse.ads[].mediaFiles[].bitrateInt✗✗✓✗
adsResponse.ads[].trackingEvents.<eventType>Tableau de chaînes✗✗✓✗
avails.availsTableau✗✗✗✓
avails.avails[].availIdChaîne✗✗✗✓
avails.avails[].durationSecondsNombre✗✗✗✓
avails.avails[].startTimeNombre✗✗✗✓
avails.avails[].mediaProtocolChaîne (HLS|DASH)✗✗✗✓
avails.avails[].streamingModeChaîne (LIVE|VOD)✗✗✗✓
avails.avails[].fillDurationSecondsNombre✗✗✗✓
avails.avails[].fillRateNuméro (0—1)✗✗✗✓
avails.avails[].mutableBooléen✗✗✗✓
avails.avails[].adsTableau✗✗✗✓
avails.avails[].ads[].adId§Chaîne✗✗✗✓
avails.avails[].ads[].vastAdIdChaîne✗✗✗✓
avails.avails[].ads[].creativeIdChaîne✗✗✗✓
avails.avails[].ads[].insertionUuidChaîne✗✗✗✓
avails.avails[].ads[].sequenceInAvailInt✗✗✗✓
avails.avails[].ads[].durationSecondsNumber✗✗✗✓
avails.avails[].ads[].adSystemChaîne✗✗✗✓
avails.avails[].ads[].adTitleChaîne✗✗✗✓
avails.avails[].ads[].mediaUrlChaîne✗✗✗✓
avails.avails[].ads[].trackingEvents.<eventType>Tableau de chaînes✗✗✗✓
avails.avails[].ads[].mediaFilesTableau✗✗✗✓
avails.avails[].skippedAdsTableau✗✗✗✓
avails.avails[].skippedAds[].adIdChaîne✗✗✗✓
avails.avails[].skippedAds[].vastAdIdChaîne✗✗✗✓
avails.avails[].skippedAds[].durationSecondsNumber✗✗✗✓
avails.avails[].skippedAds[].creativeUrlChaîne✗✗✗✓
avails.avails[].skippedAds[].reasonChaîne✗✗✗✓

* n'session.refererest présent que lorsqu'un en-tête Referer est inclus dans la demande d'initialisation de session. $exists(session.referer)À utiliser pour vérifier avant d'accéder.

† L'availespace de noms n'est présent que lorsque la réponse ADS s'applique à une seule pause publicitaire. Il n'est pas présent pour les réponses à sauts multiples (VMAP) ou les réponses prélues. $exists(avail)À utiliser pour vérifier avant d'accéder.

‡ AtPOST_ADS_RESPONSE, adId est l'idattribut de l'<Ad>élément VAST.

§ AtPRE_MANIFEST_INSERTION, adId est un identifiant de placement interne. Il est stable pour une annonce pendant sa pause publicitaire, mais il ne s'agit pas de l'identifiant d'annonce VAST et n'est pas comparable entre les pauses publicitaires ou les crochets. Pour les contrôles d'identité qui couvrent les pauses publicitaires ou les hooks, utilisez vastAdId (l'idattribut de l'<Ad>élément VAST) oucreativeId.

Sur DASH, vous diffusez des vidéos à la demande, adTitle et adSystem vous êtes null à ce point. Utilisez vastAdId ou creativeId dans les prédicats à cet endroit.