Del via


Vejledning til sprogreference

Microsoft Dynamics 365 har sit eget indholdsrige og udtryksrige sprog, som kan hjælpe dig med at definere og udtrykke din strategi mod svindel. Dette sprog har mange lighedspunkter med C# og SQL og er designet til at give dig den styrke og fleksibilitet, du skal bruge til at håndtere svindel i dine særlige forretningsscenarier.

Du kan bruge dette sprog i dag til at definere regler og hastigheder. Du kan få flere oplysninger under Administrere regler og Udføre hastighedskontroller.

Denne sprogreferencevejledning indeholder den fuldstændige liste over operatorer, funktioner og opgørelser, der udgør sproget:

Vejledningen dækker også andre artikler. Her er nogle eksempler:

Opgørelser

Sætningssyntaks Betegnelse Eksempel
LET <VariableName> = <Expression>

En LET-sætning bruges til at definere en ny variabel. Området for variablen er den regel eller det hastighedssæt, som den er defineret i. Variabelnavne skal have et præfiks med et dollartegn ($).

Yderligere oplysninger finder du i Definere dine egne variabler.

Et vilkårligt antal LET-sætninger kan bruges i afsnittet Betingelse og sætningerne for alle regeltyper og sæt af værdier.

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

OBSERVE

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

]

En OBSERVE-sætning afslutter ikke kørslen af reglen med beslutning. Det logfører blot nøgleværdipar til enten API-svaret eller sporingsloggen. De efterfølgende regler og regeludtog fortsætter med at køre, indtil en RETURN-opgørelse er nået.

En OBSERVE-sætning skal efterfølges af en eller flere observationsfunktioner.

Hvis en WHEN-sætning vises og evalueres til False, logføres OBSERVE-sætningen ikke.

