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 |
|---|---|---|---|
+ | Addition | 5 + 3 | 8 |
- | Subtraktion | 10 - 4 | 6 |
* | Multiplikation | 6 * 7 | 42 |
/ | Division | 15 / 4 | 3.75 |
% | Modulo | 17 % 5 | 2 |
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 |
|---|---|---|---|
= | gleich | response.statusCode = 200 | true |
!= | Nicht gleich | player_params.region != 'us-east-1' | truewenn nicht us-east-1 |
< | Kleiner als | avail.index < 3 | truewenn unter 3 |
> | Größer als | $number(player_params.age) > 18 | truewenn über 18 |
<= | Kleiner als oder gleich | $count(items) <= 10 | truewenn 10 oder weniger |
>= | Größer als oder gleich | response.statusCode >= 400 | truewenn Fehlerstatus |
Boolesch
| Operator | Beschreibung | Beispiel |
|---|---|---|
and | Logisches UND | response.statusCode = 200 and $exists(response.body.id) |
or | Logisches ODER | player_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)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$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)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$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)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$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)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$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)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$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)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$not(value) | Logisch NICHT | $not(false) | true |
Zufällig (1)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$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)
| Funktion | Description | Beispiel | Ergebnis |
|---|---|---|---|
$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)
| Funktion | Description | Beispiel |
|---|---|---|
$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'%}