Delen via


Referentie voor fraudetaal

Microsoft Dynamics 365 heeft een eigen rijke en expressieve taal die u helpt bij het definiëren en uitdrukken van uw fraudestrategie. Deze taal heeft veel overeenkomsten met C# en SQL en is bedoeld om u de kracht en flexibiliteit te geven die u nodig hebt om fraude te bestrijden in uw unieke bedrijfsscenario's.

U kunt deze taal nu gebruiken om regels en velociteit te definiëren. Zie Regels beheren en Velociteitscontroles uitvoeren voor meer informatie.

Deze referentiegids voor fraudetalen bevat de volledige lijst met operators, functies en instructies waaruit de taal bestaat:

Overzichten

Syntaxis van instructies Description Voorbeeld
LET <VariableName> = <Expression>

Met een LET-instructie kunt u een nieuwe variabele definiëren. Het bereik van de variabele is de regel of snelheidsset waarin de variabele is gedefinieerd. Variabelennamen moeten vooraf worden voorzien van een dollarteken ($).

Meer informatie vindt u in Uw eigen variabelen definiëren.

U kunt elk aantal LET-instructies gebruiken in de sectie Voorwaarde en de componenten van alle regeltypen en snelheidssets.

LET $fullName = @"user.firstName" + @"user.lastName"

OBSERVEREN

OBSERVE <ObservationFunction>(<KeyValuePairs>)
[ WHEN <BooleanExpression>

]

Een OBSERVE-instructie beëindigt de uitvoering van regels niet met een beslissing. Er worden alleen sleutelwaardeparen gelogd in de API-respons of traceerlogboeken. Volgende regels en regelcomponenten worden uitgevoerd totdat een RETURN-instructie wordt bereikt.

Een OBSERVE-instructie moet worden gevolgd door een of meer observatiefuncties.

Als een WHEN-component aanwezig is en wordt geëvalueerd als Onwaar, wordt de OBSERVE-instructie niet in het logboek opgenomen.

