View a markdown version of this page

J Sonate Ausdrucksreferenz für Funktionen - 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.

J Sonate Ausdrucksreferenz für Funktionen

Diese Seite ist eine vollständige Referenz für die Ausdruckssyntax, die Operatoren und Funktionen, die in Functions verfügbar sind. Verwenden Sie sie, wenn Sie Ausdrücke für Ausgabeblöcke, URL-Felder, Header-Werte, Textvorlagen und Ausführungsbedingungen schreiben.

Trennzeichen für Ausdrücke

Jeder Wert, den Sie in einer Funktion definieren, ist entweder eine Konstante oder ein Ausdruck — keine Mischung aus beiden. MediaTailor unterscheidet anhand von Trennzeichen zwischen den beiden.

Syntax Typ Bewertung
https://ads.example.com/vast Konstante Wird unverändert ohne Auswertung zurückgegeben.
{%session.client_ip%} Expression Wird zur Laufzeit ausgewertet. Das Ergebnis ersetzt den gesamten Wert.
GET Konstante Unverändert zurückgegeben.
{%'https://ads.example.com/vast?ip=' & session.client_ip%} Expression Wird zur Laufzeit ausgewertet.
Wichtig

Ein Wert ist entweder vollständig eine Konstante oder vollständig ein Ausdruck. Sie können die beiden nicht in einem einzigen Wert mischen. Beispielsweise ist hello {%'world'%} nicht gültig. Um statischen Text mit dynamischen Werten zu kombinieren, verwenden Sie die Zeichenkettenverkettung innerhalb des Ausdrucks:. {%'hello ' & 'world'%}

Grundlagen der Sprache

Punktnotation für die Pfadnavigation

Verwenden Sie die Punktnotation, um die Eingabedaten zu durchsuchen. Jeder Punkt steigt in der Objekthierarchie um eine Ebene nach unten.

session.client_ip → the viewer's IP address response.body.envelope → a field inside a parsed JSON response player_params.campaign_id → a player parameter

Fehlende Felder werden zurückgegeben, null ohne dass ein Fehler ausgelöst wird:

temp.nonExistent → null temp.nonExistent.deeply.nested → null

Verkettung von Zeichenketten mit &

Der & Operator verknüpft zwei Zeichenkettenwerte. Non-string Werte werden automatisch in Zeichenketten umgewandelt.

'https://ads.example.com/vast?ip=' & session.client_ip → "https://ads.example.com/vast?ip=192.0.2.1" 'duration=' & 30 → "duration=30"

Bedingte (ternäre) Ausdrücke

Verwenden Sie den ternären Operator, um einen von zwei Werten zurückzugeben, die auf einer Bedingung basieren.

condition ? value_if_true : value_if_false

Beispiele:

$exists(player_params.env) ? player_params.env : 'prod' response.statusCode = 200 ? response.body.id : 'unknown' $random() > 0.5 ? 'groupA' : 'groupB'

Sie können ternäre Ausdrücke für mehrfache Verzweigungen verschachteln:

$contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop'

Variablenbindung mit: =

Verwenden Sie den := Operator in Klammern, um Zwischenwerte innerhalb eines Ausdrucks zuzuweisen. Gebundene Variablen sind auf die umschließenden Klammern beschränkt und bleiben außerhalb des Ausdrucks nicht bestehen.

( $base := 'https://ads.example.com'; $base & '/vast?ip=' & session.client_ip )

Semikolons trennen Anweisungen in Klammern. Die letzte Anweisung ist der Rückgabewert des Ausdrucks.

( $code := response.statusCode; $code != null and $code >= 200 and $code < 300 ? response.body.value : 'fallback' )

Operatoren

Arithmetisch

Operator Beschreibung Beispiel Ergebnis
+Addition5 + 38
-Subtraktion10 - 46
*Multiplikation6 * 742
/Division15 / 43.75
%Modulo17 % 52
Wichtig

Eingabewerte aus Spielerparametern und Sitzungsdaten kommen als Zeichenketten an. Wird verwendet$number(), um sie vor numerischen Vergleichen oder Arithmetik zu konvertieren. Der Vergleich einer Zeichenfolge mit einer Zahl führt zu unerwarteten Ergebnissen.

Vergleich

Operator Beschreibung Beispiel Ergebnis
=gleichresponse.statusCode = 200true
!=Nicht gleichplayer_params.region != 'us-east-1'truewenn nicht us-east-1
<Kleiner alsavail.index < 3truewenn unter 3
>Größer als$number(player_params.age) > 18truewenn über 18
<=Kleiner als oder gleich$count(items) <= 10truewenn 10 oder weniger
>=Größer als oder gleichresponse.statusCode >= 400truewenn Fehlerstatus

