View a markdown version of this page

Funktionen Lifecycle-Hooks - AWS Elemental MediaTailor

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Funktionen Lifecycle-Hooks

Ein Lifecycle-Hook definiert, wann Ihre Funktion während der Wiedergabe MediaTailor ausgeführt wird. Diese Seite ist eine vollständige Referenz für Eingabefelder, Ausgabe-Namespaces und die Regeln, die den Datenfluss an jedem Hook regeln.

-Übersicht

MediaTailor unterstützt vier Lifecycle-Hooks:

  • PRE_SESSION_INITIALIZATIONwird einmal ausgelöst, wenn ein Zuschauer eine neue Sitzung startet. Verwenden Sie es für einmalige Einrichtungsarbeiten wie das Abrufen von Zielgruppensegmenten. Zu diesem Zeitpunkt ist noch keine Werbeunterbrechung aufgetreten, sodass der Kontext für die Werbeunterbrechung nicht verfügbar ist.

  • PRE_ADS_REQUESTwird vor jeder ADS-Anfrage (Ad Decision Server) ausgelöst — einmal pro Werbeunterbrechung im Stream. Verwenden Sie ihn, um die ADS-Anfrage mit Targeting-Daten anzupassen, die ADS-URL zu ändern oder Header hinzuzufügen.

  • POST_ADS_RESPONSEwird ausgelöst, nachdem die ADS-Antwort MediaTailor empfangen und analysiert wurde, einschließlich der Auflösung der Video Ad Serving Template (VAST) -Wrapper-Weiterleitungen. Verwenden Sie diese Option, um die vom ADS zurückgegebenen Anzeigen zu filtern, neu anzuordnen, zu ändern oder zu ergänzen, bevor Sie die einzufügenden MediaTailor Anzeigen auswählen.

  • PRE_MANIFEST_INSERTIONwird am Ende der Personalisierung von Werbeunterbrechungen ausgelöst, nach der Anzeigenauswahl, der Transcodierungsprüfung und der Füllrichtlinie, unmittelbar bevor Anzeigen in das MediaTailor Manifest geschrieben werden. Verwenden Sie ihn, um das endgültige Anzeigenset zu überprüfen oder zu ändern. Sie können auch zusätzliche Werbeanzeigen in unterfüllte Werbeblöcke einfügen.

Die Hooks unterscheiden sich in Zeitpunkt und Umfang. PRE_SESSION_INITIALIZATIONwird einmal ausgeführt und richtet Daten ein, die für die gesamte Sitzung bestehen bleiben. PRE_ADS_REQUESTund POST_ADS_RESPONSE führen Sie jede ADS-Interaktion durch. PRE_ADS_REQUESTformt die ausgehende Anfrage und POST_ADS_RESPONSE reagiert auf die analysierte Antwort vor der Anzeigenauswahl. PRE_MANIFEST_INSERTIONwird ausgeführt, nachdem die Auswahl abgeschlossen ist, und die endgültige Anzeigenschaltung für alle neu personalisierten Werbeunterbrechungen wird in einem einzigen Aufruf angezeigt.

Wichtig

Die PRE_ADS_REQUESTPOST_ADS_RESPONSE, und PRE_MANIFEST_INSERTION Hooks teilen sich ein kombiniertes Ausführungsbudget von 2.000 ms für eine einzelne Anfrage. Dieses Budget kommt zu dem Timeout von 2.000 ms für jeden Hook hinzu. Der effektive Timeout eines Hooks ist der jeweils kleinere Wert aus seinem eigenen Timeout und dem verbleibenden Budget. Die Zeit, die für einen früheren Hook aufgewendet wurde, reduziert die Zeit, die für spätere Hooks in derselben Anfrage zur Verfügung steht. Wenn das verbleibende Budget aufgebraucht ist, bevor ein Hook gestartet wird, wird dieser Hook MediaTailor übersprungen und die Bearbeitung der Anfrage ohne Hook fortgesetzt. PRE_SESSION_INITIALIZATIONwird während der Sitzungsinitialisierung ausgeführt und ist nicht Teil des Gesamtbudgets. Weitere Informationen finden Sie unter Einschränkungen.

Anmerkung