Der kan maksimalt bruges én til hver sætning i følgende regler:

  • Køb regler
  • Brugerdefinerede vurderingsregler
  • Kontobeskyttelsesregler

    OBSERVE Output(reason="high score")

    OBSERVE TRACE(ip=@"device.ipAddress") WHEN @"riskscore"> 400

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

    En RETURN-sætning afslutter en regeludførelse med en beslutning.

    Sætningen skal angive en gyldig beslutningsfunktion: Approve(), Reject(), Challenge() eller Review().

    Sætningen kan også angive en eller flere observationsfunktioner: Output() eller Trace()

    Endelig kan opgørelsen indeholde et WHEN-udtryk for at angive den betingelse, som det skal gøre et af de foregående.

    Der kan maksimalt bruges én til hver sætning i følgende regler:

    • Køb regler
    • Brugerdefinerede vurderingsregler
    • Kontobeskyttelsesregler

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

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

      ROUTETO QUEUE <QueueName>
      [ WHEN <BooleanExpression> ]

      ROUTETO-kommandoen bruges i ruteregler til at dirigere tilsvarende vurderinger til sagsstyringskøer.

      Den valgfrie WHEN-sætning kan bruges til at beskrive de betingelser, som kommandoen skal udføre ruten under.

      Der kan maksimalt bruges én til hver sætning i ruteregler.

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

      En SELECT-sætning bruges i en hastighed til at definere en hastighed. Der skal angives en aggregeringsfunktion.

      Den krævede AS-sætning bruges til at oprette et alias til din hastighed. Der kan derefter refereres til dette alias fra regler.

      Den krævede FROM-sætning bruges til at angive en vurdering, der skal observeres en hastighed for. Gyldige værdier er Purchase, AccountLogin, AccountCreation, Chargeback, BankEvent og CustomAssessment.

      Den krævede GROUPBY-sætning angiver en egenskab eller et udtryk. Alle hændelser, der evalueres til den samme værdi i GROUPBY-sætningen, kombineres for at beregne den aggregering, der er angivet i SELECT-sætningen.

      Hvis du f.eks. vil beregne en aggregering for hver bruger, skal du bruge GROUPBY @"user.userId".

      Den valgfrie WHEN-sætning angiver et Boolesk udtryk, der bestemmer, om den vurdering, der behandles, skal medtages i den hastighed, der defineres.

      Der kan maksimalt bruges én til hver sætning i hastighedssæt.

      SELECT antal() AS _Purchase_Rejections_Per_Email
      FROM indkøb
      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>

      NÅR WHEN-opgørelsen er som WHEN-udtryk for de andre opgørelser, men den står alene i afsnittet Betingelse med regler og sæt. Den angiver en Boolesk betingelse, der bestemmer, om hele reglen, regelsættet eller rutereglen skal køres.

      Det kan maksimalt være én i afsnittet Betingelse for alle regeltyper og regelsæt.

      WHEN @"riskscore"> 400
      DO <-handlingsfunktion> En DO-sætning bruges til at udføre en eller anden handling ved afslutningen af regeludførelsen. Denne erklæring kan kun bruges til handlinger efter beslutning og skal efterfølges af en handlingsfunktion DO SetResponse(name = @"fornavn" + @"efternavn")

      Beslutningsfunktioner

      Beslutningsfunktioner bruges i regler til at angive en beslutning.

      Beslutningstype Betegnelse Eksempel
      Approve()

      Denne type angiver beslutningen Godkend. Den kan indeholde en årsag til godkendelsen og en anden understøttende meddelelse.

      Overbelastninger:

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

      RETURN Approve()

      RETURN Approve("på sikker liste")

      RETURN Approve ("på sikker liste", "eskaler ikke")

      Reject()

      Denne type angiver beslutningen Afvis. Den kan indeholde en årsag til afvisningen og en anden understøttende meddelelse.

      Overbelastninger:

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

      RETURN Reject()

      RETURN Reject("embargoland")

      RETURN Reject("embargoland", "eskaler ikke")

      Review()

      Denne type angiver beslutningen Gennemgå. Den kan indeholde en årsag til gennemgangen og en anden understøttende meddelelse.

      Overbelastninger:

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

      RETURN Review()

      RETURN Review("bruger på følgeliste")

      RETURN Review("bruger på følgeliste", "eskaler ikke")

      Challenge(String challengeType)

      Denne type angiver beslutningen Udfordr og en udfordringstype. Den kan også indeholde en årsag til udfordringen og en anden understøttende meddelelse.

      Overbelastninger:

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

      RETURN Challenge ("SMS")

      RETURN Challenge ("SMS", "mistænkelig robot")

      RETURN Challenge ("SMS", "mistænkelig robot ","eskaler ikke")

      Handlingsfunktioner

      Handlingsfunktioner bruges til at angive den handling, der skal udføres i en handlingsregel efter beslutningen.

      Handlingstype Betegnelse Eksempel
      SetResponse(String sectionName, k=v)

      Denne funktion kan bruges til at overføre nøgleværdipar til afsnittet CustomProperties i API-svar. Du kan angive navnet på et underafsnitssektionsnavn for de nøgleværdier, som par skal indgå i.

      Overbelastninger:

      • SetResponse(k=v)

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

      SetResponse(test="123")

      Observationsfunktioner

      Observationsfunktioner kan bruges til at tage data fra den aktuelle kontekst og skrive dem et andet sted.

      Returtype Betegnelse Eksempel
      Output(k=v) Denne funktion kan bruges til at overføre nøgle/værdipar i API-svar. Output(key="test", email=@"user.email", countryRegion=Geo.CountryRegion(@"device.ipAddress"))
      Trace(k=v) Denne funktion kan bruges til at udløse en sporingshændelse og sende nøgleværdipar til navneområdet for hændelsessporing for FraudProtection.Trace.Rule. Trace(key="Manual Review", ip=@"device.ipAddress")

      Modelfunktioner

      Modelfunktioner kører de forskellige svindelmodeller og er nyttige, når din vurdering ikke kører en eller flere svindelmodeller automatisk. Når modelfunktioner køres, er oplysningerne om den model, der kører under regelevaluering, output i API-kaldet til vurdering af svindel. Derefter får reglen adgang til modelresultatet, herunder score, årsager osv., som kan bruges til videre behandling af regler og beslutningstagning.

      Modeltype Beskrivende tekst Eksempel
      Risiko Vurderer sandsynligheden for, at en session er risikabel. Model.Risk()
      Robot Vurderer sandsynligheden for, at en session er startet af en robot. Bestået i et enhedskontekst-id, der er sendt til Fraud Protection-enhedsfingeraftryksløsningen. Model.Bot(@deviceContextId)

      Funktioner, der registrerer volapyk

      Disse funktioner hjælper med at forhindre svindel ved hurtigt og effektivt at registrere, om vigtige brugerinputfelter (f.eks. navne og adresser) indeholder volapyk.

      Funktion Beskrivende tekst Eksempel
      GetPattern(String).maxConsonants Det maksimale antal sammenhængende konsonanter i en streng, der ikke er adskilt af en vokal. MaxConsonants for strengen "01gggyturah" er f.eks. 5. GetPattern(@"user.email").maxConsonants
      GetPattern(String).gibberScore ML-baseret score mellem 0 og 1. 0 betyder, at det mest sandsynligt er volapyk, og 1 betyder, at det mindst sandsynligt er volapyk. GetPattern(@"user.email").gibberScore

      Bemærk

      Modellen til registrering af volapyk er baseret på hyppigheden af to på hinanden følgende alfanumeriske tegn i offentligt tilgængelige engelske dokumenter. Det antages, at des hyppigere to på hinanden følgende alfanumeriske tegn forekommer i offentlige dokumenter, des mindre er sandsynligheden for, at det er volapyk. Modellen skal give rimelige scorer for engelske tekster og kan bruges til at opdage, om navnene eller adresserne indeholder volapyk. Men modellen er muligvis ikke egnet til forkortelser, f.eks. den korte form for stater (AZ, TX osv.), og den kan heller ikke bruges til at validere navne eller adresser. Endelig er modellen ikke testet for ikke-engelske tekster.

      Enhedsattributfunktioner

      Operator Beskrivende tekst Eksempel
      Device.GetAttributes(String sessionId) Returnerer valgte enhedsattributter fra enhedsfingeraftryk. De valgte enhedsattributter er udvalgt af Fraud Protection og er et sæt attributter, der ofte bruges i regler. Device.GetAttributes(@"deviceContext.deviceContextId).attribute_name
      Device.GetFullAttributes(String sessionId) Returnerer et fuld sæt enhedsattributter fra enhedsfingeraftryk. Brug kun denne funktion, når det er nødvendigt for at få adgang til hele sættet af enhedsattributter. Du kan få vist hele sættet af enhedsattributter under Konfigurere enhedsfingeraftryk. Device.GetFullAttributes(@"deviceFingerprinting.id").attribute_name

      Referere til attributter og variabler

      Du kan bruge snabel-a-tegnet (@) som operator til at referere til en attribut fra den aktuelle hændelse.

      Variabel Betegnelse Eksempel
      @

      Der bruges et snabel a-tegn (@) til at referere til en attribut fra den indgående hændelse. Attributten sendes muligvis som en del af anmodningens nyttedata, eller den genereres af Microsoft Dynamics 365 Fraud Protection.

      Efter snabel a-tegnet (@) skal du angive den fulde sti for den attribut, du vil referere til. Indsæt stien i anførselstegn (f.eks. @"adresse.by").

      Hvis den attribut, der refereres til, ikke er en del af hændelsesnyttedataene, returneres standardværdien: 0,0 for dobbelt, tom streng for strenge osv.

      Typen af denne attribut udledes af den kontekst, den bruges i. Hvis der ikke angives en tilstrækkelig kontekst, bruges Streng som standardtype.

      Du kan finde flere oplysninger om typeudledning under Typeudledning af attributter.

      @"adresse.by"

      $ Et dollartegn ($) bruges til at referere til en variabel, der er defineret i en LET-sætning . Yderligere oplysninger finder du i Definere dine egne variabler. $fullName
      @"botScore"

      Ved alle hændelser af kontooprettelse eller kontologon genererer Fraud Protections AI-modeller en robotscore mellem 0 og 999. En højere score angiver en højere sandsynlighed for, at hændelsen blev startet af en robot.

      Du kan bruge @botScore til at henvise til denne score i klausuler til efterrobotscoring og klausuler til efterrisikoscoring.

      @"botScore"
      @"riskScore"

      Ved alle hændelser for købs- eller kontobeskyttelse genererer Fraud Protections AI-modeller en risikoscore mellem 0 og 999. Et højere resultat angiver en højere risiko.

      Du kan bruge @riskScore til at henvise til denne score i klausuler til efterrisikoscore.

      @"riskScore"
      @a[x]

      Denne variabel bruges til indeksering af matrixvariabler.

      Hvis anmodningens nyttedata for en vurdering indeholder en matrix af varer, kan du få adgang til individuelle elementer i matrixen ved hjælp af følgende syntaks: @"productList[0]".

      Hvis du vil have adgang til en attribut for det pågældende element, skal du bruge følgende syntaks: @"productList[0].productId"

      @"productList[0].productId"

      @"paymentInstrumentList[3].type"

      Exists

      Denne operator kontrollerer, om der findes en variabel i hændelsens nyttedata.

      Exists(String variable)

      Exists(@"user.email")
      Svar.beslutning() Denne funktion refererer til beslutningen for den aktuelle vurdering, der evalueres. Response.Decision() == "Godkend"
      Request.CorrelationId() Denne funktion refererer til det entydige korrelations-id for den hændelse, der evalueres. Du kan bruge denne funktion til at få adgang til korrelations-id'et for en hændelse i regeloplevelsen og videregive den til et eksternt opkald som en parameter eller en overskrift. External.MyExternalCall(Request.CorrelationId())
      .GetDiagnostics() Denne funktion kan bruges til at opdage vigtige diagnostiske oplysninger og fejlfindingsoplysninger fra et eksternt opkald eller et eksternt vurderingssvar. Diagnostics-objektet for et eksternt opkald indeholder Anmodningsnyttedata, Slutpunkt, HTTP-statuskode, Fejlmeddelelse og Ventetid. Slutpunkt er ikke tilgængeligt i objektet Diagnostic for et eksternt vurderingssvar. Alle disse felter kan bruges i reglerne, når diagnosticeringsobjektet er oprettet ved hjælp af den tilsvarende udvidelsesmetode". Hentdiagnostics()"

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

      LET $extResponseDiagnostics = $extResponse.GetDiagnostics()

      OBSERVE Output(Diagnostics = $extResponseDiagnostics )

      WHEN $extResponseDiagnostics. HttpStatusCode != 200

      Logiske operatorer

      Operator Beskrivende tekst Eksempel
      and (&&) Logisk Og

      @"riskScore" > 500 && @"riskScore"< 800

      @"riskScore" > 500 and @"riskScore"< 800

      eller (||) Logisk Eller

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

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

      not Logisk negation @"email.isEmailUsername" not(!) @"email.isEmailUsername"

      Listefunktioner

      Fraud Protection giver dig mulighed for at uploade brugerdefinerede lister og referere til dem på sproget.

      Du kan finde oplysninger om upload af lister i Administrere lister. Du kan finde flere oplysninger om, hvordan du bruger lister i regler, i afsnittet Bruge lister i regler senere i denne artikel.

      Operator Beskrivende tekst Eksempel
      ContainsKey(
      String listName,
      String columnName,
      String key)
      Denne operator kontrollerer, om der findes en nøgle i den angivne kolonne på en Fraud Protection-liste.

      ContainsKey("Email Support List", "Emails", @"user.email")

      I dette eksempel kontrolleres det, om kolonnen "Mails" på listen "Mailsupportliste" indeholder variablen @"user.email".

      Lookup(
      String listName,
      String keyColName,
      String valueColName)

      Denne operator søger efter værdien af en nøgle på en Fraud Protection-liste. Både navnet på den kolonne, som indeholder nøglen, og navnet på den kolonne, som indeholder værdien, skal angives.

      Værdien returneres altid som en streng.

      Hvis nøglen ikke findes, og parameteren defaultValue ikke er angivet, returneres "Ukendt".

      Lookup("Email Support List", "Emails", @"user.email", "Status",0)

      Dette eksempel søger efter variablen @"user.email" i kolonnen "Mails" på listen "Mailsupportliste" og returnerer den tilsvarende værdi i kolonnen "Status".

      Hvis nøglen ikke findes på listen, returnerer Fraud Protection 0.

      LookupClosest(
      String listName, String keyColumnName, String key,
      String valueColumnName, String defaultValue)

      Denne operator søger efter værdien af en nøgle på en Fraud Protection-liste. Hvis nøglen ikke findes, returneres værdien for den nøgle, der er tættest i alfabetet på den nøgle, du søger efter.

      Overbelastninger:

      • Opslag(streng listName, streng keyColumnName, streng nøgle, streng valueColumnName, streng defaultValue)

      LookupClosest("IP Addresses", "IP", @"device.ipAddress", "City") == "Seattle"

      Dette eksempel søger efter variablen@ipAddress i kolonnen "IP" på listen "IP-adresser" og returnerer den tilsvarende værdi i kolonnen "By". Hvis @ipAddress ikke findes på listen, returnerer udtrykket værdien af den næste nærmeste IP-adresse på listen.

      Indeholdt

      Denne operator kontrollerer, om der er indeholdt en nøgle i en kommasepareret liste med værdier.

      I(streng nøgle, streng liste)

      In(@"user.countryRegion", "US, MX, CA")

      Sammenligningsoperatorer

      Fraud Protection understøtter alle C#-standardoperatorer for Sammenligning og Lighed. Denne tabel indeholder nogle eksempler på operatorer, du kan finde nyttige. Hvis disse operatorer anvendes på strenge, resulterer det i leksikografiske sammenligninger.

      Operator Beskrivende tekst Eksempel
      == Denne operatør kontrollerer for lighed. @"user.countryRegion" == @"shippingAddress.countryRegion"
      != Denne operatør kontrollerer for ulighed. @"user.countryRegion" != @"shippingAddress.countryRegion"
      > Denne operator kontrollerer, om den første værdi er større end den anden værdi. @"riskScore"> 500
      < Denne operator kontrollerer, om den første værdi er mindre end den anden værdi. @"riskScore"< 500
      >= Denne operator kontrollerer, om den første værdi er større end eller lig med den anden værdi. @"riskScore">= 500
      <= Denne operator kontrollerer, om den første værdi er mindre end eller lig med den anden værdi. @"riskScore"<= 500

      BIN-opslagsfunktioner

      BIN-opslagsfunktioner indeholder oplysninger om betalingskortkonto (f.eks. kortnetværk, korttype, kortlandekode, kortkategori) baseret på bankens id-nummer (BIN). Data til BIN-opslag stammer fra førende bin-dataprovidere fra tredjepart og kurateres derefter af Fraud Protection.

      Operator Beskrivende tekst Eksempel
      BIN.Lookup(String BIN).cardNetwork

      Denne funktion slår BIN op og returnerer kortnetværket (f.eks. Visa, Mastercard).

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

      Denne operator søger i BIN og returnerer korttypen (f.eks. Debet, Kredit).

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

      Denne operator søger i BIN og returnerer udstedende organisation.

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

      Denne operator søger i BIN og returnerer kortets ISO-landekode på to bogstaver.

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

      Denne operator slår BIN op og returnerer kortkategorien (f.eks. Forudbetalt, Firma, Belønninger).

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

      Denne operator slår BIN op og returnerer en fejlmeddelelse, hvis BIN ikke blev fundet.

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

      Geografiske funktioner

      Geografiske funktioner giver en løsning ved at konvertere en IP-adresse til en geografisk adresse. Adgang til funktioner kan kun aktiveres i regler ved hjælp af IP'er, der er del af transaktionsnyttedata, eller som indsamles af Fraud Protection ved hjælp af Enhedsfingeraftryk. Geografiske funktioner kan ikke aktiveres for tilfældige IP-værdier.

      Operator Beskrivende tekst Eksempel
      Geo.RegionCode(String ip)

      Denne operator konverterer en IPv4-adresse til den amerikanske regionskode (dvs. forkortelsen for navnet på en stat eller et territorium i USA).

      For en IP-adresse i staten Washington returneres f.eks. "WA".

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

      Denne operator konverterer en IPv4-adresse til dens amerikanske region (dvs. navnet på en stat eller et territorium i USA).

      For en IP-adresse i staten Washington returneres f.eks. "Washington".

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

      Denne operator konverterer en IPv4-adresse til lande-/områdekoden.

      For en IP-adresse i staten Australien returneres f.eks. "AU".

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

      Denne operator konverterer en IP-adresse til et områdenavn.

      For en IP-adresse i staten Australien returneres f.eks. "Australien".

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

      Denne operator konverterer en IPv4-adresse til et bynavn.

      For en IP-adresse i New York City returneres f.eks. "New York City".

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

      Denne operator konverterer en IPv4-adresse til IP-adressens markedskode.

      For en IP-adresse fra Canada returneres f.eks. "NA" (Nordamerika).

      Geo.MarketCode(@"device.ipAddress")

      Strengfunktioner

      Fraud Protection understøtter standard C# som strengklasse. Denne tabel indeholder nogle eksempler på funktioner og operatorer, du kan finde nyttige.

      Operator Beskrivende tekst Eksempel
      Contains(String substring)

      Denne operator kontrollerer, om en streng indeholder en anden streng.

      Contains(String substring)

      @"productList`.productName".Contains("Xbox")
      ContainsOnly(CharSet)

      Denne operator kontrollerer, om en streng kun indeholder det angivne tegnsæt.

      ContainsOnly(Charset1 Charset2 ...etc.)

      @"zipcode".ContainsOnly(CharSet.Numeric)
      ContainsAll(CharSet)

      Denne operator kontrollerer, om en streng indeholder alle de angivne tegnsæt.

      ContainsAll(Charset1 Charset2 ...etc.)

      @"postnummer". ContainsAll(CharSet.Numeric|CharSet.Hypen)
      ContainsAny(CharSet)

      Denne operator kontrollerer, om en streng indeholder nogen af de angivne tegnsæt.

      ContainsAll(Charset1 Charset2 ...etc.)

      @”zipcode”.ContainsAny(CharSet.Numeric|CharSet.Hypen)
      StartsWith(String prefix)

      Denne operator kontrollerer, om en streng begynder med et angivet præfiks.

      StartsWith(String prefix)

      @"user.phoneNumber".StartsWith("1-")
      EndsWith(String suffix)

      Denne operator kontrollerer, om en streng slutter med et angivet suffiks.

      EndsWith(String suffix)

      @"user.email".EndsWith("@contoso.com")
      IsNumeric()

      Denne operator kontrollerer, om en streng er en numerisk værdi.

      (String).IsNumeric()

      @"user.email".IsNumeric()
      Length

      Denne operator returner antallet af tegn i strengen.

      @"user.username".Length
      Convert.ToDateTime(@"user.creationDate").ToString("yyyy-MM-dd HH:mm:ss")

      Denne operator konverterer strengen til datetime og konverterer datetime til en streng ved hjælp af det angivne format.

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

      Brug af CharSet i ContainsOnly, ContainsAll og ContainsAny

      Følgende tegntyper kan bruges i ContainsOnly, ContainsAll og ContainsAny.

      Tegntype Betegnelse
      Alfabetisk a-z, A-Z
      Apostrof '
      Snabel-a @
      Omvendt skråstreg \
      Komma ,
      Bindestreg -
      Numerisk 0-9
      Punktum .
      Skråstreg /
      Understregning _
      Blanktegn Enkelt mellemrum

      Matematiske funktioner

      Fraud Protection understøtter alle C# matematiske standardmetoder og aritmetiske operatorer. Denne tabel indeholder nogle eksempler på metoder, du kan finde nyttige.

      Operator Beskrivende tekst Eksempel
      Math.Min(Double value1, Double value2) Denne operator beregner den mindste af to værdier. Math.Min(@"riskScore",@"botScore")
      Math.Max(Double value1, Double value2) Denne operator beregner den største af to værdier. Math.Max(@"riskScore",@"botScore")
      RandomInt(Heltal min, Heltal max) Denne operator returnerer et tilfældigt heltal i det angivne interval, inklusive minimumværdien og eksklusive maksimumværdien. RandomInt(0, 100)

      DateTime-operatorer

      Fraud Protection understøtter C# DateTime-standardegenskaber, -metoder og -operatorer. Denne tabel indeholder nogle eksempler på funktioner og egenskaber, du kan finde nyttige.

      Operator Beskrivende tekst Eksempel
      DaysSince(DateTime date) Denne operator returnerer et heltal, der repræsenterer det antal dage, der er gået mellem den angivne DateTime-værdi og dags dato (udtrykt som Coordinated Universal Time [UTC]). DaysSince(@"user.CreationDate")
      UtcNow Denne operator får et DateTime-objekt, der er angivet til den aktuelle dato og det aktuelle klokkeslæt på computeren, udtrykt som UTC. DateTime.UtcNow
      Today Denne operator henter et objekt, der er angivet til dags dato, hvor tidskomponenten er angivet til 00:00:00. DateTime.Today
      År Denne operator henter årets komponent i den dato, der er repræsenteret af denne forekomst. @"user.creationDate".Year
      Date Denne operator får et nyt objekt, der har samme dato som denne forekomst, men tidsværdien er angivet til 00:00:00 (midnat). @"user.creationDate".Date

      Typetildelingsoperatorer

      Du kan finde oplysninger om typeudledning i afsnittet Typeudledning af attributter senere i denne artikel.

      Operator Beskrivende tekst Eksempel
      ToDateTime() Denne operator konverterer en streng til et DateTime-objekt. @"user.creationDate".ToDateTime()
      ToDouble() Denne operator konverterer en streng til en Double-værdi. @"productList.purchasePrice".ToDouble()
      ToInt32() Denne operator konverterer en streng til en Int32-værdi. @"riskScore".ToInt32()

      Aggregeringsfunktioner

      Funktion Beskrivende tekst Eksempel:
      Count() Denne funktion returnerer det antal gange, en hændelse er indtruffet. SELECT Count() AS numPurchases
      DistinctCount(String key) Denne funkton returnerer antallet af distinkte værdier for den angivne egenskab. Hvis den angivne egenskab er null eller tom for en indgående hændelse, bidrager hændelsen ikke til sammenlægningen. SELECT DistinctCount(@"device.ipAddress") AS distinctIPs
      Sum(Double value) Denne funkton returnerer summen af værdier for den angivne numeriske egenskab. SELECT Sum(@"totalAmount") AS totalSpending

      Funktioner for globale variabler

      Funktioner for globale variabler kan bruges til at indstille og få globale variabler inden for regler, hastigheder, routingregler og regler for handling efter beslutning. De variabler, der er indstillet, kan tilgås fra det samme miljø eller fra miljøer nede i stakken. Hvis du f.eks. angiver globale variabler i en regel i rodmiljøet, kan variablerne tilgås i reglerne fra det samme miljø eller fra deres underordnede miljøer. Globale variabler er også specifikke for en vurdering. En variabel, der er angivet i én vurdering, kan ikke få adgang til Hypen fra en anden vurdering.

      Operator Beskrivende tekst Eksempel
      SetVariables(k=v) Denne funktion kan bruges til at angive nøgleværdipar, dvs. angive værdier til variabler. Do SetVariables(key= 123, email=@"user.email")
      GetVariable("k") Denne funktion kan bruges til at få adgang til de variabler, der allerede er indstillet. I de tilfælde, hvor vi får adgang til variabler, der aldrig er angivet, returneres en standardværdi.

      GetVariable("key").AsInt()

      GetVariable("email").AsString()

      GetVariable("key").AsDouble()

      GetVariable("key").AsBool()

      GetVariable("key").AsDateTime()

      GetVariable("key").AsJsonObject()

      GetVariable("key").AsJsonArray()

      Definere dine egne variabler

      Du kan bruge nøgleordet LET til at definere en variabel. Der kan derefter refereres til den pågældende variabel andre steder i reglen. Alle variabler skal have et præfiks med dollartegn ($).

      Du kan f.eks. erklære følgende variabel.

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

      Variabler, der erklæres i en LET-sætning, kan kun bruges inden for området for den regel eller det hastighedssæt, som sætningen er defineret i.

      Hvis du f.eks. vil referere til variablen fra forrige eksempel, kan du skrive følgende sætning.

      WHEN $fullName == "Kayla Goderich"
      

      Note

      Når der er defineret en variabel, kan den ikke opdateres med en ny værdi.

      Bruge lister i regler

      Du kan bruge ContainsKey og Lookup som operatorer til at referere til lister, du har overført til Fraud Protection. Yderligere oplysninger om at bruge lister finder du under Administrere lister

      ContainsKey

      Hvis du vil kontrollere, om en af listerne indeholder en bestemt værdi, skal du bruge operatoren ContainsKey. Angiv listenavnet, kolonnen og den nøgle, du vil kontrollere for.

      Du uploader f.eks. en liste med en enkelt kolonne over risikobehæftede mailadresser og navngiver den Liste over risikobehæftede mailadresser.

      Email
      Kayla@contoso.com
      Jamie@bellowscollege.com
      Marie@atatum.com

      Du kan derefter bruge følgende syntaks til at afvise alle posteringer fra de risikobetonede mailadresser på listen.

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

      Denne klausul kontrollerer, om kolonnen "Email" på listen "Liste over risikobehæftede mailadresser" indeholder nøglen @email. Hvis det er tilfældet, afvises transaktionen.

      Lookup

      For lister med flere kolonner kan du bruge operatoren Lookup til at kontrollere værdien i en kolonne for en bestemt nøgle.

      Du opretter f.eks. en liste med en kolonne for mailadresser og en anden kolonne, der angiver status for disse mailadresser. Du navngiver denne liste Mailliste.

      Email Status
      Kayla@contoso.com Risikabel
      Jamie@bellowscollege.com Risikabel
      Marie@atatum.com Risikabel
      Camille@fabrikam.com Sikker
      Miguel@proseware.com Sikker
      Tyler@contoso.com Sikker

      Du kan derefter bruge følgende syntaks til at afvise alle transaktioner fra mailadresserne på den liste, som har status Risikabel.

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

      Denne klausul søger efter nøglen @"user.email" i kolonnen "Mail" på "Mailliste" og kontrollerer, om værdien i kolonnen "Status" er Risikabel. Hvis den er, afvises transaktionen.

      Hvis nøglen @"user.email" ikke findes på listen, returnerer Fraud Protection "Ukendt".

      Du kan også angive din egen standardværdi som den femte parameter. Du kan finde flere oplysninger i afsnittet Logiske operatorer i denne artikel.

      Operatoren Lookup returnerer altid en streng-værdi. Hvis du vil konvertere denne værdi til en Int-, Double- eller DateTime-værdi, skal du bruge en typetildelingsoperator.

      Bruge eksterne kald, eksterne vurderinger og hastigheder

      • Hvis du vil referere til et eksternt kald, skal du skrive Eksternt efterfulgt af det eksterne kald, du vil referere til. Du kan finde flere oplysninger under Bruge et eksternt kald i regler.
      • Hvis du vil referere til en ekstern vurdering, skal du skrive Vurderinger efterfulgt af den eksterne vurdering, du vil referere til. Du kan finde flere oplysninger under Bruge en ekstern vurdering i regler.
      • Hvis du vil referere til en hastighed, skal du skrive Hastighed efterfulgt af den hastighed, du vil referere til. Du kan finde flere oplysninger under Bruge en hastighed i regler.

      Typeudledning af attributter

      Variabeltyper udledes ud fra den kontekst, de bruges i. Her er nogle eksempler:

      • I udtrykket NÅR @isEmailValidated fortolkes variablen som en boolesk værdi.
      • I udtrykket @"riskScore" > 500 fortolkes variablen som en Double-værdi.
      • I udtrykket @"user.creationDate".Year < DateTime.UtcNow.Year fortolkes variablen som en DateTime-værdi.

      Hvis der ikke er tilstrækkelig kontekst til at udlede en variabeltype, betragtes den som en streng-værdi. I udtrykket @"riskScore" <@"botScore" fortolkes begge variabler f.eks. som strenge.

      Hvis du vil angive typen af en ikke-strengvariabel, skal du bruge en type castingoperator.

      JSON-matrixer og -objekter

      FQL har understøttelse af konstruktionen af komplekse strukturerede objekter som lokale variabler, som kan overføres til det eksterne opkald eller den eksterne vurdering i formen JSON. Som med alle andre lokale i FQL, kan arrays og objekter ikke overføres, når de er oprettet.

      JSON-arrays

      Arrays oprettes ved at omslutte udtryk med kantede parenteser:

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

      JSON-objekter

      Objekterne oprettes med klammeparenteser:

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

      FQL-funktioner til JSON-matrixer og -objekter

      Syntaks Beskrivelse Eksempel
      myArr[0] Du kan bruge denne syntaks til at få adgang til et bestemt matrixelement ved hjælp af indekset. myArr [0].property
      myArr [0][0]
      myArr [0][0].property
      myArr [0].property[0]
      myArr [0].property[0].property

      Hvor myArr i eksemplerne ovenfor er en matrix. Kilden til denne matrix kan være @@payloadProperty, eksternt vurderingssvar, eksternt opkaldssvar, lokal variabel eller en global variabel.

      Følgende er eksempler på, hvordan du bruger syntaksen baseret på forskellige matrixkilder:

      • Matrixkilde: Nyttedata
      LET $sample = @@"myArr[0]".AsJsonArray()   
      RETURN Approve()   
      WHEN $sample[0].AsString() == "a"
      
      • Matrixkilde: Lokal variabel
        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" 
        
      Syntaks Beskrivelse Eksempel
      Array.GetValue (TargetArray . AsJsonArray(), matchKey, matchValue, lookupKey) Med denne funktion kan du få adgang til det første matrixelement, der svarer til en betingelse.

      Returnerer en værdi

      Array.GetValue(@@"payloadProperty". AsJsonArray(), matchKey, matchValue, lookupKey)
      Array.GetValues(TargetArray . AsJsonArray(), matchKey, matchValue) Med denne funktion kan du få adgang til et sæt matrixelementer, der svarer til en betingelse.

      Returnerer en matrix

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

      Følgende er nogle mere detaljerede eksempler på, hvordan du bruger ovenstående syntaks baseret på forskellige matrixkilder:

      Matrixkilde Array.GetValue Array.GetValues
      Eksterne vurderinger 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"
      Nyttedata Payload-eksempel: {"gruppe":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]}

      LET $sample = Array.GetValue(@@"group". AsJsonArray(), "item1", "a", "item2")
      RETURN Approve()WHEN $sample. AsString() == "a1"
      Eksempel på nyttedata: { "gruppe":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]}

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

      NÅR $sample[0].item2. AsString() == "a1"

      Globale variabler Brug af samme nyttedataeksempel som ovenfor

      Do SetVariables(Var=@@"group")
      LET $group = GetVariable("Var"). AsJsonObject()
      LET $value = Array.GetValue($group, "item1", "a", "item2")
      RETURN Approve()
      WHEN $value. AsString() == "a1"
      Brug af samme nyttedataeksempel som ovenfor

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

      Svar på eksternt opkald (myCall): {"gruppe":[{"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"

      Svar på eksternt opkald (myCall): {"gruppe":[{"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"

      Typestøbe til JSON-matrixer og -objekter

      • Følgende . Som<Type>() understøttes fra JsonObject:

        • AsString()
        • AsInt()
        • AsDouble()
        • AsDateTime()
        • AsBool()
        • AsJsonArray()
        • AsJsonObject()
      • Når du bruger en af de to matrixhjælpemetoder, . GetValue eller . GetValues, du skal skrive cast ved hjælp af . Som<Type>(). Eksempel:

        LET $arr = {myArr:[{item1: "red", number: 45}, {item1: "blue", number: 56}, {item1: "green", number: 33}]}
        LET $sample = Array.GetValues($arr.myArr.AsJsonArray(), "item1", "blue")
        
      • Når du har konverteret data til et JSON-objekt eller en matrix eksplicit, kan du bruge . Som<Type>() til at caste til en anden datatype, hvis det er nødvendigt. Eksempel:

        RETURN Approve()
        WHEN $sample[0].number.AsInt() == 56
        
      • Når du bruger @@, skrives dataene implicit til et JSON-objekt. Hvis du derefter vil konvertere JSON-objektet til en anden datatype, skal du bruge . Som<Type>(). Eksempel:

        LET $sample = @@”user.addresses”.AsJsonArray()
        
      • Når du vil skrive i et bestemt format, skal du bruge . Som<Type>(). Eksempel:

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

      Bemærk

      Bedste praksis for typestøbning:

      • Skriv altid kast for enden af kæden .

      Eksempel:

      LET $sample = External.myCall().data[0].Item1[0].AsJsonArray()
      
      Or
      
      LET $sample = @@”accommodations[0].rooms”.AsJsonArray()
      
      • Når du ikke er sikker, skal du altid eksplicit skrive cast ved hjælp af . Som<Type>().