Boolesch

Operator Beschreibung Beispiel
andLogisches UNDresponse.statusCode = 200 and $exists(response.body.id)
orLogisches ODERplayer_params.region = 'us-east-1' or player_params.region = 'us-west-2'

Verwenden Sie Klammern für die Rangfolge:

score > 0.5 and (tier = 'premium' or tier = 'gold')
Anmerkung

Wird zur logischen Negation $not() verwendet. Es gibt keinen not Schlüsselwort-Operator.

Mitgliedschaft (in)

Der in Operator testet, ob ein Wert in einem Array existiert.

'premium' in segments → true if segments contains 'premium' player_params.region in ['us-east-1', 'us-west-2'] → true

Verkettung (~) >

Der Verkettungsoperator übergibt das Ergebnis des linken Ausdrucks als erstes Argument an die Funktion auf der rechten Seite.

session.user_agent ~> $lowercase ~> $trim → equivalent to $trim($lowercase(session.user_agent))

Erlaubte Funktionen

MediaTailor unterstützt die folgenden integrierten Funktionen. Jede Funktion, die hier nicht aufgeführt ist, ist blockiert und verursacht einen Validierungsfehler, wenn Sie eine Funktion erstellen oder aktualisieren.

Typkonvertierung (3)

FunktionDescriptionBeispielErgebnis
$string(value)In eine Zeichenfolge konvertieren$string(200)"200"
$number(value)In Zahl umwandeln$number('42')42
$boolean(value)In einen booleschen Wert umwandeln$boolean(1)true

Selbstbeobachtung (6)

FunktionDescriptionBeispielErgebnis
$length(string)Länge der Zeichenfolge$length('hello')5
$count(array)Anzahl der Array-Elemente$count([1, 2, 3])3
$exists(value)Prüfen Sie, ob der Wert existiert (nicht undefiniert)$exists(temp.id)true oder false
$keys(object)Ruft die Schlüsselnamen der Objekte ab$keys(response.body)["id", "name"]
$lookup(object, key)Ruft den Wert eines Objekts anhand des Schlüsselnamens ab$lookup(response.body, 'status')Wert des status Feldes
$each(object, func)Wenden Sie die Funktion auf jedes Schlüssel-Wert-Paar eines Objekts an$each({"a":1,"b":2}, function($v,$k){$k & '=' & $v})["a=1", "b=2"]

Numerisch (7)

FunktionDescriptionBeispielErgebnis
$sum(array)Summe des Arrays$sum([1, 2, 3])6
$max(array)Maximaler Wert$max([10, 5, 20])20
$min(array)Mindestwert$min([10, 5, 20])5
$average(array)Arithmetisches Mittel$average([10, 20, 30])20
$abs(number)Absoluter Wert$abs(-7)7
$floor(number)Abrunden$floor(3.9)3
$round(number, precision)Auf Präzision abrunden$round(3.456, 2)3.46

Zeichenfolge (9)

FunktionDescriptionBeispielErgebnis
$uppercase(string)In Großbuchstaben$uppercase('hello')"HELLO"
$lowercase(string)In Kleinbuchstaben$lowercase('Hello')"hello"
$trim(string)Leerzeichen entfernen leading/trailing $trim(' hi ')"hi"
$substring(string, start, length)Extrahieren Sie die Teilzeichenfolge (nullbasiert)$substring('abcdef', 2, 3)"cde"
$contains(string, pattern)Prüfen Sie, ob die Zeichenfolge ein Muster enthält$contains(session.user_agent, 'CTV')true oder false
$match(string, pattern)Ordnet die Zeichenfolge dem Regex-Muster zu$match('abc-123', /[0-9]+/){"match": "123", ...}
$replace(string, pattern, replacement)Ersetze das passende Muster$replace('hello', 'l', 'r')"herro"
$join(array, separator)Verbinde Array-Elemente zu einer Zeichenfolge$join(['a','b','c'], ',')"a,b,c"
$split(string, separator)Teilen Sie eine Zeichenfolge in ein Array auf$split('a,b,c', ',')["a", "b", "c"]

Reihe (7)

FunktionDescriptionBeispielErgebnis
$append(arr1, arr2)Arrays verketten$append([1, 2], [3, 4])[1, 2, 3, 4]
$reverse(array)Reihenfolge umkehren$reverse([1, 2, 3])[3, 2, 1]
$sort(array)Reihe sortieren$sort([3, 1, 2])[1, 2, 3]
$distinct(array)Entfernen von Duplizierungen$distinct([1, 2, 2, 3])[1, 2, 3]
$map(array, func)Wenden Sie die Funktion auf jedes Element an$map([1,2,3], function($v){$v*2})[2, 4, 6]
$filter(array, func)Gibt Elemente zurück, bei denen die Funktion den Wert true zurückgibt$filter([1,2,3,4], function($v){$v > 2})[3, 4]
$reduce(array, func, init)Reduziere das Array auf einen einzelnen Wert$reduce([1,2,3], function($prev,$val){$prev+$val}, 0)6