In dieser Dokumentation wird eine Werbeunterbrechung auch als Avail bezeichnet. Eingabefeldnamen (wie avail.availId undavails.avails) und CloudWatch Metriken verwenden das avail Formular.

Referenz zum Eingabefeld

In der folgenden Tabelle sind die Eingabefelder aufgeführt, die an jedem Lifecycle-Hook verfügbar sind. In der Spalte Feld gibt die parent[].child Notation ein Feld jedes Elements im parent Array an.

Anmerkung

Die PRE_MANIFEST_INSERTION Hooks POST_ADS_RESPONSE und machen Sitzungsfelder in CamelCase verfügbar (zum Beispielsession.clientIp), während die ersten beiden Hooks snake_case verwenden (zum Beispiel). session.client_ip Player-Parameter sind an den ersten beiden Hooks über den player_params Namespace und an den anderen beiden als Objekt verfügbar. session.playerParams

Feld Typ PRE_SESSION_INITIALIZATION PRE_ADS_REQUEST POST_ADS_RESPONSE PRE_MANIFEST_INSERTION
session.idLong✓✓✓✓
session.uuidZeichenfolge✓✓✓✓
session.client_ipZeichenfolge✓✓✗✗
session.clientIpZeichenfolge✗✗✓✓
session.user_agentZeichenfolge✓✓✗✗
session.userAgentZeichenfolge✗✗✓✓
session.referer*Zeichenfolge✓✓✗✗
session.avail_duration_secsLong✗✓✗✗
session.avail_duration_msLong✗✓✗✗
session.streamingProtocolZeichenfolge✗✗✓✓
session.playerParamsObjekt✗✗✓✓
player_params.*Zeichenfolge✓✓✗✗
event.idZeichenfolge✓✓✓✓
event.hookZeichenfolge✓✓✓✓
event.timestampZeichenfolge✓✓✓✓
avail.indexInt✗✓✗✗
avail.randomLong✗✓✗✗
avail.source_content_time_epoch_msLong✗✓✗✗
avail.availId†Zeichenfolge✗✗✓✗
avail.durationSeconds†Zahl✗✗✓✗
avail.startTime†Zeichenfolge✗✗✓✗
scte.event_idInt✗✓✗✗
scte.avail_numInt✗✓✗✗
scte.segmentation_event_idInt✗✓✗✗
scte.segmentation_type_idInt✗✓✗✗
scte.segmentation_upidZeichenfolge✗✓✗✗
scte.segmentation_upid.assetIdZeichenfolge✗✓✗✗
scte.segmentation_upid.cueData.keyZeichenfolge✗✓✗✗
scte.segmentation_upid.cueData.valueZeichenfolge✗✓✗✗
scte.unique_program_idInt✗✓✗✗
scte.archive_allowed_flagBoolesch✗✓✗✗
scte.delivery_not_restricted_flagBoolesch✗✓✗✗
scte.device_restrictionsInt✗✓✗✗
scte.no_regional_blackout_flagBoolesch✗✓✗✗
scte.segment_numInt✗✓✗✗
scte.segments_expectedInt✗✓✗✗
scte.sub_segment_numInt✗✓✗✗
scte.sub_segments_expectedInt✗✓✗✗
scte.avails_expectedLong✗✓✗✗
asset.*Zeichenfolge✗✓✗✗
inference.enrichedBoolesch✗✓✗✗
inference.feedIdZeichenfolge✗✓✗✗
inference.dataEndpointZeichenfolge✗✓✗✗
inference.ptsLong✗✓✗✗
inference.timescaleLong✗✓✗✗
inference.regionZeichenfolge✗✓✗✗
inference.previousBreakEndPtsLong✗✓✗✗
inference.parseErrorBoolesch✗✓✗✗
adsRequest.urlZeichenfolge✗✓✓✗
adsRequest.methodZeichenfolge✗✓✓✗
adsRequest.headers.<key>Zeichenfolge✗✓✓✗
adsRequest.bodyZeichenfolge✗✓✗✗
adsResponse.responseTypeZeichenfolge✗✗✓✗
adsResponse.adsArray✗✗✓✗
adsResponse.ads[].adId‡Zeichenfolge✗✗✓✗
adsResponse.ads[].durationSecondsZahl✗✗✓✗
adsResponse.ads[].adSystemZeichenfolge✗✗✓✗
adsResponse.ads[].adTitleZeichenfolge✗✗✓✗
adsResponse.ads[].creativeIdZeichenfolge✗✗✓✗
adsResponse.ads[].sequenceInt✗✗✓✗
adsResponse.ads[].mediaFilesArray✗✗✓✗
adsResponse.ads[].mediaFiles[].urlZeichenfolge✗✗✓✗
adsResponse.ads[].mediaFiles[].mimeTypeZeichenfolge✗✗✓✗
adsResponse.ads[].mediaFiles[].widthInt✗✗✓✗
adsResponse.ads[].mediaFiles[].heightInt✗✗✓✗
adsResponse.ads[].mediaFiles[].bitrateInt✗✗✓✗
adsResponse.ads[].trackingEvents.<eventType>Zeichenfolgen-Array✗✗✓✗
avails.availsArray✗✗✗✓
avails.avails[].availIdZeichenfolge✗✗✗✓
avails.avails[].durationSecondsZahl✗✗✗✓
avails.avails[].startTimeZahl✗✗✗✓
avails.avails[].mediaProtocolZeichenfolge (|) HLS DASH✗✗✗✓
avails.avails[].streamingModeZeichenfolge (LIVE|VOD)✗✗✗✓
avails.avails[].fillDurationSecondsZahl✗✗✗✓
avails.avails[].fillRateZahl (0—1)✗✗✗✓
avails.avails[].mutableBoolesch✗✗✗✓
avails.avails[].adsArray✗✗✗✓
avails.avails[].ads[].adId§Zeichenfolge✗✗✗✓
avails.avails[].ads[].vastAdIdZeichenfolge✗✗✗✓
avails.avails[].ads[].creativeIdZeichenfolge✗✗✗✓
avails.avails[].ads[].insertionUuidZeichenfolge✗✗✗✓
avails.avails[].ads[].sequenceInAvailInt✗✗✗✓
avails.avails[].ads[].durationSecondsZahl✗✗✗✓
avails.avails[].ads[].adSystemZeichenfolge✗✗✗✓
avails.avails[].ads[].adTitleZeichenfolge✗✗✗✓
avails.avails[].ads[].mediaUrlZeichenfolge✗✗✗✓
avails.avails[].ads[].trackingEvents.<eventType>Zeichenfolgen-Array✗✗✗✓
avails.avails[].ads[].mediaFilesArray✗✗✗✓
avails.avails[].skippedAdsArray✗✗✗✓
avails.avails[].skippedAds[].adIdZeichenfolge✗✗✗✓
avails.avails[].skippedAds[].vastAdIdZeichenfolge✗✗✗✓
avails.avails[].skippedAds[].durationSecondsZahl✗✗✗✓
avails.avails[].skippedAds[].creativeUrlZeichenfolge✗✗✗✓
avails.avails[].skippedAds[].reasonZeichenfolge✗✗✗✓

