Sprachreferenz für Betrug
Microsoft Dynamics 365 nutzt eine eigene aussagekräftige und ausdrucksstarke Sprache, mit der Sie Ihre Betrugsstrategie definieren und ausdrücken können. Diese Sprache hat viele Ähnlichkeiten mit C# und SQL und bietet Ihnen die Leistung und Flexibilität, die Sie benötigen, um in ihrem einzigartigen Geschäftsszenario gegen Betrug vorzugehen.
Sie können diese Sprache heute verwenden, um Regeln und Geschwindigkeiten festzulegen. Weitere Informationen finden Sie unter Regeln verwalten und Geschwindigkeitsprüfungen durchführen.
Dieser Leitfaden für Betrugssprachen enthält die vollständige Liste der Operatoren, Funktionen und Anweisungen, aus denen die Sprache besteht:
- Anweisungen
- Auf Attribute und Variablen verweisen
- Eigene Variablen definieren
- Funktionen „Globale Variablen“
- Entscheidungsfunktionen
- Beobachtungsfunktionen
- Aggregatfunktionen
- Logische Operatoren
- Vergleichsoperatoren
- Mathematische Funktionen
- DateTime-Funktionen
- Type-Casting-Operatoren
- Zeichenfolgenfunktionen
- Funktionen zur Erkennung von Unsinn
- Mustererkennungsfunktionen
- Modell-Funktionen
- Geo-Funktionen
- Geräteattributfunktionen
- BIN-Suchfunktionen
- Listenfunktionen
- Listen in Regeln verwenden
- Externe Aufrufe, externe Bewertungen und Geschwindigkeiten verwenden
- Typinferenz von Attributen
- JSON-Arrays und -Objekte
- Funktionen, die in Nachentscheidungsaktionen verfügbar sind
Aufstellungen
Anweisungssyntax | Description | Beispiel |
---|---|---|
LET <VariableName> = <Expression> | Eine LET-Anweisung wird verwendet, um eine neue Variable zu definieren. Der Bereich der Variablen ist die Regel oder geschwindigkeitssatz, in der die Variable definiert ist. Variablennamen sollte ein Dollarzeichen ($) vorangestellt werden. Weitere Informationen finden Sie unter Eigene Variablen definieren. Eine beliebige Anzahl von LET Anweisungen können im Bedingungsabschnitt und in den Klauseln aller Regeltypen und Geschwindigkeitssätze verwendet werden. |
LET $fullName = @"user.firstName" + @"user.lastName" |
OBSERVE ÜBERWACHEN <ObservationFunction>(<KeyValuePairs>) |
Eine OBSERVE-Anweisung beendet nicht die Regelausführung mit einer Entscheidung. Es protokolliert lediglich Schlüssel-Wert-Paare entweder in den API-Antwort- oder Ablaufverfolgungsprotokollen. Nachfolgende Regeln und Regelsätze werden weiter ausgeführt, bis eine RETURN-Anweisung erreicht ist. Auf eine OBSERVE-Anweisung muss eine oder mehrere Beobachtungsfunktionen folgen. Wenn ein WHEN-Klausel vorhanden ist und als False ausgewertet wird, wird die OBSERVE-Anweisung nicht protokolliert. Für jede Klausel in den folgenden Regeln kann maximal eine verwendet werden:
|
OBSERVE Output(reason="high score") OBSERVE TRACE(ip=@"device.ipAddress") WHEN Model.Risk(). Bewertung > 400 |
RÜCKGABE <DecisionFunction> [ ,<ObservationFunction>(<KeyValuePairs>) ] [ WHEN <BooleanExpression> ] |
Eine RETURN-Anweisung beendet die Regelausführung mit einer Entscheidung. Die Anweisung muss eine gültige Entscheidungsfunktion angeben: Approve(), Reject(), Challenge() oder Review(). Die Anweisung kann auch eine oder mehrere Beobachtungsfunktionen angeben: Output() oder Trace() Schließlich kann die Anweisung Folgendes enthalten: eine WHEN-Klausel, um die Bedingung anzugeben, unter der eine der vorhergehenden Aktionen ausgeführt werden soll. Pro Klausel in den folgenden Regeln kann maximal eine verwendet werden:
|
RETURN Review() RETURN Reject(), Trace(ip="device.ipAddress") WHEN Model.Risk(). Bewertung > 400 |
ROUTETO QUEUE <QueueName> [ WHEN <BooleanExpression> ] |
Der Befehl ROUTETO wird in Weiterleitungsregeln verwendet, um übereinstimmende Bewertungen an Fallverwaltungswarteschlangen zu leiten. Die optionale WHEN-Klausel kann verwendet werden, um die Bedingungen zu beschreiben, unter denen der Befehl das Routing durchführen soll. Pro Klausel in den folgenden Routingregeln kann maximal eine verwendet werden. |
ROUTETO Queue("High Value Queue") WENN @"purchase.request.totalAmount"> 500 |
SELECT <AggregationFunction> AS <VelocityName> FROM <AssesmentType> GROUPBY <GroupExpression> [ WHEN <BooleanExpression> ] |
Eine SELECT-Anweisung wird in einer Geschwindigkeit verwendet, um eine Geschwindigkeit zu definieren. Es muss eine Aggregationsfunktion angeben. Die erforderliche AS-Klausel wird verwendet, um einen Alias für Ihre Geschwindigkeit zu erstellen. Auf diesen Alias kann dann anhand von Regeln verwiesen werden. Die erforderliche FROM-Klausel wird verwendet, um den Bewertungstyp anzugeben, mit der eine Geschwindigkeit beobachtet werden soll. Gültige Werte sind Purchase, AccountLogin, AccountCreation, Chargeback, BankEvent, und CustomAssessment. Die erforderliche GROUPBY-Klausel gibt eine Eigenschaft oder einen Ausdruck an. Alle Ereignisse, die mit demselben Wert in der GROUPBY-Anweisung bewertet werden, werden kombiniert, um die Aggregation zu berechnen, die in der SELECT-Anweisung angefordert wird. Verwenden Sie beispielsweise, um eine Aggregation für die einzelnen Benutzer zu berechnen GROUPBY @"user.userId". Die optionale WHEN-Klausel gibt einen booleschen Ausdruck an, der bestimmt, ob die verarbeitete Bewertung in die definierte Geschwindigkeit eingeschlossen werden soll. Pro Klausel in Geschwindigkeitssätzen kann maximal eine verwendet werden. |
SELECT Count() AS _Purchase_Rejections_Per_Email SELECT DistinctCount(@"purchaseId") |
WENN <BooleanExpression> | Die WHEN Anweisung ist wie die WHEN Klausel in den anderen Anweisungen, aber es steht allein im Bedingungsabschnitt von Regeln und Geschwindigkeitssätzen. Es gibt eine boolesche Bedingung an, die bestimmt, ob die gesamte Regel, der Velocity-Satz oder die Routinregel ausgeführt werden soll. Im Bedingungsabschnitt aller Regeltypen und Geschwindigkeitssätzen kann maximal eine verwendet werden. |
WHEN Model.Risk(). Bewertung > 400 |
DO <Aktivitätsfunktion> | Eine DO-Anweisung wird verwendet, um am Ende der Regelausführung eine Aktivität auszuführen. Diese Anweisung kann nur in Nachentscheidungsaktionen verwendet werden. | DO SetResponse(name = @"firstname" + @"lastname") |
Auf Attribute und Variablen verweisen
Mit dem At-Zeichen-Operator (@) können Sie auf ein Attribut des aktuellen Ereignisses verweisen.
Variabel | Beschreibung | Beispiel |
---|---|---|
@ | Ein At-Zeichen (@) wird verwendet, um auf ein Attribut des eingehenden Ereignisses zu verweisen. Das Attribut kann als Teil der Anforderungsnutzlast gesendet werden, oder Microsoft Dynamics 365 Fraud Protection kann es generieren. Geben Sie nach dem At-Zeichen (@) den vollständigen Pfad des Attributs an, auf das Sie verweisen möchten. Schließen Sie den Pfad in Anführungszeichen ein (z. B. @„address.city“). Wenn das Attribut, auf das verwiesen wird, nicht Teil der Ereignisnutzlast ist, wird der Standardwert für diesen Typ zurückgegeben: 0.0 für doppelte, eine leere Zeichenfolge für Zeichenfolgen usw. Der Typ des Attributs wird aus dem Kontext abgeleitet, in dem das Attribut verwendet wird. Wenn nicht genügend Kontext bereitgestellt wird, wird standardmäßig der Zeichenfolgen-Typ verwendet. Informationen zur Typinferenz finden Sie im Abschnitt Typinferenz von Attributen. |
@"address.city" |
$ | Ein Dollarzeichen ($) wird verwendet, um auf eine Variable zu verweisen, die in einer LET-Anweisung definiert ist. Weitere Informationen finden Sie unter Eigene Variablen definieren. | $fullName |
@a[x] | Diese Variable wird zum Indizieren von Array-Variablen verwendet. Wenn die Anforderungsnutzlast für eine Bewertung ein Array von Elementen enthält, können Sie mithilfe der folgenden Syntax auf einzelne Elemente des Arrays zugreifen: @"productList[0]".. Verwenden Sie die folgende Syntax, um auf ein Attribut dieses Elements zuzugreifen: @„productList[0].productId“ |
@„Produktliste[0].Produkt ID“ @„paymentInstrumentList[3].type“ |
Vorhanden | Dieser Operator prüft, ob eine Variable in der Ereignisnutzlast vorhanden ist. Exists(Zeichenfolge variabel) |
Exists(@„user.email“) |
Request.CorrelationId() | Diese Funktion verweist auf die eindeutige Korrelations-ID des Ereignisses, das ausgewertet wird. Mit dieser Funktion können Sie auf die Korrelations-ID eines Ereignisses in der Regelerfahrung zugreifen und sie als Parameter oder Header an einen externen Aufruf übergeben. | External.MyExternalCall(Request.CorrelationId()) |
.GetDiagnostics() | Mit dieser Funktion können wichtige Diagnose- und Debuginformationen aus einem externen Aufruf oder einer externen Bewertungsantwort ermittelt werden. Für einen externen Aufruf enthält das Diagnoseobjekt die Anforderungsnutzlast, den Endpunkt, den HttpStatus-Code, die Fehlermeldung und die Latenz. Der Endpunkt ist im Diagnoseobjekt für eine externe Bewertungsantwort nicht verfügbar. Jedes dieser Felder kann in den Regeln verwendet werden, sobald das Diagnostics-Objekt mithilfe der entsprechenden Erweiterungsmethode erstellt wird". GetDiagnostics()" | LET $extResponse = External. myCall(@„device.ipAddress“) LET $extResponseDiagnostics = $extResponse.GetDiagnostics() OBSERVE Output(Diagnostics = $extResponseDiagnostics ) WHEN $extResponseDiagnostics. HttpStatusCode != 200 |
Eigene Variablen definieren
Sie können das LET-Schlüsselwort zum Definieren einer Variablen verwenden. Auf diese Variable kann dann an anderen Stellen in der Regel verwiesen werden. Allen Variablen sollte ein Dollarzeichen ($) vorangestellt werden. Deklarieren Sie z. B. die folgende Variable:
LET $fullName = @"user.firstName" + @"user.lastName"
Variablen, die in einer LET-Anweisung deklariert sind, können nur im Rahmen der Regel oder des Geschwindigkeitssatzes verwendet werden, in dem die Anweisung definiert ist.
Um beispielsweise auf die Variable aus dem vorherigen Beispiel zu verweisen, können Sie die folgende Anweisung schreiben.
WHEN $fullName == "Kayla Goderich"
Schein
Nachdem eine Variable definiert wurde, kann sie nicht mit einem neuen Wert aktualisiert werden.
Funktionen „Globale Variablen“
Sie können globale Variablenfunktionen verwenden, um Variablen innerhalb von Regeln festzulegen und abzurufen. Sobald globale Variablen festgelegt wurden, können sie innerhalb einer Entscheidungsregel, Geschwindigkeit, Routingregeln und Nachentscheidungsaktionen innerhalb derselben Umgebung oder untergeordneter Umgebungen aufgerufen werden. Die Hierarchie "Betrugsschutz" wird in der folgenden Tabelle aufgeführt. Wenn Sie beispielsweise globale Variablen in einer Regel innerhalb der Stammumgebung festlegen, kann Betrugsschutz den Wert innerhalb einer beliebigen anderen Regel in derselben Bewertung in derselben Umgebung oder in untergeordneten Umgebungen abrufen.
Operator | Beschreibung | Beispiel |
---|---|---|
SetVariables(k=v) | Diese Funktion kann verwendet werden, um Schlüsselwertpaare festzulegen, d. h. Werte auf Variablen festlegen. | Do SetVariables(key= 123, email=@„user.email“) |
GetVariable(„k“) | Mit dieser Funktion kann auf die bereits festgelegten Variablen zugegriffen werden. In Fällen, in denen wir auf Nie festgelegte Variablen zugreifen, wird ein Standardwert zurückgegeben. | GetVariable(„key“).AsInt() GetVariable(„email“).AsString() GetVariable(„key“).AsDouble() GetVariable(„key“).AsBool() GetVariable(„key“).AsDateTime() GetVariable(„key“).AsJsonObject() GetVariable(„key“).AsJsonArray() |
Hinweis
Globale Variablen sind spezifisch für eine einzelne Transaktion für eine bestimmte Bewertung. Eine Variable, die innerhalb einer Transaktion festgelegt ist, kann nicht aus einer anderen Transaktion oder einer anderen Bewertung abgerufen werden.
Entscheidungsfunktionen
Entscheidungsfunktionen werden in Regeln verwendet, um eine Entscheidung anzugeben.
Entscheidungstyp | Beschreibung | Beispiel |
---|---|---|
Approve() | Dieser Typ gibt eine Genehmigen-Entscheidung an. Er kann eine Ursache für die Genehmigung und eine andere unterstützende Nachricht enthalten. Überladungen:
|
RETURN Approve() RETURN Approve(„on safe list“) RETURN Approve („on safe list“, „do not escalate“) |
Reject() | Dieser Typ gibt eine Entscheidung von Ablehnen an. Er kann eine Ursache für die Ablehnung und eine andere unterstützende Nachricht enthalten. Überladungen:
|
RETURN Reject() RETURN Reject(„embargo country“) RETURN Reject(„embargo country“, „do not escalate“) |
Review() | Dieser Typ gibt eine Überprüfung-Entscheidung an. Er kann eine Ursache für die Überprüfung und eine andere unterstützende Nachricht enthalten. Überladungen:
|
RETURN Review() RETURN Review(„user on watch list“) RETURN Review(„user on watch list“, „do not escalate“) |
Challenge(String challengeType) | Dieser Typ gibt eine Abfragen-Entscheidung und einen Abfragetyp an. Er kann auch eine Ursache für die Abfrage und eine andere unterstützende Nachricht enthalten. Überladungen:
|
RETURN Challenge („SMS“) RETURN Challenge („SMS“, „suspected bot“) RETURN Challenge („SMS“, „suspected bot“, „do not escalate“) |
Beobachtungsfunktionen
Beobachtungsfunktionen können verwendet werden, um Daten aus dem aktuellen Kontext zu entnehmen und an eine andere Stelle zu schreiben.
Rückgabetyp | Beschreibung | Beispiel |
---|---|---|
Output(k=v) | Diese Funktion kann verwendet werden, um Schlüsselwertpaare an den Abschnitt CustomProperties der API-Antwort zu übergeben. Das Schlüssel-Wert-Paar würde in einem Objekt geschachtelt werden, dessen Name mit dem Namen der Klausel identisch wäre, die die Output()-Anweisung enthält. | Output(key="test", email=@"user.email", countryRegion=Geo.CountryRegion(@"device.ipAddress")) |
Trace(k=v) | Diese Funktion kann verwendet werden, um ein Überwachungsereignis auszulösen und Schlüsselwertpaare an FraudProtection.Trace.Rule Namespace für die Ereignisverfolgung zu senden. | Trace(key=„Manual Review“, ip=@„device.ipAddress“) |
SetResponse(String sectionName, k=v) | Diese Funktion kann verwendet werden, um Schlüsselwertpaare an den Abschnitt CustomProperties der API-Antwort zu übergeben. Der SectionName ist ein optionaler Parameter, der übersprungen werden kann. Diese Funktion kann nur innerhalb von Nachentscheidungsaktionen verwendet werden; es ist nicht in der Entscheidungsregel verfügbar. | SetResponse("Scores", bot = Model.Bot(@deviceContextId), risk=Model.Risk()) SetResponse(test=“123“) |
Response.Decision() | Diese Funktion verweist auf die Entscheidung für die aktuelle Bewertung, die ausgewertet wird. | Response.Decision() == "Genehmigen" |
Aggregatfunktionen
Funktion | Description | Beispiel: |
---|---|---|
Count() | Diese Funktion gibt zurück, wie oft ein Ereignis aufgetreten ist. | SELECT Count() AS numPurchases |
DistinctCount(String key) | Diese Funktion gibt die Anzahl der unterschiedlichen Werte für die angegebene Eigenschaft zurück. Wenn die angegebene Eigenschaft null oder leer für ein eingehendes Ereignis ist, trägt das Ereignis nicht zur Aggregation bei. | SELECT DistinctCount(@„device.ipAddress“) AS distinctIPs |
Sum(Double value) | Diese Funktion gibt die Summe der unterschiedlichen Werte für eine angegebene nummerische Eigenschaft zurück. | SELECT Sum(@„totalAmount“) AS totalSpending |
Logische Operatoren
Bediener | Beschreibung | Beispiel |
---|---|---|
und (&&) | Logical And | Model.Risk(). Score > 500 && Model.Risk(). Bewertung < 800 Model.Risk(). Bewertung > 500 und Model.Risk(). Bewertung < 800 |
oder (||) | Logical Or | @"email.isEmailUsername" == false || @"email.isEmailValidated" == false @"email.isEmailUsername" == false oder @"email.isEmailValidated" == false |
not | Logische Negation | @"email.isEmailUsername" nict(!) @"email.isEmailUsername" |
Vergleichsoperatoren
Fraud Protection unterstützt alle Standard-C#-Vergleichs- und Gleichheits-Vorgänge. Diese Tabelle enthält einige Beispiele für Operatoren, die Sie möglicherweise nützlich finden. Wenn Sie diese Operatoren auf Zeichenfolgen anwenden, führt dies zu lexikografischen Vergleichen.
Bediener | Beschreibung | Beispiel |
---|---|---|
== | Dieser Operator prüft auf Gleichheit. | @"user.countryRegion" == @"shippingAddress.countryRegion" |
!= | Dieser Operator prüft auf Ungleichheit. | @"user.countryRegion" != @"shippingAddress.countryRegion" |
> | Dieser Operator prüft, ob der erste Wert größer als der zweite Wert ist. | Model.Risk(). Bewertung > 500 |
< | Dieser Operator prüft, ob der erste Wert kleiner als der zweite Wert ist. | Model.Risk(). Bewertung < 500 |
>= | Dieser Operator prüft, ob der erste Wert größer oder gleich dem zweiten Wert ist. | Model.Risk(). Score >= 500 |
<= | Dieser Operator prüft, ob der erste Wert kleiner oder gleich dem zweiten Wert ist. | Model.Risk(). Score <= 500 |
X ? Y : Z | Dieser Operator überprüft, ob die Bedingung X wahr ist oder nicht. Wenn dies der Fall ist, wird die Anweisung Y ausgeführt, und das Ergebnis wird zurückgegeben. Andernfalls wird die Anweisung Z ausgeführt, und das Ergebnis wird zurückgegeben. Mehrere logische Prüfungen können auch mithilfe von Klammern kombiniert werden, um eine geschachtelte IF <> THEN <> ELSE-Logik <> zu definieren. | LET $riskbucket = Model.Risk(). Bewertung > 500 ? "Hoch" : (Model.Risk(). Score > 300 ? "Mittel" : "Niedrig") |
Mathematische Funktionen
Fraud Protection unterstützt alle Standard-C# mathematischen Methoden und arithmetischen Operatoren. Diese Tabelle enthält einige Beispiele für Methoden, die Sie möglicherweise nützlich finden.
Operator | Beschreibung | Beispiel |
---|---|---|
Math.Min(Double value1, Double value2) | Dieser Operator berechnet das Minimum von zwei Werten. | Math.Min(Model.Risk(). Score, Model.Bot(@"deviceFingerprinting.id"). Bewertung) |
Math.Max(Double value1, Double value2) | Dieser Operator berechnet das Maximum von zwei Werten. | Math.Max(Model.Risk(). Score, Model.Bot(@"deviceFingerprinting.id"). Bewertung) |
RandomInt(Integer min, Integer max) | Dieser Operator gibt ein zufälliges Integer im angegebenen Bereich zurück, einschließlich des Minimalwerts und ausschließlich des Maximalwerts. | RandomInt(0, 100) |
DateTime-Operatoren
Fraud Protection unterstützt die Standard-C#-DateTime-Eigenschaften, -Methoden und -Operatoren. Diese Tabelle enthält einige Beispiele für Funktionen und Eigenschaften, die Sie möglicherweise nützlich finden.
Operator | Beschreibung | Beispiel |
---|---|---|
UtcNow | Dieser Operator erhält ein DateTime-Objekt, das auf dem Computer auf das aktuelle Datum und die aktuelle Uhrzeit eingestellt ist und als UTC ausgedrückt wird. | DateTime.UtcNow |
Heute | Dieser Operator erhält ein Objekt, das auf das aktuelle Datum festgelegt ist, wobei die Zeitkomponente auf 00:00:00 festgelegt ist. | DateTime.Today |
Subtrahieren | Dieser Operator gibt eine neue DateTime zurück, indem ein angegebenes Datum und eine angegebene Uhrzeit von einer Eingabe dateTime subtrahiert wird. | DateTime.UtcNow.Subtract(@var1. ToDateTime()) |
DaysSince(DateTime date) | Dieser Operator gibt ein Integer zurück, das die Anzahl der Tage angibt, die zwischen dem angegebenen DateTime-Wert und das aktuelle Datum (ausgedrückt als koordinierte Weltzeit [UTC]) liegen. | DaysSince(@„user.CreationDate“) |
Jahr | Dieser Operator erhält die Jahreskomponente des Datums, das von dieser Instanz dargestellt wird. | @"user.creationDate".Year |
Datum | Dieser Operator erhält ein neues Objekt mit demselben Datum wie diese Instanz, doch der Zeitwert ist auf 00:00:00 (Mitternacht) gesetzt. | @"user.creationDate".Date |
Type-Casting-Operatoren
Informationen zur Verwendung der Typinferenz finden Sie im Abschnitt Typinferenz von Attributen später in diesem Artikel.
Operator | Beschreibung | Beispiel |
---|---|---|
Convert.ToDateTime | Dieser Operator konvertiert die Zeichenfolge in „datetime“ und wandelt „datetime“ in eine Zeichenfolge im angegebenen Format um. |
Convert.ToDateTime(@"user.creationDate").ToString("yyyy-MM-dd") |
Convert.ToInt32 | Dieser Operator konvertiert den angegebenen Wert in Int32. |
Convert.ToInt32(@var) |
Convert.ToDouble | Dieser Operator konvertiert den angegebenen Wert in Double. |
Convert.ToDouble(@var) |
Zeichenfolgenfunktionen
Fraud Protection unterstützt die Standard-C#-String-Klasse. Diese Tabelle enthält einige Beispiele für Funktionen und Operatoren, die Sie möglicherweise nützlich finden.
Bediener | Beschreibung | Beispiel |
---|---|---|
StartsWith() | Dieser Operator prüft, ob eine Zeichenfolge mit einem angegebenen Präfix beginnt. | @"user.phoneNumber".StartsWith("1-") |
EndsWith() | Dieser Operator prüft, ob eine Zeichenfolge mit einem angegebenen Suffix endet. | @"user.email".EndsWith("@contoso.com") |
IsNumeric() | Dieser Operator prüft, ob es sich bei einer Zeichenfolge um einen numerischen Wert handelt. | @"user.email".IsNumeric() |
Length | Dieser Operator gibt die Anzahl von Zeichen in der Textzeichenfolge zurück. |
@"user.username".Length |
ToDateTime() | Dieser Operator konvertiert eine Zeichenfolge in ein DateTime-Objekt. | @"user.creationDate".ToDateTime() |
ToDouble() | Dieser Operator konvertiert eine Zeichenfolge in einen Double-Wert. | @"productList.purchasePrice".ToDouble() |
ToInt32() | Dieser Operator konvertiert eine Zeichenfolge in einen Int32-Wert. | @"zipcode".ToInt32() |
ToUpper() | Dieser Operator gibt eine Kopie dieser Zeichenfolge zurück, die in Großbuchstaben konvertiert wurde. | @"user.username". ToUpper() |
ToLower() | Dieser Operator gibt eine Kopie dieser Zeichenfolge zurück, die in Kleinbuchstaben konvertiert wurde. | @"user.username". ToLower() |
IndexOf() | Dieser Operator meldet den nullbasierten Index des ersten Vorkommens einer bestimmten Teilzeichenfolge innerhalb der angegebenen Zeichenfolge. | @"user.username". IndexOf("@") |
LastIndexOf() | Dieser Operator meldet den nullbasierten Index des letzten Vorkommens einer bestimmten Teilzeichenfolge innerhalb der angegebenen Zeichenfolge. | @"user.username". LastIndexOf("@") |
Teilzeichenfolge() | Dieser Operator gibt eine Teilzeichenfolge ab einem nullbasierten Index innerhalb einer Zeichenfolge zurück, wobei ein zweiter optionaler Parameter die Länge der gewünschten Teilzeichenfolge angibt. | @"user.username". Teilzeichenfolge(0,5) |
IsNullOrEmpty() | Dieser Operator gibt zurück, wenn die angegebene Zeichenfolge null oder leer ist. Andernfalls wird „False“ ausgegeben. | @"user.username". IsNullOrEmpty() |
IgnoreCaseEquals() | Dieser Operator gibt true zurück, wenn die beiden Zeichenfolgen unabhängig von Groß-/Kleinschreibungsunterschieden gleich sind. Andernfalls wird „False“ ausgegeben. | @"user.username". IgnoreCaseEquals(@"user.email") |
Contains() | Dieser Operator prüft, ob eine Zeichenfolge eine andere Zeichenfolge enthält. | @"productList.productName".Contains("Xbox") |
ContainsOnly() | Dieser Operator prüft, ob eine Zeichenfolge nur die angegebenen Zeichensätze enthält. | @"zipcode".ContainsOnly(CharSet.Numeric) |
ContainsAll() | Dieser Operator prüft, ob eine Zeichenfolge alle angegebenen Zeichensätze enthält. | @"zipcode". ContainsAll(CharSet.Numeric|CharSet.Bindestrich) |
ContainsAny() | Dieser Operator prüft, ob eine Zeichenfolge alle angegebenen Zeichensätze enthält. | @"zipcode". ContainsAny(CharSet.Numeric|CharSet.Bindestrich) |
Unter Verwendung von „CharSet“ in „ContainsOnly“, „ContainsAll“ und „ContainsAny“
Die folgenden Zeichentypen können in „ContainsOnly“, „ContainsAll“ und „ContainsAny“ verwendet werden.
Zeichentyp | Beschreibung |
---|---|
Alphabetisch | a–z, A–Z |
Apostroph | ' |
@-Zeichen | @ |
Backslash | \ |
Komma | , |
Hyphen | - |
Numeric | 0–9 |
Periodisch | . |
Schrägstrich | / |
Unterstrich | _ |
Trennzeichen | Einzelnes Leerzeichen |
Funktionen zur Erkennung von Unsinn
Diese Funktionen tragen dazu bei, Betrug zu verhindern, indem schnell und effizient erkannt wird, ob wichtige Benutzereingabefelder (z. B. Namen und Adressen) Gibberish enthalten.
Funktion | Description | Beispiel |
---|---|---|
GetPattern(String).maxConsonants | Maximale Anzahl zusammenhängender Konsonanten in einer Zeichenfolge, die nicht durch einen Vokal getrennt sind. Beispielsweise ist maxConsonants für die Zeichenfolge "01gggyturah" 5. | GetPattern(@„user.email“).maxConsonants |
GetPattern(String).gibberScore | ML-basierter Wert zwischen 0 und 1. 0 bedeutet, dass es sich mit höchster Wahrscheinlichkeit um Unsinn handelt, und 1 bedeutet, dass es sich mit der geringsten Wahrscheinlichkeit um Unsinn handelt. | GetPattern(@„user.email“).gibberScore |
Hinweis
Das Unsinnerkennungsmodell basiert auf der Häufigkeit von zwei aufeinanderfolgenden alphanumerischen Zeichen in öffentlich zugänglichen englischen Dokumenten. Es wird davon ausgegangen, dass je häufiger zwei aufeinanderfolgende alphanumerische Zeichen in öffentlichen Dokumenten vorkommen, es desto weniger wahrscheinlich ist, dass es sich um Unsinn handelt. Das Modell sollte angemessene Bewertungen für englische Texte liefern und kann verwendet werden, um zu erkennen, ob die Namen oder Adressen Unsinn enthalten. Allerdings eignet sich das Modell möglicherweise nicht für Abkürzungen, wie etwa Kurzformen für Bundesstaaten (AZ, TX usw.). Es kann auch nicht zur Überprüfung von Namen oder Adressen verwendet werden. Dazu kommt, dass das Modell für andere als englische Texte nicht getestet wurde.
Mustererkennungsfunktionen
Diese Funktionen tragen dazu bei, Betrug zu verhindern, indem schnell und effizient erkannt wird, ob wichtige Benutzereingabefelder (z. B. Namen und Adressen) Gibberish enthalten.
Funktion | Description | Beispiel |
---|---|---|
Patterns.IsRegexMatch(Zeichenfolgenmuster, Zeichenfolgenquelle) | Führt eine reguläre Ausdrucks-Übereinstimmung (regex) des Zeichenfolgenmusters mit einer Zeichenfolgenquelle aus. Das Ergebnis ist ein boolescher Wert, d. a. "true" (der angibt, dass die angegebene Zeichenfolge mit dem Muster übereinstimmt) oder "false" (gibt keine Übereinstimmung an) | Patterns.IsRegexMatch("^.com$", @ "user.email") Patterns.IsRegexMatch( "^.[aAeEiIoOuU]+.*$", @ "user.firstname") |
Hinweis
- Das Zeichenfolgenmuster muss eine konstante Eingabe sein.
- Die Funktion gibt "false" (das Standardergebnis) zurück, wenn die Auswertungszeit 10 Millisekunden überschreitet.
- Alle Einschränkungen , die NonBacktracking nicht unterstützen, gelten auch für die IsRegexMatch-Funktion.
Modell-Funktionen
Modellfunktionen führen die verschiedenen Betrugsmodelle aus und sind nützlich, wenn Ihre Bewertung nicht automatisch ein oder mehrere Betrugsmodelle ausführt. Wenn Modellfunktionen ausgeführt werden, werden Informationen über das Modell, das während der Regelauswertung ausgeführt wird, im API-Aufruf der Betrugsbewertung ausgegeben. Die Regel erhält dann Zugriff auf das Modellergebnis, einschließlich Bewertung, Ursachen und mehr, die für die weitere Verarbeitung der Regel und die Entscheidungsfindung verwendet werden können.
Modelltyp | Beschreibung | Beispiel |
---|---|---|
Risiko | Bewertet die Wahrscheinlichkeit, dass eine Sitzung riskant ist. | Model.Risk() |
Bot | Bewertet die Wahrscheinlichkeit, dass eine Sitzung von einem Bot initiiert wurde. Übergeben Sie eine Gerätekontext-ID, die an die Fraud Protection-Lösung für Gerätefingerabdrücke gesendet wurde. | Model.Bot(@deviceContextId) |
Geo-Funktionen
Geo-Funktionen stellen eine Lösung bereit, indem sie eine IP-Adresse in eine geografische Adresse umwandeln. Geo-Funktionen können in Regeln nur aufgerufen werden, indem IPs verwendet werden, die Teil der Transaktionsnutzlast sind oder von Fraud Protection mithilfe von Gerätefingerabdruck erfasst werden. Geo-Funktionen können nicht für beliebige IP-Werte aufgerufen werden.
Bediener | Beschreibung | Beispiel |
---|---|---|
Geo.RegionCode(String ip) | Dieser Operator konvertiert eine IPv4-Adresse in ihren US-Regionalcode (d. h. die Abkürzung für den Namen des US-Bundesstaates oder -Territoriums). Für eine IP-Adresse im Bundesstaat Washington wird beispielsweise "WA" zurückgegeben. |
Geo.RegionCode(@„device.ipAddress“) |
Geo.Region(String ip) | Dieser Operator konvertiert eine IPv4-Adresse in ihre US-Region (d. h. der Name des US-Bundesstaates oder -Territoriums). Für eine IP-Adresse im Bundesstaat Washington wird beispielsweise "Washington" zurückgegeben. |
Geo.Region(@„device.ipAddress“) |
Geo.CountryCode(String ip) | Dieser Operator konvertiert eine IPv4-Adresse in ihren Länder-/Regionalcode. Für eine IP-Adresse in Australien wird beispielsweise "AU" zurückgegeben. |
Geo.CountryCode(@„device.ipAdress“) |
Geo.CountryRegion(String ip) | Dieser Operator konvertiert eine IP-Adresse in ihren Regionsnamen. Für eine IP-Adresse in Australien wird beispielsweise "Australia" zurückgegeben. |
Geo.CountryRegion(@„device.ipAddress“) |
Geo.City(String ip) | Dieser Operator konvertiert eine IPv4-Adresse in ihren Ortsnamen. Für eine IP-Adresse in New York City wird beispielsweise "New York City" zurückgegeben. |
Geo.City(@"device.ipAddress") |
Geo.MarketCode(String ip) | Dieser Operator konvertiert eine IPv4-Adresse in den Marktcode der IP-Adresse. Für eine IP-Adresse aus Kanada wird beispielsweise "NA" (North America) zurückgegeben. |
Geo.MarketCode(@„device.ipAddress“) |
Geräteattributfunktionen
Bediener | Beschreibung | Beispiel |
---|---|---|
Device.GetFullAttributes(String sessionId) | Gibt einen vollständigen Satz von Geräteattributen für die angegebene Gerätefingerabdrücke-Sitzung zurück. Weitere Informationen finden Sie unter Einrichten des Geräteabdrucks , um den vollständigen Satz von Geräteattributen anzuzeigen. | Device.GetFullAttributes(@"deviceFingerprinting.id") |
Device.GetAttributes(String sessionId) | Gibt eine kleinere Teilmenge von Geräteattributen für die angegebene Gerätefingerabdrücke-Sitzung zurück. Die Teilmenge ist eine von Betrugsschutz kuratierte Liste und enthält die am häufigsten verwendeten Attribute. | Device.GetAttributes(@"deviceFingerprinting.id") |
Device.GetSelectedAttributes(String sessionId, String attributeName) | Gibt bis zu 20 Geräteattribute für die angegebene Gerätefingerabdrücke-Sitzung zurück. Die Liste der gewünschten Attribute soll als durch Trennzeichen getrennte Parameter angegeben werden. | Device.GetSelectedAttributes(@"deviceFingerprinting.id", "deviceAsn","deviceCountryCode") |
Device.GetSpeedOfTravel(String sessionId) | Gibt die maximale Reisegeschwindigkeit eines Geräts in Meilen pro Stunde zurück. Betrugsschutz bestimmt die maximale Geschwindigkeit, indem die letzten fünf aufeinanderfolgenden Fingerabdrucksitzungen genommen und die Geschwindigkeit des Geräts von Sitzung zu Sitzung berechnet und das Maximum zurückgegeben wird. Das Gerät wird über Sitzungen mithilfe der Cookie-ID identifiziert. | Device.GetSpeedOfTravel(@"deviceFingerprinting.id") |
BIN-Suchfunktionen
BIN-Nachschlagefunktionen bieten Informationen zu Zahlungskartenkonten (z. B. Kartennetzwerk, Kartentyp, Kartenlandcode, Kartenkategorie) basierend auf der Bankidentifikationsnummer (BIN). Daten für BIN-Suche werden von führenden BIN-Datenanbietern von Drittanbietern stammen und dann von Betrugsschutz kuratiert.
Operator | Beschreibung | Beispiel |
---|---|---|
BIN.Lookup(String BIN).cardNetwork | Diese Funktion sucht BIN und gibt Kartennetzwerke zurück (z. B. Visa, Mastercard). |
BIN.Lookup(@„Card.bin“).cardNetwork |
BIN.Lookup(String BIN).cardType | Dieser Operator sucht nach der BIN und gibt den Kartentyp zurück (z. B. Debit-, Kreditkarte). |
BIN.Lookup(@„card.bin“).cardType |
BIN.Lookup(String BIN).issuer | Dieser Operator sucht nach der BIN und gibt die ausstellende Organisation zurück. |
BIN.Lookup(@„card.bin“).issuer |
BIN.Lookup(String BIN).countryCode | Dieser Operator sucht nach der BIN und gibt den aus zwei Buchstaben bestehenden ISO-Ländercode der Karte zurück. |
BIN.Lookup(@„card.bin“).countryCode |
KASTEN. Lookup(String BIN).cardCategory | Dieser Operator sucht BIN und gibt die Kartenkategorie zurück (z. B. Prepaid, Corporate, Rewards). |
KASTEN. Lookup(@"card.bin"). cardCategory |
BIN.Lookup(String BIN).error | Dieser Operator sucht BIN und gibt eine Fehlermeldung zurück, wenn der BIN nicht gefunden werden konnte. |
BIN.Lookup(@„card.bin“).error |
Listenfunktionen
Mit Fraud Protection können Sie benutzerdefinierte Listen hochladen und in der Sprache darauf verweisen. Informationen zum Hochladen dieser Listen finden Sie unter Listen verwalten. Mehr Informationen zur Verwendung von Listen in Regeln finden Sie im Abschnitt Listen in Regeln verwenden später in diesem Artikel.
Operator | Beschreibung | Beispiel |
---|---|---|
ContainsKey( String listName, String columnName, String key) |
Dieser Operator prüft, ob ein Schlüssel in der angegebenen Spalte in einer vordefinierten Fraud Protection-Liste enthalten ist. Das Beispiel in der nächsten Spalte überprüft, ob die Spalte "E-Mails" in der Liste "E-Mail-Supportliste" die Variable "@"user.email" enthält. |
ContainsKey("Email Support List", "Emails", @"user.email") |
Lookup( String listName, String keyColName, String valueColName) |
Dieser Operator sucht den Wert eines Schlüssels in einer Fraud Protection-Liste. Sowohl der Name der Spalte, die den Schlüssel enthält, als auch der Name der Spalte, die den Wert enthält, müssen angegeben werden. Der Wert wird immer als Zeichenfolge zurückgegeben. Wenn der Schlüssel nicht gefunden wird und defaultValue-Parameter nicht angegeben ist, wird „Unbekannt“ zurückgegeben. Das Beispiel in der nächsten Spalte sucht in der Spalte "E-Mails" in der Spalte "E-Mail-Supportliste" nach dem Wert der Variablen "@"user.email". Wenn eine Übereinstimmung gefunden wird, gibt die Funktion den Wert der Spalte Status aus der übereinstimmenden Zeile in der Liste zurück. Wenn keine Übereinstimmung gefunden wird, gibt die Funktion "0" zurück. |
Lookup("Email Support List", "Emails", @"user.email", "Status",0) |
In | Dieser Operator prüft, ob ein Schlüssel in einer durch Kommas getrennten Werteliste enthalten ist. | In(@„user.countryRegion“, „US, MX, CA“) |
InSupportList | Dieser Operator überprüft, ob sich ein Attribut in einer Supportliste befindet. | InSupportList('Email Support List', @"user.email") |
IsSafe | Dieser Operator überprüft, ob eine Entität in einer Supportliste als sicher gekennzeichnet ist. | IsSafe('Email Support List', @"user.email") |
IsBlock | Dieser Operator überprüft, ob eine Entität als "Blockieren" in einer Supportliste markiert ist. | IsBlock('Email Support List', @"user.email") |
IsWatch | Dieser Operator überprüft, ob eine Entität als Überwachung in einer Supportliste gekennzeichnet ist. | IsWatch('Email Support List', @"user.email") |
Listen in Regeln verwenden
Sie können die ContainsKey- und Lookup-Operatoren verwenden, um auf Listen zu verweisen, die Sie in Fraud Protection hochgeladen haben. Weitere Informationen über Listen finden Sie unter Listen verwalten.
ContainsKey
Verwenden Sie einen ContainsKey-Operator, um zu überprüfen, ob eine Ihrer Listen einen bestimmten Wert enthält. Geben Sie den Listennamen, die Spalte und den Schlüssel an, für welche die Überprüfung durchgeführt werden soll.
Laden Sie beispielsweise eine einspaltige Liste mit riskanten E-Mail-Adressen hoch und benennen Sie diese Liste riskanter E-Mails.
Kayla@contoso.com |
Jamie@bellowscollege.com |
Marie@atatum.com |
Sie können dann die folgende Syntax verwenden, um alle Transaktionen von den riskanten E-Mail-Adressen in dieser Liste abzulehnen.
RETURN Reject("risky email")
WHEN ContainsKey("Risky email list", "Email", @"user.email")
In dieser Klausel wird geprüft, ob die Spalte "E-Mail" in der Liste "Liste riskanter E-Mails" den Schlüssel @email enthält. Wenn dies der Fall ist, wird die Transaktion abgelehnt.
Suche
Für mehrspaltige Listen können Sie den Lookup-Operator verwenden, um den Wert einer Spalte für einen bestimmten Schlüssel zu überprüfen.
Sie erstellen beispielsweise eine Liste mit einer Spalte für E-Mail-Adressen und einer weiteren Spalte mit dem Status dieser E-Mail-Adressen. Sie nennen diese Liste E-Mail-Liste.
Status | |
---|---|
Kayla@contoso.com |
Riskant |
Jamie@bellowscollege.com |
Riskant |
Marie@atatum.com |
Riskant |
Camille@fabrikam.com |
Sicher |
Miguel@proseware.com |
Sicher |
Tyler@contoso.com |
Sicher |
Sie können dann die folgende Syntax verwenden, um alle Transaktionen von den E-Mail-Adressen in dieser Liste abzulehnen, die den Status Riskant haben.
RETURN Reject("risky email")
WHEN Lookup("Email List", "Email", @"user.email", "Status") == "Risky"
Diese Klausel sucht nach dem @„user.email“-Schlüssel in der „E-Mail“-Spalte der Liste „E-Mail-Liste“ und prüft, ob der Wert in der „Status“-Spalte Riskant lautet. Wenn dies der Fall ist, wird die Transaktion abgelehnt.
Wenn der @„user.email“-Schlüssel nicht in der Liste gefunden wird, gibt Fraud Protection Unbekannt zurück.
Sie können auch Ihren eigenen Standardwert als fünften Parameter angeben. Weitere Informationen finden Sie im Abschnitt logische Operatoren am Anfang dieses Artikels.
Der Lookup-Operator gibt immer einen String-Wert zurück. Um diesen Wert in einen Int-, Double- oder DateTime-Wert zu konvertieren, verwenden Sie einen Type-Casting-Operator.
Externe Aufrufe, externe Bewertungen und Geschwindigkeiten verwenden
- Geben Sie, um auf einen externen Aufruf zu verweisen, Extern gefolgt von dem externen Aufruf ein, auf den Sie verweisen möchten. Weitere Informationen finden Sie unter Einen externen Aufruf in Regeln verwenden.
- Geben Sie, um auf eine externe Beurteilung zu verweisen, Beurteilungen gefolgt von der externen Beurteilung ein, auf die Sie verweisen möchten. Weitere Informationen finden Sie unter Eine externe Beurteilung in Regeln verwenden.
- Geben Sie, um auf eine Häufigkeit zu verweisen, Häufigkeit gefolgt von der Geschwindigkeit ein, auf die Sie verweisen möchten. Weitere Informationen finden Sie unter Eine Geschwindigkeit in Regeln verwenden.
Typinferenz von Attributen
Variablentypen werden aus dem Kontext abgeleitet, in dem sie verwendet werden. Im Folgenden finden Sie einige Beispiele:
- Im Ausdruck WHEN @isEmailValidated wird die Variable als ein boolescher Wert interpretiert.
- Im Ausdruck Model.Risk(). Score > 500, the variable is interpreted as a Double value.
- Im Ausdruck @„user.creationDate“.Year < DateTime.UtcNow.Year wird die Variable als ein DateTime-Wert interpretiert.
Wenn nicht genügend Kontext vorhanden ist, um den Typ einer Variablen abzuleiten, wird sie als ein String-Wert betrachtet. Beispiel: im Ausdruck Model.Risk(). Score < Model.Bot(@"deviceFingerprinting.id"). Score, beide Variablen werden als Zeichenfolgen interpretiert.
Verwenden Sie zum Angeben des Typs einer Nichtzeichenfolgenvariablen einen Typ-Umwandlungsoperator.
JSON-Arrays und -Objekte
FQL unterstützt die Erstellung komplexer strukturierter Objekte als lokale Variablen, die an den externen Aufruf oder die externe Bewertung im JSON-Format übergeben werden können. Wie alle anderen lokalen Variablen in FQL sind Arrays und Objekte nach ihrer Erstellung unveränderlich.
JSON-Arrays
Arrays werden erstellt, indem Ausdrücke in zwei Klammern eingeschlossen werden:
LET $arr1 = [ "hello", "world" ]
LET $arr2 = [
"this is also an array",
78.4,
$arr1,
@"user.email",
External.MyExtcall()
]
JSON-Objekte
Objekte werden mit geschweiften Klammern erstellt:
LET $obj1 = { isObject: true }
LET $obj2 = {
numberField: 7,
fieldIs: "string",
internalObj: $obj1,
inline: {
innerInnerField: "hello"
}
}
FQL-Funktionen für JSON-Arrays und -Objekte
Syntax | Beschreibung | Beispiel |
---|---|---|
myArr[0] | Sie können diese Syntax verwenden, um anhand des Indexes auf ein bestimmtes Arrayelement zuzugreifen. | myArr [0].property myArr [0][0]myArr [0] [0].property myArr [0].property[0] myArr [0].property[0].property[0].property |
In den obigen Beispielen ist myArr ein Array. Die Quelle dieses Arrays kann die @@payloadProperty, externe Bewertungsantwort, externe Anrufantwort, lokale Variable oder eine globale Variable sein.
Im Folgenden sind Beispiele für die Verwendung der Syntax basierend auf verschiedenen Arrayquellen aufgeführt:
- Arrayquelle: Nutzlast
LET $sample = @@"myArr[0]".AsJsonArray()
RETURN Approve()
WHEN $sample[0].AsString() == "a"
- Arrayquelle: Lokale Variable
LET $group1 =["a", "b", "c"] LET $group1 =[{ item1: "a", item2: "b"}, { item1: "c", item2: "d"}] LET $group3 =[{ item1: "a", item2: "b", item3: ["c", "d"]}, {{ item1: "e", item2: "f", item3: ["g", "h"]}] RETURN Approve() WHEN $group1[0].AsString() == "a" && $group1[0].item2.AsString() == "b" && $group3[0].item3[0].AsString() == "c"
Syntax | Beschreibung | Beispiel |
---|---|---|
Array.GetValue (TargetArray . AsJsonArray(), matchKey, matchValue, lookupKey) | Mit dieser Funktion können Sie auf das erste Arrayelement zugreifen, das einer Bedingung entspricht. Gibt einen Wert zurück. |
Array.GetValue(@@"payloadProperty". AsJsonArray(), matchKey, matchValue, lookupKey) |
Array.GetValues(TargetArray . AsJsonArray(), matchKey, matchValue) | Mit dieser Funktion können Sie auf eine Reihe von Arrayelementen zugreifen, die einer Bedingung entsprechen. Gibt ein Array zurück. |
Array.GetValues(@@"payloadProperty". AsJsonArray(), matchKey, matchValue) |
Im Folgenden finden Sie einige ausführlichere Beispiele für die Verwendung der obigen Syntax basierend auf verschiedenen Arrayquellen:
Arrayquelle | Array.GetValue | Array.GetValues |
---|---|---|
Externe Bewertungen | LET $a = Assessments.myAssessment.evaluate() LET $sample = Array.GetValue($a.ruleEvaluations.AsJsonArray(), "rule", "Sample Payload Generation", "clauseNames") RETURN Approve() WHEN $sample[0]. AsString() == "TestData" |
LET $a = Assessments.myAssessment.evaluate() LET $sample = Array.GetValues($a.ruleEvaluations.AsJsonArray(), "rule", "Sample Payload Generation") RETURN Approve() WHEN $sample[0].clauseNames[0]. AsString() == "TestData" |
Payload | Nutzlastbeispiel: {"group":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]} LET $sample = Array.GetValue(@@"group". AsJsonArray(), "item1", "a", "item2") RETURN Approve()WHEN $sample. AsString() == "a1" |
Nutzlastbeispiel: { "group":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]} LET $sample = Array.GetValues(@@"group". AsJsonArray(), "item1", "a") RETURN Approve() WENN $sample[0].Element2. AsString() == "a1" |
Globale Variablen | Verwenden des gleichen Nutzlastbeispiels wie oben Do SetVariables(Var=@@"group") LET $group = GetVariable("Var"). AsJsonObject() LET $value = Array.GetValue($group, "item1", "a", "item2") RETURN Approve() WHEN $value. AsString() == "a1" |
Verwenden des gleichen Nutzlastbeispiels wie oben Do SetVariables(Var=@@"group") LET $group = GetVariable("Var"). AsJsonObject() LET $arr = Array.GetValues($group. AsJsonArray(), "item1", "a") RETURN Approve() |
Externer Aufruf | Antwort des externen Anrufs (myCall): {"group":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]} |
Antwort des externen Anrufs (myCall): {"group":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]} LET $x = External.myCall(). AsJsonObject() LET $arr = Array.GetValues($x.group[0]. AsJsonObject(), "item1", "a")RETURN Approve() WHEN $arr[0].item2. AsString() == "a1" |
Typ casting for JSON arrays and objects
Die folgenden . As<Type>() are supported from the JsonObject:
- AsString()
- AsInt()
- AsDouble()
- AsDateTime()
- AsBool()
- AsJsonArray()
- AsJsonObject()
Wenn Sie eine der beiden Arrayhilfsmethoden , Array.GetValue oder Arrays.GetValues, verwenden, müssen Sie "Cast" verwenden . As<Type>(). Beispiel:
LET $arr = {myArr:[{item1: "red", number: 45}, {item1: "blue", number: 56}, {item1: "green", number: 33}]} LET $sample = Array.GetValues($arr.myArr.AsJsonArray(), "item1", "blue")
Nachdem Sie Daten explizit in ein JSON-Objekt oder Array konvertiert haben, können Sie diese Verwenden . As<Type>() to cast to a different data type, if needed. Beispiel:
RETURN Approve() WHEN $sample[0].number.AsInt() == 56
Wenn Sie @@verwenden, werden die Daten implizit in ein JSON-Objekt umwandeln. Wenn Sie das JSON-Objekt dann in einen anderen Datentyp konvertieren möchten, müssen Sie es verwenden . As<Type>(). Beispiel:
LET $sample = @@”user.addresses”.AsJsonArray()
Wenn Sie ein bestimmtes Format ausgeben möchten, müssen Sie es verwenden . As<Type>(). Beispiel:
LET $sample = @@”user.addresses” Output(abc = $sample.AsJsonArray())
Hinweis
Bewährte Methoden für Die Typwandlung:
- Geben Sie immer einen Umwandlungstyp am Ende der Kette ein.
- Wenn Sie nicht sicher sind, geben Sie immer explizit umwandlungen ein. As<Type>(). Beispiel:
LET $sample = External.myCall().data[0].Item1[0].AsJsonArray()
Or
LET $sample = @@”accommodations[0].rooms”.AsJsonArray()
Funktionen, die in Nachentscheidungsaktionen verfügbar sind
Die folgenden Funktionen können nur innerhalb von Post Decision Actions verwendet werden. Sie sind nicht in Entscheidungsregeln verfügbar.
Syntax | Beschreibung | Beispiel |
---|---|---|
SetResponse(String sectionName, k=v) | Diese Funktion kann verwendet werden, um Schlüsselwertpaare an den Abschnitt CustomProperties der API-Antwort zu übergeben. Der SectionName ist ein optionaler Parameter, der übersprungen werden kann. | SetResponse("Scores", bot = Model.Bot(@deviceContextId), risk=Model.Risk()) SetResponse(test=“123“) |
Response.Decision() | Diese Funktion verweist auf die Entscheidung für die aktuelle Bewertung, die ausgewertet wird. | Response.Decision() == "Genehmigen" |