Freigeben über


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:

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>)
[ WENN <BooleanExpression>

]

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:

  • Kaufregeln
  • Benutzerdefinierte Bewertungsregeln
  • Kontoschutzregeln

    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:

    • Kaufregeln
    • Benutzerdefinierte Bewertungsregeln
    • Kontoschutzregeln

      RETURN Review()
      WENN IsWatch(unterstützte Geräteliste, @"deviceAttributes.deviceId") ||
      IsWatch(Unterstützte Zahlungsliste, @"paymentInstrumentList.merchantPaymentInstrumentId")

      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
      FROM Purchase
      WENN @"ruleEvaluation.decision" == Zurückweisen
      GROUPBY @"user.email"

      SELECT DistinctCount(@"purchaseId")
      AS _BankDeclines_Per_Device
      FROM BankEvent
      WENN @"status" == ABGEWIESEN
      GROUPBY @"purchase.deviceContext.externalDeviceId"

      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:

      • Approve(String reason)
      • Approve(String reason, String supportMessage)

      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:

      • Reject(String reason)
      • Reject(String reason, String supportMessage)

      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:

      • Review(String reason)
      • Review(String reason, String supportMessage)

      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:

      • Challenge(String challengeType, String reason)
      • Challenge(String challengeType, String reason, String supportMessage)

      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.

      E-Mail
      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.

      E-Mail 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"}]}

      LET $x = External.myCall(). AsJsonObject()
      LET $value = Array.GetValue($x.group[0]. AsJsonObject(), "item1", "a", "item2")
      RETURN Approve()
      WHEN $value. AsString() == "a1"

      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"