* session.referer ist nur vorhanden, wenn ein Referer-Header in der Anfrage zur Sitzungsinitialisierung enthalten ist. Wird $exists(session.referer) zur Überprüfung vor dem Zugriff verwendet.

† Der avail Namespace ist nur vorhanden, wenn sich die ADS-Antwort auf eine einzelne Werbeunterbrechung bezieht. Er ist nicht für Multi-Break-Antworten (VMAP) oder Prefetch-Antworten vorhanden. Verwenden Sie diese Option, um dies vor $exists(avail) dem Zugriff zu überprüfen.

‡ AtPOST_ADS_RESPONSE, adId ist das id Attribut des <Ad> VAST-Elements.

§ AtPRE_MANIFEST_INSERTION, adId ist ein interner Platzierungsbezeichner. Er ist für eine Anzeige innerhalb ihres Anzeigenblocks stabil, aber es handelt sich nicht um die VAST-Anzeigen-ID und ist nicht über Anzeigenumbrüche oder Hooks hinweg vergleichbar. Für Identitätsprüfungen, die sich über Werbeblöcke oder Hooks erstrecken, verwende vastAdId (das id Attribut des <Ad> VAST-Elements) odercreativeId.

Auf DASH-VOD-Streams adTitle und adSystem sind null an diesem Haken. Benutze vastAdId oder creativeId in Prädikaten dort.