Boolesch (1)

FunktionDescriptionBeispielErgebnis
$not(value)Logisch NICHT$not(false)true

Zufällig (1)

FunktionDescriptionBeispielErgebnis
$random()Zufallszahl zwischen 0 (inklusive) und 1 (exklusiv)$random() > 0.5 ? 'A' : 'B'"A" oder "B"
Anmerkung

$random()generiert bei jeder Bewertung einen neuen Wert. Wenn Sie denselben Zufallswert in mehreren Ausgabeschlüsseln benötigen, binden Sie ihn zuerst an eine Variable:($r := $random(); ...).

Date/time (4)

FunktionDescriptionBeispielErgebnis
$now()Aktueller Zeitstempel als ISO 8601-Zeichenfolge$now()"2024-01-15T12:00:00.000Z"
$millis()Aktueller Zeitstempel in Millisekunden seit der Epoche$millis()1705320000000
$toMillis(string)Konvertiert die ISO 8601-Zeichenfolge in Millisekunden$toMillis('2024-01-15T12:00:00.000Z')1705320000000
$fromMillis(number)Konvertiert Millisekunden in eine ISO 8601-Zeichenfolge$fromMillis(1705320000000)"2024-01-15T12:00:00.000Z"

Kodierung (6)

FunktionDescriptionBeispiel
$encodeUrl(string)URL-Kodierung (behält Strukturzeichen wie/,, ? bei) &$encodeUrl('https://example.com/path?q=hello world')
$encodeUrlComponent(string)URL-Codierung einer einzelnen Komponente (kodiert alle Sonderzeichen)$encodeUrlComponent('a&b=c') → "a%26b%3Dc"
$decodeUrl(string)Dekodieren Sie eine Zeichenfolge URL-encoded $decodeUrl('hello%20world') → "hello world"
$decodeUrlComponent(string)Dekodieren Sie eine Komponente URL-encoded $decodeUrlComponent('a%26b') → "a&b"
$base64encode(string)Zu Base64 kodieren$base64encode('hello') → "aGVsbG8="
$base64decode(string)Von Base64 dekodieren$base64decode('aGVsbG8=') → "hello"
Tipp

Wird $encodeUrlComponent() für einzelne Abfrageparameterwerte verwendet. Verwenden Sie diese Option $encodeUrl() nur, wenn Sie eine vollständige URL codieren und dabei ihre Struktur beibehalten müssen.

Allgemeine Muster

Fallback-Werte

Geben Sie einen Standardwert an, wenn ein Wert möglicherweise nicht existiert.

{%$exists(player_params.region) ? player_params.region : 'us-east-1'%}

Dynamische URL-Konstruktion

Erstellen Sie eine URL für den Anzeigenentscheidungsserver aus mehreren Eingaben.

{%'https://ads.example.com/v1/vast?ip=' & $encodeUrlComponent(session.client_ip) & '&ua=' & $encodeUrlComponent(session.user_agent) & '&sid=' & session.id%}

Der Statuscode überprüft die HTTP_REQUEST-Ausgabe

Schützt die Ausgabewerte vor HTTP-Fehlern.

{%response.statusCode != null and response.statusCode = 200 ? response.body.envelope : 'default-envelope'%}

Numerische Konvertierung von Player-Parametern

Spielerparameter kommen als Zeichenketten an. Konvertiere sie vor arithmetischen oder numerischen Vergleichen.

{%$number(player_params.max_duration) > 30 ? 'long' : 'short'%}
Wichtig

Wenn eine nicht numerische Zeichenfolge $number() empfangen wird, kehrt sie zurück. undefined Kombinieren Sie es damit$exists(), wenn der Parameter möglicherweise fehlt oder ungültig ist:($val := $number(player_params.max_duration); $exists($val) and $val > 30 ? 'long' : 'short').

Zufällige Aufteilung des Datenverkehrs

Ordnen Sie die Zuschauer den Versuchsgruppen zu, indem Sie$random().

{%$random() > 0.5 ? 'https://ads.example.com/v1/vast-a' : 'https://ads.example.com/v1/vast-b'%}

Klassifizierung des Gerätetyps

Klassifizieren Sie Geräte anhand der User-Agent-Zeichenfolge.

{%$contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop'%}