Er kan maximaal één worden gebruikt voor elke component in de volgende regels:

  • Aankoopregels
  • Aangepaste beoordelingsregels
  • Accountbeveiligingsregels

    OBSERVE Output(reason="high score")

    OBSERVE TRACE(ip=@"device.ipAddress") WHEN Model.Risk(). Score > 400

    RETURN <DecisionFunction>
    [ ,<ObservationFunction>(<KeyValuePairs>) ]
    [ WHEN <BooleanExpression> ]

    Met een RETURN-instructie wordt de uitvoering van regels beëindigd met een beslissing.

    In de instructie moet een geldige beslissingsfunctie worden opgegeven: Approve(), Reject(), Challenge() of Review().

    De instructie kan ook een of meer observatiefuncties bevatten: Output() of Trace()

    Ten slotte kan de instructie een WHEN-component bevatten om de voorwaarde op te geven voor het uitvoeren van de voorafgaande componenten.

    Er kan maximaal één worden gebruikt per component in de volgende regels:

    • Aankoopregels
    • Aangepaste beoordelingsregels
    • Accountbeveiligingsregels

      RETURN Review()
      WHEN IsWatch("Device Support List", @"deviceAttributes.deviceId") ||
      IsWatch("Payment Support List", @"paymentInstrumentList.merchantPaymentInstrumentId")

      RETURN Reject(), Trace(ip=@"device.ipAddress") WHEN Model.Risk(). Score > 400

      ROUTETO QUEUE <QueueName>
      [ WHEN <BooleanExpression> ]

      De ROUTETO-opdracht wordt gebruikt in routeringsregels om beoordelingen door te sturen naar wachtrijen voor casebeheer.

      De optionele WHEN-component kan worden gebruikt om de voorwaarden te beschrijven waaronder de opdracht de route moet uitvoeren.

      Er kan maximaal één worden gebruikt per component in routeringsregels.

      ROUTETO Queue("High Value Queue")
      WHEN @"purchase.request.totalAmount"> 500
      SELECT <AggregationFunction>
      AS <VelocityName>
      FROM <AssesmentType>
      GROUPBY <GroupExpression>
      [ WHEN <BooleanExpression> ]

      Een SELECT-instructie wordt gebruikt in snelheidssets om een snelheid te definiëren. Hiermee moet een aggregatiefunctie worden opgegeven.

      De vereist AS-component wordt gebruikt om een alias voor uw snelheid te maken. Vervolgens kan naar deze alias worden verwezen vanuit de regels.

      De vereiste FROM-component wordt gebruikt om het beoordelingstype op te geven waarmee een snelheid wordt geobserveerd. Geldige waarden zijn Purchase, AccountLogin, AccountCreation, Chargeback, BankEvent en CustomAssessment.

      Met de vereiste GROUPBY-component wordt een eigenschap of expressie opgegeven. Alle gebeurtenissen die worden geëvalueerd aan de hand van dezelfde waarde in de instructie GROUPBY, worden gecombineerd om de samenvoeging te berekenen waarom is gevraagd in de SELECT-instructie.

      Als u bijvoorbeeld een samenvoeging voor elke gebruiker wilt berekenen, gebruikt u GROUPBY @"user.userId".

      De optionele WHEN-component specificeert een Booleaanse expressie die bepaalt of de beoordeling die verwerkt wordt, opgenomen moet worden in de snelheid die gedefinieerd wordt.

      Er kan maximaal één per component worden gebruikt in snelheidssets.

      SELECT Count() AS _Purchase_Rejections_Per_Email
      FROM Purchase
      WHEN @"ruleEvaluation.decision" == "Reject"
      GROUPBY @"user.email"

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

      WHEN <BooleanExpression>

      De WHEN-instructie is hetzelfde als de WHEN-componenten in de andere instructies, maar staat alleen in de sectie Voorwaarde van regels en snelheidssets. Hiermee wordt een Booleaanse voorwaarde opgegeven die bepaalt of de gehele regel, de snelheidsset of routeringsregel moet worden uitgevoerd.

      Er kan maximaal één worden gebruikt in de sectie Voorwaarde van alle regeltypen en snelheidssets.

      WHEN Model.Risk(). Score > 400
      DO <Actiefunctie> Een DO-instructie wordt gebruikt om een bepaalde actie uit te voeren aan het einde van de regeluitvoering. Deze instructie kan alleen worden gebruikt in acties na beslissing DO SetResponse(name = @”firstname” + @”lastname”)

      Verwijzen naar kenmerken en variabelen

      Met de @-operator (at-sign) kunt u verwijzen naar een kenmerk van de huidige gebeurtenis.

      Variabel Beschrijving Voorbeeld
      @

      Een @-teken wordt gebruikt om te verwijzen naar een kenmerk van de binnenkomende gebeurtenis. Het kenmerk kan worden verzonden als onderdeel van de nettolading van de aanvraag of Microsoft Dynamics 365 Fraudebeveiliging kan dit genereren.

      Geef na het @-teken het volledige pad op van het kenmerk waarnaar u wilt verwijzen. Plaats het pad tussen aanhalingstekens (bijvoorbeeld @"address.city").

      Als het kenmerk waarnaar wordt verwezen, geen deel uitmaakt van de nettolading van de gebeurtenis, wordt de standaardwaarde voor dat type geretourneerd: 0,0 voor dubbele waarden, een lege tekenreeks voor tekenreeksen, enzovoort.

      Het type kenmerk wordt afgeleid van de context waarin het kenmerk wordt gebruikt. Als er onvoldoende context is opgegeven, wordt standaard het type Tekenreeks gebruikt.

      Zie Type-interferentie van kenmerken voor informatie over type-interferentie.

      @"address.city"

      $ Een dollarteken ($) wordt gebruikt om te verwijzen naar een variabele die is gedefinieerd in een LET-instructie . Meer informatie vindt u in Uw eigen variabelen definiëren. $fullName
      @a[x]

      Deze variabele wordt gebruikt om matrixvariabelen te indexeren.

      Als de nettolading van de aanvraag voor een beoordeling een matrix met items bevat, kunt u de afzonderlijke elementen van de matrix openen met de volgende syntaxis: @"productList[0]".

      Voor toegang tot een kenmerk van dat element gebruikt u de volgende syntaxis: @"productList[0]"

      @"productList[0].productId"

      @"paymentInstrumentList[3].type"

      Bestaat

      Deze operator controleert of een variabele voorkomt in de nettolading van de gebeurtenis.

      Exists(String variable)

      Exists(@"user.email")
      Request.CorrelationId() Deze functie verwijst naar de unieke correlatie-id van de gebeurtenis die wordt beoordeeld. U kunt deze functie gebruiken om toegang te krijgen tot de correlatie-id van een gebeurtenis in de regelervaring en deze als parameter of header door te geven aan een externe aanroep. External.MyExternalCall(Request.CorrelationId())
      .GetDiagnostics() Deze functie kan worden gebruikt om belangrijke diagnostische en foutopsporingsinformatie te ontdekken van een externe aanroep of een extern beoordelingsrespons. Voor een externe aanroep bevat het object Diagnostics de Nettolading van aanvraag, Eindpunt, Http-statuscode, Foutbericht en Latentie. Eindpunt is niet beschikbaar in het object Diagnostic voor een extern beoordelingsrespons. Elk van deze velden kan worden gebruikt in de regels zodra het diagnostische object is gemaakt met behulp van de bijbehorende extensiemethode". GetDiagnostics()"

      LET $extResponse = Extern. myCall(@"device.ipAddress")

      LET $extResponseDiagnostics = $extResponse.GetDiagnostics()

      OBSERVE-uitvoer (Diagnostics = $extResponseDiagnostics )

      WHEN $extResponseDiagnostics. HttpStatusCode != 200

      Uw eigen variabelen definiëren

      Met het LET-trefwoord kunt u een variabele definiëren. Naar die variabele kan vervolgens op andere plaatsen in de regel worden verwezen. Alle variabelen moeten worden voorafgegaan door een dollarteken ($). U kunt bijvoorbeeld de volgende variabele opgeven.

      LET $fullName = @"user.firstName" + @"user.lastName"
      

      Variabelen die worden opgegeven in een LET-instructie, kunnen alleen worden gebruikt binnen het bereik van de regel of de velociteitset waarin de instructie is gedefinieerd.

      Als u bijvoorbeeld wilt verwijzen naar de variabele uit het vorige voorbeeld, kunt u de volgende instructie schrijven.

      WHEN $fullName == "Kayla Goderich"
      

      Notitie

      Nadat een variabele is gedefinieerd, kan deze niet met een nieuwe waarde worden bijgewerkt.

      Functies voor algemene variabelen

      U kunt globale variabelenfuncties gebruiken om variabelen in regels in te stellen en op te halen. Zodra globale variabelen zijn ingesteld, kunnen ze worden geopend binnen een beslissingsregel, snelheid, routeringsregels en acties na beslissingen binnen dezelfde omgeving of onderliggende omgevingen. De gebruiksfuncties voor fraudebeveiliging in de hiërarchie worden vermeld in de volgende tabel. Als u bijvoorbeeld globale variabelen instelt in een regel in de hoofdomgeving, kan Fraudebeveiliging de waarde binnen elke andere regel in dezelfde evaluatie in dezelfde omgeving of onderliggende omgevingen ophalen.

      Operator Description Voorbeeld
      SetVariables(k=v) Deze functie kan worden gebruikt om sleutel-waardeparen in te stellen, dat wil gezegd, waarden instellen op variabelen. Do SetVariables(key= 123, email=@"user.email")
      GetVariable("k") Deze functie kan worden gebruikt om toegang te krijgen tot de variabelen die al zijn ingesteld. In gevallen waarin we toegang krijgen tot variabelen die nooit worden ingesteld, wordt een standaardwaarde geretourneerd.

      GetVariable("key").AsInt()

      GetVariable("email").AsString()

      GetVariable("key").AsDouble()

      GetVariable("key").AsBool()

      GetVariable("key").AsDateTime()

      GetVariable("key").AsJsonObject()

      GetVariable("key").AsJsonArray()

      Notitie

      Globale variabelen zijn specifiek voor één transactie voor een bepaalde evaluatie. Een variabele die in één transactie is ingesteld, kan niet worden opgehaald uit een andere transactie of een andere evaluatie.

      Beslissingsfuncties

      Beslissingsfuncties worden in regels gebruikt om een beslissing op te geven.

      Beslissingstype Beschrijving Voorbeeld
      Approve()

      Dit type geeft een beslissing van Goedkeuren op. Dit kan een reden voor de goedkeuring en nog een ondersteunend bericht bevatten.

      Overloads:

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

      RETURN Approve()

      RETURN Approve("on safe list")

      RETURN Approve ("on safe list", "do not escalate")

      Reject()

      Dit type geeft een beslissing van Afwijzen op. Dit kan een reden voor de afwijzing en nog een ondersteunend bericht bevatten.

      Overloads:

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

      RETURN Reject()

      RETURN Reject("embargo country")

      RETURN Reject("embargo country", "do not escalate")

      Review()

      Dit type geeft een beslissing van Beoordelen op. Dit kan een reden voor de beoordeling en nog een ondersteunend bericht bevatten.

      Overloads:

      • 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)

      Met dit type geeft u een beslissing en een type voor Betwisten op. Dit kan ook een reden voor het betwisten en nog een ondersteunend bericht bevatten.

      Overloads:

      • 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")

      Observatiefuncties

      Met observatiefuncties kunnen gegevens uit de huidige context worden gehaald en ergens anders worden geschreven.

      Resultaattype Beschrijving Voorbeeld
      Output(k=v) Deze functie kan worden gebruikt om sleutel-waardeparen door te geven aan de sectie CustomProperties van het API-antwoord. Het sleutel-waardepaar wordt genest binnen een object waarvan de naam gelijk is aan de naam van de component die de Output()-instructie bevat. Output(key="test", email=@"user.email", countryRegion=Geo.CountryRegion(@"device.ipAddress"))
      Trace(k=v) Deze functie kan worden gebruikt om een traceringsgebeurtenis te activeren en om sleutel-waardeparen te verzenden naar de FraudProtection.Trace.Rule Naamruimte voor gebeurtenis traceren. Trace(key="Manual Review", ip=@"device.ipAddress")
      SetResponse(String sectionName, k=v) Deze functie kan worden gebruikt om sleutel-waardeparen door te geven aan de sectie CustomProperties van het API-antwoord. De sectionName is een optionele parameter die kan worden overgeslagen. Deze functie kan alleen worden gebruikt binnen acties na beslissingen; deze is niet beschikbaar in beslissingsregel

      SetResponse("Scores", bot = Model.Bot(@deviceContextId), risk=Model.Risk())

      SetResponse(test=”123”)

      Response.Decision() Deze functie verwijst naar de beslissing voor de huidige beoordeling die wordt beoordeeld. Response.Decision() == "Goedkeuren"

      Aggregatiefuncties

      Functie Description voorbeeld
      Count() Met deze functie wordt het aantal keren geretourneerd dat een gebeurtenis heeft plaatsgevonden. SELECT Count() AS numPurchases
      DistinctCount(String key) Met deze functie wordt het aantal verschillende waarden geretourneerd voor de opgegeven eigenschap. Als de opgegeven eigenschap null of leeg is voor een binnenkomende gebeurtenis, draagt de gebeurtenis niet bij aan de aggregatie. SELECT DistinctCount(@"device.ipAddress") AS distinctIPs
      Sum(Double value) Met deze functie wordt het aantal waarden geretourneerd voor een opgegeven numerieke eigenschap. SELECT Sum(@"totalAmount") AS totalSpending

      Logische operators

      Operator Description Voorbeeld
      and (&&) Logische en

      Model.Risk(). Score > 500 && Model.Risk(). Score < 800

      Model.Risk(). Score > 500 en Model.Risk(). Score < 800

      or (||) Logische of

      @"email.isEmailUsername" == false || @"email.isEmailValidated" == false

      @"email.isEmailUsername" == false or @"email.isEmailValidated" == false

      not Logische negatie @"email.isEmailUsername" not(!) @"email.isEmailUsername"

      Vergelijkingsoperators

      Fraud Protection ondersteunt alle standaard vergelijkings- en gelijkheids-bewerkingen van C#. Deze tabel bevat enkele voorbeelden van operatoren die nuttig kunnen zijn. Als u deze operatoren toepast op tekenreeksen, resulteert dit in lexicografische vergelijkingen.

      Operator Description Voorbeeld
      == Deze operator controleert op gelijkheid. @"user.countryRegion" == @"shippingAddress.countryRegion"
      != Deze operator controleer op ongelijkheid. @"user.countryRegion" != @"shippingAddress.countryRegion"
      > Deze operator controleert of de eerste waarde groter is dan de tweede waarde. Model.Risk(). Score > 500
      < Deze operator controleert of de eerste waarde kleiner is dan de tweede waarde. Model.Risk(). Score < 500
      >= Deze operator controleert of de eerste waarde groter is dan of gelijk is aan de tweede waarde. Model.Risk(). Score >= 500
      <= Deze operator controleert of de eerste waarde kleiner is dan of gelijk is aan de tweede waarde. Model.Risk(). Score <= 500
      X ? Y : Z Met deze operator wordt gecontroleerd of voorwaarde X waar is of niet. Als dit waar is, wordt de instructie Y uitgevoerd en wordt het resultaat ervan geretourneerd. Anders wordt instructie Z uitgevoerd en wordt het resultaat ervan geretourneerd. Meerdere logische controles kunnen ook worden gecombineerd met vierkante haken om een geneste IF <> THEN <> ELSE-logica <> te definiëren LET $riskbucket = Model.Risk(). Score > 500? "Hoog" : (Model.Risk(). Score > 300? "Gemiddeld" : "Laag")

      Wiskundige functies

      Fraud Protection ondersteunt alle standaard wiskundige methoden en rekenkundige operators van C#. Deze tabel bevat enkele voorbeelden van methoden die nuttig kunnen zijn.

      Operator Description Voorbeeld
      Math.Min(Double value1, Double value2) Deze operator berekent de minimumwaarde van twee waarden. Math.Min(Model.Risk(). Score, Model.Bot(@"deviceFingerprinting.id"). Score)
      Math.Max(Double value1, Double value2) Deze operator berekent de maximumwaarde van twee waarden. Math.Max(Model.Risk(). Score, Model.Bot(@"deviceFingerprinting.id"). Score)
      RandomInt(Integer min, Integer max) Deze operator retourneert een willekeurig geheel getal in het opgegeven bereik, inclusief de minimumwaarde en exclusief de maximumwaarde. RandomInt(0, 100)

      DateTime-operators

      Fraud Protection ondersteunt alle standaard DateTime-eigenschappen, -methoden en -operators van C#. Deze tabel bevat enkele voorbeelden van functies en eigenschappen die nuttig kunnen zijn.

      Operator Description Voorbeeld
      UtcNow Deze operator haalt een DateTime-object op dat is ingesteld op de huidige datum en tijd van de computer, uitgedrukt in UTC. DateTime.UtcNow
      Vandaag Deze operator haalt een object op dat is ingesteld op de huidige datum, waarbij het tijdonderdeel is ingesteld op 00:00:00. DateTime.Today
      Aftrekken Deze operator retourneert een nieuwe datum/tijd door een opgegeven datum en tijd af te trekken van een invoerdatum/datum/tijd. DateTime.UtcNow.Subtract(@var1. ToDateTime())
      DaysSince(DateTime date) Deze operator retourneert een geheel getal dat staat voor het aantal dagen dat is verstreken tussen de opgegeven waarde voor DateTime en de huidige datum, uitgedrukt als UTC (Coordinated Universal Time). DaysSince(@"user.CreationDate")
      Jaar Deze operator haalt het jaaronderdeel op van de datum die door dit exemplaar wordt aangegeven. @"user.creationDate".Year
      Datum Deze operator haalt een nieuw object op dat dezelfde datum heeft als dit exemplaar, maar met de tijdwaarde 00:00:00 (middernacht). @"user.creationDate".Date

      Typecasting-operators

      Voor informatie over type-interferentie raadpleegt u de sectie Type-interferentie van kenmerken, verderop in dit artikel.

      Operator Description Voorbeeld
      Convert.ToDateTime

      Deze operator converteert de tekenreeks naar datum/tijd en converteert datum/tijd naar een tekenreeks met de opgegeven indeling.

      Convert.ToDateTime(@"user.creationDate").ToString("yyyy-MM-dd")
      Convert.ToInt32

      Met deze operator wordt de opgegeven waarde geconverteerd naar Int32.

      Convert.ToInt32(@var)
      Convert.ToDouble

      Met deze operator wordt de opgegeven waarde geconverteerd naar Double.

      Convert.ToDouble(@var)

      Tekenreeksfuncties

      De standaardreeksklasse van C# wordt ondersteund door Fraud Protection. Deze tabel bevat enkele voorbeelden van functies die nuttig kunnen zijn.

      Operator Description Voorbeeld
      StartsWith() Deze operator controleert of een tekenreeks begint met een opgegeven voorvoegsel. @"user.phoneNumber".StartsWith("1-")
      EndsWith() Deze operator controleert of een tekenreeks eindigt op een opgegeven achtervoegsel. @"user.email".EndsWith("@contoso.com")
      IsNumeric() Deze operator controleert of een tekenreeks een numerieke waarde is. @"user.email".IsNumeric()
      Length

      Deze operator retourneert het aantal tekens in de tekenreeks.

      @"user.username".Length
      ToDateTime() Met deze operator wordt een tekenreeks omgezet naar een DateTime-object. @"user.creationDate".ToDateTime()
      ToDouble() Met deze operator wordt een tekenreeks omgezet naar een Double-object. @"productList.purchasePrice".ToDouble()
      ToInt32() Met deze operator wordt een tekenreeks omgezet naar een Int32-object. @"zipcode".ToInt32()
      ToUpper() Deze operator retourneert een kopie van deze tekenreeks die is geconverteerd naar hoofdletters. @"user.username". ToUpper()
      ToLower() Deze operator retourneert een kopie van deze tekenreeks die is geconverteerd naar kleine letters. @"user.username". ToLower()
      IndexOf() Deze operator rapporteert de op nul gebaseerde index van het eerste exemplaar van een bepaalde subtekenreeks binnen de opgegeven tekenreeks. @"user.username". IndexOf("@")
      LastIndexOf() Deze operator rapporteert de op nul gebaseerde index van het laatste exemplaar van een bepaalde subtekenreeks binnen de opgegeven tekenreeks. @"user.username". LastIndexOf("@")
      Subtekenreeks() Deze operator retourneert een subtekenreeks die begint met een index op basis van nul binnen een tekenreeks, met een tweede optionele parameter die de lengte van de gewenste subtekenreeks aangeeft @"user.username". Subtekenreeks (0,5)
      IsNullOrEmpty() Deze operator retourneert als de opgegeven tekenreeks null of leeg is. Retourneert anders false. @"user.username". IsNullOrEmpty()
      IgnoreCaseEquals() Deze operator retourneert true als de twee tekenreeksen gelijk zijn, ongeacht hoofdletterverschillen. Retourneert anders false. @"user.username". IgnoreCaseEquals(@"user.email")
      Contains() Deze operator controleert of een tekenreeks een andere tekenreeks bevat. @"productList.productName".Contains("Xbox")
      ContainsOnly() Deze operator controleert of een tekenreeks alleen de opgegeven tekensets bevat. @"zipcode".ContainsOnly(CharSet.Numeric)
      ContainsAll() Deze operator controleert of een tekenreeks alle opgegeven tekensets bevat. @"postcode". ContainsAll(CharSet.Numeric|CharSet.Afbreekstreepje)
      ContainsAny() Deze operator controleert of een tekenreeks een van de opgegeven tekensets bevat. @"postcode". ContainsAny(CharSet.Numeric|CharSet.Afbreekstreepje)

      Een tekenset gebruiken in ContainsOnly, ContainsAll en ContainsAny

      De volgende typen tekens kunnen worden gebruikt in ContainsOnly, ContainsAll en ContainsAny.

      Type teken Description
      Alfabetisch a-z, A-Z
      Apostrof '
      @-teken @
      Backslash \
      Door komma's gescheiden ,
      Hyphen -
      Numeriek 0-9
      Periode .
      Slash /
      Onderstrepingsteken _
      Witruimte Eén spatie

      Detectiefuncties voor wartaal

      Deze functies helpen fraude te voorkomen door snel en efficiënt te detecteren of belangrijke gebruikersinvoervelden (zoals namen en adressen) gibberish bevatten.

      Functie Description Voorbeeld
      GetPattern(String).maxConsonants Maximum aantal aaneengesloten consonanten in een tekenreeks die niet worden gescheiden door een klinker. MaxConsonants voor de tekenreeks '01gggyturah' is bijvoorbeeld 5. GetPattern(@"user.email").maxConsonants
      GetPattern(String).gibberScore In een op ML gebaseerde score tussen 0 en 1; betekent 0 dat het waarschijnlijk wartaal is en betekent 1 minst waarschijnlijk dat het wartaal is. GetPattern(@"user.email").gibberScore

      Notitie

      Het detectiemodel voor wartaal is gebaseerd op de frequentie van twee opeenvolgende alfanumerieke tekens in openbaar beschikbare Engelse documenten. Er wordt aangenomen dat in openbare documenten vaker twee opeenvolgende alfanumerieke tekens voorkomen, en dat het minder waarschijnlijk is dat het om wartaal gaat. Het model moet redelijke scores opleveren voor Engelse teksten, en kan worden gebruikt om te detecteren of de namen of adressen wartaal bevatten. Het model is echter mogelijk niet geschikt voor afkortingen, zoals een korte vorm voor staten (AZ, TX, enz.) en kan ook niet worden gebruikt om namen of adressen te valideren. Tenslotte is het model niet getest op niet-Engelstalige teksten.

      Patroondetectiefuncties

      Deze functies helpen fraude te voorkomen door snel en efficiënt te detecteren of belangrijke gebruikersinvoervelden (zoals namen en adressen) gibberish bevatten.

      Functie Description Voorbeeld
      Patterns.IsRegexMatch(tekenreekspatroon, tekenreeksbron) Voert een reguliere expressie (regex) overeenkomst van tekenreekspatroon uit op een tekenreeksbron. Het resultaat is een Booleaanse waarde, dat wil zeggen waar (wat aangeeft dat de opgegeven tekenreeks overeenkomt met het patroon) of onwaar (waarmee geen overeenkomst wordt aangegeven) Patterns.IsRegexMatch("^.com$", @ "user.email") Patterns.IsRegexMatch( "^.[aAeEiIoOuU]+.*$", @ "user.firstname")

      Notitie

      • Het tekenreekspatroon moet een constante invoer zijn.
      • De functie retourneert onwaar (het standaardresultaat) als de evaluatietijd langer is dan 10 milliseconden.
      • Alle beperkingen die nonBacktracking niet ondersteunen, zijn ook van toepassing op de functie IsRegexMatch.

      Modelfuncties

      Modelfuncties voeren de verschillende fraudemodellen uit en zijn handig wanneer uw evaluatie niet automatisch een of meer fraudemodellen uitvoert. Als modelfuncties worden uitgevoerd, vindt u informatie over het model dat tijdens een regelevaluatie wordt uitgevoerd via de API-aanroep voor fraudebeoordeling. Vervolgens krijgt de regel toegang tot het modelresultaat, inclusief score, redenen en meer. Dit kan worden gebruikt voor verdere verwerking van regels en voor het nemen van beslissingen.

      Modeltype Description Voorbeeld
      Risico Beoordeelt hoe groot de kans is dat een sessie risicovol is. Model.Risk()
      Bot Beoordeelt hoe groot de kans is dat een sessie door een bot wordt geïnitieerd. Geef de id van een apparaatcontext op die naar de apparaatvingerafdrukoplossing van Fraud Protection is verzonden. Model.Bot(@deviceContextId)

      Geofuncties

      Met geofuncties wordt een IP-adres omgezet in een geografisch adres. Geofuncties kunnen worden opgeroepen in regels met behulp van IP´s die onderdeel zijn van transactiepayload of verzameld door Fraud Protection met behulp van apparaatvingerafdruk. Geofuncties kunnen niet worden aangeroepen voor willekeurige IP-waarden.

      Operator Description Voorbeeld
      Geo.RegionCode(String ip)

      Met deze operator wordt een IPv4-adres omgezet naar de Amerikaanse regiocode (dat wil zeggen de afkorting voor de naam van de Amerikaanse staat of regio).

      Bijvoorbeeld, voor een IP-adres in de staat Washington wordt 'WA' geretourneerd.

      Geo.RegionCode(@"device.ipAddress")
      Geo.Region(String ip)

      Met deze operator wordt een IPv4-adres omgezet naar de Amerikaanse regio (dat wil zeggen de naam van de Amerikaanse staat of regio).

      Bijvoorbeeld, voor een IP-adres in de staat Washington wordt 'Washington' geretourneerd.

      Geo.Region(@"device.ipAddress")
      Geo.CountryCode(String ip)

      Met deze operator wordt een IPv4-adres omgezet naar de land- of regiocode.

      Bijvoorbeeld, voor een IP-adres in Australië wordt 'AU' geretourneerd.

      Geo.CountryCode(@"device.ipAddress")
      Geo.CountryRegion(String ip)

      Met deze operator wordt een IP-adres omgezet naar een regionaam.

      Bijvoorbeeld, voor een IP-adres in Australië wordt 'Australië' geretourneerd.

      Geo.CountryRegion(@"device.ipAddress")
      Geo.City(String ip)

      Met deze operator wordt een IPv4-adres omgezet naar een plaatsnaam.

      Bijvoorbeeld, voor een IP-adres in New York City wordt 'New York City' geretourneerd.

      Geo.City(@"device.ipAddress")
      Geo.MarketCode(String ip)

      Met deze operator wordt een IPv4-adres omgezet naar de marktcode van het IP-adres.

      Bijvoorbeeld, voor een IP-adres uit Canada wordt 'NA' (Noord-Amerika) geretourneerd.

      Geo.MarketCode(@"device.ipAddress")

      Functies voor apparaatkenmerken

      Operator Description Voorbeeld
      Device.GetFullAttributes(String sessionId) Retourneert een volledige set apparaatkenmerken voor de opgegeven apparaatvingersessie. Zie Apparaatving instellen om de volledige set apparaatkenmerken weer te geven Device.GetFullAttributes(@"deviceFingerprinting.id")
      Device.GetAttributes(String sessionId) Retourneert een kleinere subset van apparaatkenmerken voor de opgegeven apparaatvingersessie. De subset is een lijst die wordt samengesteld door Fraudebeveiliging en bevat de meest gebruikte kenmerken. Device.GetAttributes(@"deviceFingerprinting.id")
      Device.GetSelectedAttributes(String sessionId, String attributeName) Retourneert maximaal 20 apparaatkenmerken voor de opgegeven apparaatvingervingssessie. De lijst met gewenste kenmerken moet worden opgegeven als door komma's gescheiden parameters Device.GetSelectedAttributes(@"deviceFingerprinting.id", "deviceAsn","deviceCountryCode")
      Device.GetSpeedOfTravel(String sessionId) Retourneert de maximale reissnelheid van een apparaat in mijlen per uur. Fraudebeveiliging bepaalt de maximale snelheid door de laatste vijf opeenvolgende vingerafdruksessies te nemen en de snelheid van het apparaat van sessie naar sessie te berekenen, waardoor het maximum wordt geretourneerd. Het apparaat wordt geïdentificeerd via sessies met behulp van de cookie-id. Device.GetSpeedOfTravel(@"deviceFingerprinting.id")

      Functies voor zoeken naar BIN

      Bin Lookup-functies bieden informatie over de betaalkaartrekening (bijvoorbeeld kaartnetwerk, kaarttype, landcode kaart, kaartcategorie) op basis van bankidentificatienummer (BIN). Gegevens voor BIN Lookup zijn afkomstig van toonaangevende BIN-gegevensproviders en vervolgens gecureerd door Fraudebeveiliging.

      Operator Description Voorbeeld
      BIN.Lookup(String BIN).cardNetwork

      Deze functie zoekt BIN op en retourneert kaartnetwerk (bijvoorbeeld Visa, Geheugenkaart).

      BIN.Lookup(@"card.bin").cardNetwork
      BIN.Lookup(String BIN).cardType

      Met deze operator wordt het BIN opgezocht en het kaarttype (bijvoorbeeld betaalkaart, creditcard) geretourneerd.

      BIN.Lookup(@"card.bin").cardType
      BIN.Lookup(String BIN).issuer

      Met deze operator wordt het BIN opgezocht en de uitgevende organisatie geretourneerd.

      BIN.Lookup(@"card.bin").issuer
      BIN.Lookup(String BIN).countryCode

      Met deze operator wordt het BIN opgezocht en wordt de uit twee letters bestande ISO-landcode van de kaart geretourneerd.

      BIN.Lookup(@"card.bin").countryCode
      VUILNISBAK. Lookup(String BIN).cardCategory

      Deze operator zoekt BIN op en retourneert kaartcategorie (bijvoorbeeld Prepaid, Corporate, Rewards).

      VUILNISBAK. Lookup(@"card.bin").cardCategory
      BIN.Lookup(String BIN).error

      Deze operator zoekt BIN op en retourneert een foutbericht als de BIN niet kan worden gevonden.

      BIN.Lookup(@"card.bin").error

      Lijstfuncties

      Met Fraud Protection kunt u aangepaste lijsten uploaden en naar deze lijsten verwijzen in de taal. Zie Lijsten beheren voor informatie over het uploaden van deze lijsten. Zie de sectie Lijsten gebruiken in regels, verderop in dit artikel, voor informatie over het gebruik van lijsten in regels.

      Operator Description Voorbeeld
      ContainsKey(
      String listName,
      String columnName,
      String key)
      Deze operator controleert of een sleutel voorkomt in de opgegeven kolom in een vooraf gedefinieerde lijst in Fraud Protection.

      In het voorbeeld in de volgende kolom wordt gecontroleerd of de kolom 'E-mails' in de lijst 'E-mailondersteuningslijst' de variabele @'user.email' bevat.

      ContainsKey("E-mailondersteuningslijst", "E-mails", @"user.email")
      Lookup(
      String listName,
      String keyColName,
      String valueColName)
      Met deze operator wordt de waarde van een sleutel in een lijst in Fraud Protection opgezocht. De naam van de kolom die de sleutel bevat en de naam van de kolom die de waarde bevat, moeten worden opgegeven.

      De waarde wordt altijd geretourneerd als tekenreeks. Als de sleutel niet wordt gevonden en er geen parameter DefaultValue is opgegeven, wordt 'Unknown' geretourneerd.

      In het voorbeeld in de volgende kolom wordt gezocht naar de waarde van de variabele @'user.email' in de kolom E-mailberichten van de lijst met e-mailondersteuning. Als er een overeenkomst wordt gevonden, retourneert de functie de waarde van de kolom Status uit de overeenkomende rij in de lijst. Als er geen overeenkomst wordt gevonden, retourneert de functie 0.

      Lookup("E-mailondersteuningslijst", "E-mails", @"user.email", "Status",0)
      In Deze operator controleert of een sleutel voorkomt in een door komma's gescheiden lijst met waarden. In(@"user.countryRegion", "US, MX, CA")
      InSupportList Met deze operator wordt gecontroleerd of een kenmerk op een ondersteuningslijst staat. InSupportList('E-mailondersteuningslijst', @"user.email")
      IsSafe Met deze operator wordt gecontroleerd of een entiteit is gemarkeerd als Veilig in een ondersteuningslijst. IsSafe('E-mailondersteuningslijst', @"user.email")
      IsBlock Met deze operator wordt gecontroleerd of een entiteit is gemarkeerd als Blokkeren in een ondersteuningslijst. IsBlock('E-mailondersteuningslijst', @"user.email")
      IsWatch Met deze operator wordt gecontroleerd of een entiteit is gemarkeerd als Controle op een ondersteuningslijst. IsWatch('E-mailondersteuningslijst', @"user.email")

      Lijsten in regels gebruiken

      U kunt de operators ContainsKey en Lookup gebruiken om te verwijzen naar lijsten die u naar Fraud Protection hebt geüpload. Zie voor meer informatie over lijsten Lijsten beheren.

      ContainsKey

      Als u wilt controleren of een van de lijsten een specifieke waarde bevat, gebruikt u de operator ContainsKey. Geef de lijstnaam, de kolom en de sleutel op die u wilt controleren.

      U uploadt bijvoorbeeld een lijst met één kolom met riskante e-mailadressen en noemt deze Riskante e-mailadressen.

      E-mailadres
      Kayla@contoso.com
      Jamie@bellowscollege.com
      Marie@atatum.com

      Vervolgens kunt u de volgende syntaxis gebruiken om alle transacties af te wijzen vanuit de riskante e-mailadressen in deze lijst.

      RETURN Reject("risky email") 
      WHEN ContainsKey("Risky email list", "Email", @"user.email")
      

      Met deze clausule wordt gecontroleerd of de kolom 'E-mail' in de lijst 'Riskante e-mailadressen' de sleutel @email bevat. Als dat zo is, wordt de transactie afgewezen.

      Zoekopdracht

      Voor lijsten met meerdere kolommen kunt u de operator Lookup gebruiken om de waarde van een kolom voor een specifieke sleutel te controleren.

      U maakt bijvoorbeeld een lijst met één kolom voor e-mailadressen en een andere kolom die de status van die e-mailadressen aangeeft. U noemt deze lijst E-maillijst.

      E-mailadres Status
      Kayla@contoso.com Riskant
      Jamie@bellowscollege.com Riskant
      Marie@atatum.com Riskant
      Camille@fabrikam.com Kluis
      Miguel@proseware.com Kluis
      Tyler@contoso.com Kluis

      Vervolgens kunt u de volgende syntaxis gebruiken om alle transacties af te wijzen die afkomstig zijn van de e-mailadressen in deze lijst en die de status Riskant hebben.

      RETURN Reject("risky email") 
      WHEN Lookup("Email List", "Email", @"user.email", "Status") == "Risky"
      

      Met deze clausule wordt gezocht naar de sleutel @"user.email" in de kolom 'E-mail' van de 'E-maillijst' en wordt gecontroleerd of de waarde in de kolom 'Status' Riskant is. Als dat zo is, wordt de transactie afgewezen.

      Als de sleutel @"user.email" niet in de lijst wordt gevonden, retourneert Fraud Protection de waarde 'Unknown'.

      U kunt ook uw eigen standaardwaarde als vijfde para meter opgeven. Zie de sectie Logische operators, eerder in dit artikel, voor meer informatie.

      De operator Lookup retourneert altijd een String-waarde. Als u deze waarde wilt omzetten naar een Int-, Double- of DateTime-waarde, gebruikt u een typecasting-operator.

      Externe oproepen, externe beoordelingen en snelheden gebruiken

      Interferentietype van kenmerken

      Variabeletypen worden afgeleid van de context waarin ze worden gebruikt. Hieronder volgen een aantal voorbeelden:

      • In de expressie WHEN @isEmailValidated wordt de variabele geïnterpreteerd als een Boole-waarde.
      • In de expressie Model.Risk(). Score > 500, de variabele wordt geïnterpreteerd als een dubbele waarde.
      • In de expressie @"user.creationDate".Year < DateTime.UtcNow.Year wordt de variabele geïnterpreteerd als een DateTime-waarde.

      Als er onvoldoende context is om het type van een variabele af te leiden, wordt het beschouwd als een String-waarde. Bijvoorbeeld in de expressie Model.Risk(). Score < Model.Bot(@"deviceFingerprinting.id"). Score, beide variabelen worden geïnterpreteerd als tekenreeksen.

      Als u het type van een niet-stringsvariabele wilt opgeven, gebruikt u een type cast-operator.

      JSON-matrices en -objecten

      FQL biedt ondersteuning voor de bouw van complexe gestructureerde objecten als lokale variabelen, die kunnen worden doorgegeven aan de externe aanroep of externe evaluatie in JSON-formulier. Matrices en objecten kunnen net als alle andere landinstellingen niet meer worden bewerkt wanneer ze zijn gemaakt.

      JSON-matrices

      Matrices worden gemaakt door expressies tussen een paar haakjes te plaatsen:

      LET $arr1 = [ "hello", "world" ]
      LET $arr2 = [
        "this is also an array",
        78.4,
        $arr1,
        @"user.email",
        External.MyExtcall()
      ]
      

      JSON-objecten

      Objecten worden met accolades gemaakt:

      LET $obj1 = { isObject: true }
      LET $obj2 = {
        numberField: 7,
        fieldIs: "string",
        internalObj: $obj1,
        inline: {
          innerInnerField: "hello"
        }
      }
      

      FQL-functies voor JSON-matrices en -objecten

      Syntaxis Beschrijving Voorbeeld
      myArr[0] U kunt deze syntaxis gebruiken om toegang te krijgen tot een specifiek matrixelement op basis van de index. myArr [0].property
      myArr [0][0]
      myArr [0][0].property
      myArr [0].property[0]
      myArr [0].property[0].property

      Waar myArr, in de bovenstaande voorbeelden, een matrix is. De bron van deze matrix kan het @@payloadProperty, externe evaluatieantwoord, reactie van externe aanroep, lokale variabele of een globale variabele zijn.

      Hier volgen enkele voorbeelden van het gebruik van de syntaxis op basis van verschillende matrixbronnen:

      • Matrixbron: Nettolading
      LET $sample = @@"myArr[0]".AsJsonArray()   
      RETURN Approve()   
      WHEN $sample[0].AsString() == "a"
      
      • Matrixbron: Lokale variabele
        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" 
        
      Syntaxis Beschrijving Voorbeeld
      Array.GetValue (TargetArray . AsJsonArray(), matchKey, matchValue, lookupKey) Met deze functie hebt u toegang tot het eerste matrixelement dat overeenkomt met een voorwaarde.

      Retourneert een waarde

      Array.GetValue(@@"payloadProperty". AsJsonArray(), matchKey, matchValue, lookupKey)
      Array.GetValues(TargetArray . AsJsonArray(), matchKey, matchValue) Met deze functie hebt u toegang tot een set matrixelementen die overeenkomen met een voorwaarde.

      Geeft als resultaat een matrix

      Array.GetValues(@@"payloadProperty". AsJsonArray(), matchKey, matchValue)

      Hier volgen enkele gedetailleerdere voorbeelden van het gebruik van de bovenstaande syntaxis op basis van verschillende matrixbronnen:

      Matrixbron Array.GetValue Array.GetValues
      Externe beoordelingen 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"
      Nettolading Voorbeeld van nettolading: {"group":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]}

      LET $sample = Array.GetValue(@@"group". AsJsonArray(), "item1", "a", "item2")
      RETURN Approve()WHEN $sample. AsString() == "a1"
      Voorbeeld van nettolading: { "group":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]}

      LET $sample = Array.GetValues(@@"group". AsJsonArray(), "item1", "a")
      RETURN Approve()

      WANNEER $sample[0].item2. AsString() == "a1"

      Algemene variabelen Hetzelfde nettoladingvoorbeeld gebruiken als hierboven

      Do SetVariables(Var=@"group")
      LET $group = GetVariable("Var"). AsJsonObject()
      LET $value = Array.GetValue($group, "item1", "a", "item2")
      RETURN Approve()
      WHEN $value. AsString() == "a1"
      Hetzelfde nettoladingvoorbeeld gebruiken als hierboven

      Do SetVariables(Var=@"group")
      LET $group = GetVariable("Var"). AsJsonObject()
      LET $arr = Array.GetValues($group. AsJsonArray(), "item1", "a")
      RETURN Approve()
      Externe aanroep

      Externe oproep (myCall) antwoord: {"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"

      Externe oproep (myCall) antwoord: {"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"

      Typecasting voor JSON-matrices en -objecten

      • Het volgende . Omdat<Type>() wordt ondersteund vanuit het JsonObject:

        • AsString()
        • AsInt()
        • AsDouble()
        • AsDateTime()
        • AsBool()
        • AsJsonArray()
        • AsJsonObject()
      • Wanneer u een van de twee hulpmethoden voor matrices, Array.GetValue of Arrays.GetValues gebruikt, moet u cast typen met behulp van . Als<type>(). Voorbeeld:

        LET $arr = {myArr:[{item1: "red", number: 45}, {item1: "blue", number: 56}, {item1: "green", number: 33}]}
        LET $sample = Array.GetValues($arr.myArr.AsJsonArray(), "item1", "blue")
        
      • Zodra u gegevens expliciet hebt geconverteerd naar een JSON-object of -matrix, kunt u dit gebruiken . Als<Type>() om naar een ander gegevenstype te casten, indien nodig. Voorbeeld:

        RETURN Approve()
        WHEN $sample[0].number.AsInt() == 56
        
      • Wanneer u @@gebruikt, worden de gegevens impliciet gecast naar een JSON-object. Als u het JSON-object vervolgens wilt converteren naar een ander gegevenstype, moet u gebruiken . Als<type>(). Voorbeeld:

        LET $sample = @@”user.addresses”.AsJsonArray()
        
      • Als u uitvoer wilt uitvoeren in een bepaalde indeling, moet u gebruiken . Als<type>(). Voorbeeld:

        LET $sample = @@”user.addresses”
        Output(abc = $sample.AsJsonArray())
        

      Notitie

      Best practices voor typecasting:

      • Typ altijd cast aan het einde van de ketting.
      • Als u het niet zeker weet, typt u altijd expliciet cast met behulp van . Als<type>(). Voorbeeld:
      LET $sample = External.myCall().data[0].Item1[0].AsJsonArray()
      
      Or
      
      LET $sample = @@”accommodations[0].rooms”.AsJsonArray()
      

      Functies die beschikbaar zijn in acties na beslissingen

      De volgende functies kunnen alleen worden gebruikt binnen Acties na beslissingen. Ze zijn niet beschikbaar in beslissingsregels

      Syntaxis Beschrijving Voorbeeld
      SetResponse(String sectionName, k=v) Deze functie kan worden gebruikt om sleutel-waardeparen door te geven aan de sectie CustomProperties van het API-antwoord. De sectionName is een optionele parameter die kan worden overgeslagen. SetResponse("Scores", bot = Model.Bot(@deviceContextId), risk=Model.Risk())

      SetResponse(test=”123”)

      Response.Decision() Deze functie verwijst naar de beslissing voor de huidige beoordeling die wordt beoordeeld. Response.Decision() == "Goedkeuren"