Megosztás a következőn keresztül:


Csalási nyelvi referencia

A Microsoft Dynamics 365 saját, gazdag és kifejező nyelvével segíti a csalási stratégia meghatározásában és kifejezésében. Ez a nyelv sok hasonlósággal rendelkezik a C# és az SQL nyelvhez, és úgy lett kialakítva, hogy rugalmasan kezelje az egyedi üzleti forgatókönyvek csalásait.

Ezt a nyelvet használhatja ma a szabályok és a földrajzi hely meghatározásához. További információ: Szabályok kezelése és Sebességellenőrzések végrehajtása.

Ez a csalási nyelvi referencia-útmutató tartalmazza a nyelvet alkotó operátorok, függvények és utasítások teljes listáját:

Kimutatások

Utasítás szintaxisa Leírás Példa
LET VariableName> = <kifejezés<>

A LET utasítás egy új változó definiálására szolgál. A változó hatóköre az a szabály vagy sebesség, amelyben a változó definiálva van. A változóneveket dollárjellel ($) kell előtaggal elnevíteni.

További információ: Saját változók definiálása.

A Feltétel szakaszban tetszőleges számú LET utasítás használható, valamint az összes szabálytípus és sebességkészlet záradékai.

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

MEGFIGYEL

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

]

A OBSERVE utasítás nem szünteti meg a szabályvégrehajtást döntéssel. Csupán kulcs-érték párokat naplóz az API-válaszba vagy a nyomkövetési naplókba. A további szabályok és szabálykikötések mindaddig futnak, amíg el nem éri a RETURN utasítást.

A MEGFIGYELÉS utasítást egy vagy több megfigyelési függvénynek kell követnie.

Ha egy WHEN záradék van jelen, és hamis értékre van kiértékelve, a RENDSZER nem naplózza a MEGFIGYELÉS utasítást.

Az alábbi szabályok minden záradékához legfeljebb egy használható:

  • Vásárlási szabályok
  • Egyéni értékelési szabályok
  • Fiókvédelmi szabályok

    OBSERVE Output(reason="high score")

    MEGFIGYELÉS TRACE(ip=@"device.ipAddress") AMIKOR Model.Risk(). Pontszám > 400

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

    A RETURN utasítás határozattal leállítja a szabály végrehajtását.

    Az utasításnak meg kell adnia egy érvényes döntési függvényt: Approve(), Reject(), Challenge() vagy Review().

    Az utasítás egy vagy több megfigyelési függvényt is megadhat: Output() vagy Trace()

    Végül az utasítás tartalmazhat egy WHEN záradékot, amely meghatározza azt a feltételt, amely mellett az előzőek bármelyikét el kell végeznie.

    Záradékonként legfeljebb egy használható a következő szabályokban:

    • Vásárlási szabályok
    • Egyéni értékelési szabályok
    • Fiókvédelmi szabályok

      RETURN Felülvizsgálat()
      WHEN IsWatch("Eszköztámogatási lista", @"deviceAttributes.deviceId") ||
      IsWatch("Fizetési támogatási lista", @"paymentInstrumentList.merchantPaymentInstrumentId")

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

      ROUTETO QUEUE <QueueName>
      [ MIKOR <BooleanExpression> ]

      A ROUTETO parancs az útválasztási szabályokban az egyező értékeléseknek az esetkezelési üzenetsorokhoz való irányítására szolgál.

      Az opcionális WHEN záradék azokat a feltételeket írja le, amelyek mellett a parancsnak végre kell hajtania az útválasztást.

      Az útválasztási szabályokban záradékonként legfeljebb egy használható.

      ROUTETO Queue("Magas értékű üzenetsor")
      HA @"purchase.request.totalAmount"> 500
      SELECT <AggregationFunction>
      AS <VelocityName>
      FROM <AssesmentType>
      GROUPBY <GroupExpression>
      [ MIKOR <BooleanExpression> ]

      A sebességkészletekben a SELECT utasítással határozhatók meg sebességek. Meg kell adnia egy aggregációs függvényt.

      A szükséges AS záradékkal aliast hozhat létre a sebességhez. Ez az alias ezután a szabályokból hivatkozható.

      A szükséges FROM záradék a sebesség megfigyeléséhez használt értékelési típus megadására szolgál. Érvényes értékek: Vásárlás, AccountLogin, AccountCreation, Chargeback, BankEvent és CustomAssessment.

      A szükséges GROUPBY záradék egy tulajdonságot vagy kifejezést határoz meg. A GROUPBY utasításban azonos értékre kiértékelt események összesítése a SELECT utasításban kért összesítés kiszámításához történik.

      Ha például az egyes felhasználók összesítését szeretné kiszámítani, használja a GROUPBY függvényt @"user.userId".

      Az opcionális WHEN záradék egy logikai kifejezést határoz meg, amely meghatározza, hogy a feldolgozandó értékelésnek szerepelnie kell-e a definiált sebességben.

      A sebességhalmazokban záradékonként legfeljebb egy használható.

      SELECT Count() AS _Purchase_Rejections_Per_Email
      FROM Purchase
      WHEN @"ruleEvaluation.decision" == "Elutasítás"
      GROUPBY @"user.email"

      SELECT DistinctCount(@"purchaseId")
      AS _BankDeclines_Per_Device
      FROM BankEvent
      MIKOR @"status" == "ELUTASÍTVA"
      GROUPBY @"purchase.deviceContext.externalDeviceId"

      MIKOR <Logikaiexpresszió>

      A WHEN utasítás hasonló a többi utasítás WHEN záradékaihoz, de egyedül áll a szabályok és sebességhalmazok Feltétel szakaszában. Egy logikai feltételt határoz meg, amely meghatározza, hogy a teljes szabály, sebességkészlet vagy útválasztási szabály fusson-e.

      Az összes szabálytípus és sebességkészlet Feltétel szakaszában legfeljebb egy használható.

      WHEN Model.Risk(). Pontszám > 400
      DO <Action függvény> A DO utasítással műveletet hajthat végre a szabályvégrehajtás végén. Ez az utasítás csak a döntés utáni műveletekben használható DO SetResponse(name = @"firstname" + @"lastname")

      Hivatkozási attribútumok és változók

      Az at sign (@) operátorral hivatkozhat az aktuális esemény egyik attribútumára.

      Változó Leírás Példa
      @

      A rendszer egy at sign (@) jellel hivatkozik a bejövő esemény egyik attribútumára. Előfordulhat, hogy az attribútum a kérelem hasznos adatainak részeként lesz elküldve, vagy a Microsoft Dynamics 365 Fraud Protection generálhatja azt.

      A at sign (@) után adja meg a hivatkozni kívánt attribútum teljes elérési útját. Csatolja az elérési utat idézőjelek közé (például @"address.city").

      Ha a hivatkozott attribútum nem része az esemény hasznos adatainak, a rendszer a típus alapértelmezett értékét adja vissza: 0,0 a dupláknál, egy üres sztring a sztringekhez stb.

      Az attribútum típusa abból a környezetből származik, amelyben az attribútumot használják. Ha nincs elég környezet megadva, a sztringtípust alapértelmezés szerint használja a rendszer.

      A típuskövetkeztetésről további információt az attribútumok típuskövetkeztetésében talál.

      @"address.city"

      $ A dollárjel ($) egy LET utasításban definiált változóra való hivatkozásra szolgál. További információ: Saját változók definiálása. $fullName
      @a[x]

      Ez a változó tömbváltozók indexelésére szolgál.

      Ha az értékelésre vonatkozó kérelem hasznos adatai elemekből álló tömböt tartalmaznak, a tömb egyes elemeihez a következő szintaxissal férhet hozzá: @"productList[0]".

      Az elem attribútumának eléréséhez használja a következő szintaxist: @"productList[0].productId"

      @"productList[0].productId"

      @"paymentInstrumentList[3].type"

      Létezik

      Ez az operátor ellenőrzi, hogy létezik-e változó az esemény hasznos adatai között.

      Exists(Sztringváltozó)

      Létező(@"user.email")
      Request.CorrelationId() Ez a függvény a kiértékelendő esemény egyedi korrelációs azonosítójára hivatkozik. Ezzel a függvénnyel elérheti egy esemény korrelációs azonosítóját a szabályok felületén, és átadhatja egy külső hívásnak paraméterként vagy fejlécként. External.MyExternalCall(Request.CorrelationId())
      . GetDiagnostics() Ez a függvény egy külső hívás vagy egy külső értékelési válasz fontos diagnosztikai és hibakeresési információinak felderítésére használható. Külső hívás esetén a Diagnostics objektum tartalmazza a kérelem hasznos adatait, végpontját, HttpStatus-kódját, hibaüzenetét és késését. A végpont nem érhető el a diagnosztikai objektumban külső értékelésre adott válaszhoz. Ezen mezők bármelyike használható a szabályokban, miután a Diagnostics objektum a megfelelő bővítménymetódussal jött létre". GetDiagnostics()"

      LET $extResponse = Külső. myCall(@"device.ipAddress")

      LET $extResponseDiagnostics = $extResponse.GetDiagnostics()

      OBSERVE Output(Diagnostics = $extResponseDiagnostics)

      MIKOR $extResponseDiagnostics. HttpStatusCode != 200

      Saját változók meghatározása

      A LET kulcsszóval definiálhat egy változót. Ez a változó ezután a szabály más helyeiben is hivatkozható. Az összes változó előtagja dollárjel ($) szerint. Deklarálja például a következő változót.

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

      A LET utasításban deklarált változók csak azon szabály vagy sebességkészlet hatókörén belül használhatók, amelyben az utasítás definiálva van.

      Ha például az előző példában szereplő változóra szeretne hivatkozni, megírhatja a következő utasítást.

      WHEN $fullName == "Kayla Goderich"
      

      Feljegyzés

      A változó definiálása után nem frissíthető új értékkel.

      Globális változók függvényei

      A Global Variables függvényekkel változókat állíthat be és kérhet le a szabályokon belül. A globális változók beállítása után egy döntési szabályon, sebességen, útválasztási szabályokon és döntés utáni műveleteken belül érhetők el ugyanabban a környezetben vagy gyermekkörnyezetben. A csalás elleni védelem által használt hierarchia az alábbi táblázatban található. Ha például globális változókat állít be egy szabályban a gyökérkörnyezetben, a Fraud Protection lekérheti annak értékét bármely más szabályon belül ugyanabban a környezetben, vagy bármely gyermekkörnyezetben.

      Operátor Leírás Példa
      SetVariables(k=v) Ez a függvény a kulcs-érték párok beállítására használható, vagyis az értékek változókra való beállítására. Do SetVariables(key= 123, email=@"user.email")
      GetVariable("k") Ez a függvény a már beállított változók eléréséhez használható. Azokban az esetekben, amikor soha nem beállított változókhoz férünk hozzá, a rendszer egy alapértelmezett értéket ad vissza.

      GetVariable("key"). AsInt()

      GetVariable("e-mail"). AsString()

      GetVariable("key"). AsDouble()

      GetVariable("key"). AsBool()

      GetVariable("key"). AsDateTime()

      GetVariable("key"). AsJsonObject()

      GetVariable("key"). AsJsonArray()

      Feljegyzés

      A globális változók egyetlen tranzakcióra vonatkoznak egy adott értékeléshez. Az egyik tranzakción belül beállított változók nem kérhetők le egy másik tranzakcióból vagy egy másik értékelésből.

      Döntési függvények

      A döntési függvények a szabályokban a döntés megadására szolgálnak.

      Döntés típusa Leírás Példa
      Jóváhagyás()

      Ez a típus a jóváhagyás döntését adja meg. A jóváhagyás indokát és egy másik támogató üzenetet is tartalmazhat.

      Túlterhelés:

      • Jóváhagyás(Sztring oka)
      • Jóváhagyás(Sztring oka, sztringtámogatásMessage)

      RETURN Jóváhagyás()

      RETURN Jóváhagyás("a biztonságos listán")

      RETURN Jóváhagyás ("biztonságos listán", "ne eszkalál")

      Elutasítás()

      Ez a típus az Elutasítás döntését adja meg. Ez az elutasítás okát és egy másik támogató üzenetet is tartalmazhat.

      Túlterhelés:

      • Elutasítás(Sztring oka)
      • Reject(String reason, String supportMessage)

      RETURN Reject()

      RETURN Reject("embargo country")

      RETURN Reject("embargo country", "ne eszkaláld")

      Véleményezés()

      Ez a típus a Véleményezés döntését adja meg. Ez magában foglalhatja a felülvizsgálat okát és egy másik támogató üzenetet.

      Túlterhelés:

      • Véleményezés(Sztring oka)
      • Review(String reason, String supportMessage)

      RETURN Felülvizsgálat()

      RETURN Review("felhasználó a figyelőlistában")

      RETURN Review("felhasználó a figyelőlistában", "ne eszkaláld")

      Challenge(String challengeType)

      Ez a típus a Kihívás döntését és egy feladattípust határoz meg. A feladat indokát és egy másik támogató üzenetet is tartalmazhat.

      Túlterhelés:

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

      RETURN challenge ("SMS")

      RETURN Challenge ("SMS", "gyanús robot")

      RETURN Challenge ("SMS", gyanús robot", "ne eszkaláld")

      Megfigyelési függvények

      A megfigyelési függvények az aktuális környezetből származó adatok felvételére és máshol való írására használhatók.

      Visszatérési típus Leírás Példa
      Kimenet(k=v) Ezzel a függvénnyel kulcs-érték párokat adhat át az API-válasz CustomProperties szakaszának. A kulcs-érték pár egy olyan objektumba lesz beágyazva, amelynek a neve megegyezik az Output() utasítást tartalmazó záradék nevével. Output(key="test", email=@"user.email", countryRegion=Geo.CountryRegion(@"device.ipAddress"))
      Trace(k=v) Ez a függvény használható nyomkövetési esemény aktiválására és kulcs-érték párok küldésére a FraudProtection.Trace.Rule eseménykövetési névtérbe. Trace(key="Manual Review", ip=@"device.ipAddress")
      SetResponse(String sectionName, k=v) Ezzel a függvénnyel kulcs-érték párokat adhat át az API-válasz CustomProperties szakaszának. A sectionName egy kihagyható paraméter. Ez a függvény csak a döntés utáni műveletekben használható; a döntési szabályban nem érhető el

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

      SetResponse(test="123")

      Response.Decision() Ez a függvény az aktuális értékelésre vonatkozó döntésre hivatkozik. Response.Decision() == "Jóváhagyás"

      Aggregátumfüggvények

      Függvény Leírás Példa
      Darabszám() Ez a függvény az esemény bekövetkezésének hányszorosát adja vissza. SELECT Count() AS numPurchases
      DistinctCount(Sztringkulcs) Ez a függvény a megadott tulajdonság különböző értékeinek számát adja vissza. Ha a megadott tulajdonság null értékű vagy üres egy bejövő esemény esetében, az esemény nem járul hozzá az összesítéshez. SELECT DistinctCount(@"device.ipAddress") AS distinctIPs
      Összeg(Dupla érték) Ez a függvény egy adott numerikus tulajdonság értékeinek összegét adja vissza. SELECT Sum(@"totalAmount") AS totalSpending

      Logikai operátorok

      Operátor Leírás Példa
      és (>) Logikai és

      Model.Risk(). Score > 500 &> Model.Risk(). Pontszám < 800

      Model.Risk(). Pontszám > 500 és Model.Risk(). Pontszám < 800

      vagy (||) Logikai vagy

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

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

      nem Logikai tagadás @"email.isEmailUsername" nem(!) @"email.isEmailUsername"

      Összehasonlító operátorok

      A Fraud Protection minden szabványos C# -összehasonlítási és egyenlőségi műveletet támogat. Ez a táblázat néhány példát tartalmaz azokra az operátorokra, amelyeket hasznosnak talál. Ha ezeket az operátorokat sztringekre alkalmazza, lexikográfiai összehasonlítások történnek.

      Operátor Leírás Példa
      == Ez az operátor ellenőrzi az egyenlőséget. @"user.countryRegion" == @"shippingAddress.countryRegion"
      != Ez az operátor az egyenlőtlenséget ellenőrzi. @"user.countryRegion" != @"shippingAddress.countryRegion"
      > Ez az operátor ellenőrzi, hogy az első érték nagyobb-e a másodiknál. Model.Risk(). Pontszám > 500
      < Ez az operátor ellenőrzi, hogy az első érték kisebb-e a másodiknál. Model.Risk(). Pontszám < 500
      >= Ez az operátor ellenőrzi, hogy az első érték nagyobb-e, mint a második érték. Model.Risk(). Pontszám >= 500
      <= Ez az operátor ellenőrzi, hogy az első érték kisebb-e, mint a második érték. Model.Risk(). Pontszám <= 500
      X ? Y : Z Ez az operátor ellenőrzi, hogy az X feltétel igaz-e vagy sem. Ha ez igaz, a rendszer végrehajtja az Y utasítást, és visszaadja annak eredményét. Ellenkező esetben a rendszer végrehajtja a Z utasítást, és visszaadja annak eredményét. Több logikai ellenőrzés is kombinálható szögletes zárójelekkel a beágyazott IF <> THEN <> ELSE <> logika definiálásához LET $riskbucket = Model.Risk(). Pontszám > 500? "Magas" : (Model.Risk(). Pontszám > 300? "Közepes" : "Alacsony")

      Matematikai függvények

      A Csalásvédelem minden szabványos C# matematikai módszert és számtani operátort támogat. Ez a táblázat néhány példát tartalmaz azokra a módszerekre, amelyeket hasznosnak talál.

      Operátor Leírás Példa
      Math.Min(Dupla érték1, Dupla érték2) Ez az operátor legalább két értéket számít ki. Math.Min(Model.Risk(). Score, Model.Bot(@"deviceFingerprinting.id"). Pontszám)
      Math.Max(Dupla érték1, Dupla érték2) Ez az operátor legfeljebb két értéket számít ki. Math.Max(Model.Risk(). Score, Model.Bot(@"deviceFingerprinting.id"). Pontszám)
      RandomInt(egész szám, max. egész szám) Ez az operátor véletlenszerű egész számot ad vissza a megadott tartományban, beleértve a minimális értéket és a maximális értéket is. RandomInt(0, 100)

      DateTime operátorok

      A Fraud Protection támogatja a szabványos C# DateTime-tulajdonságokat , metódusokat és operátorokat. Ez a táblázat néhány példát tartalmaz a hasznosnak talált függvényekre és tulajdonságokra.

      Operátor Leírás Példa
      UtcNow Ez az operátor egy DateTime objektumot kap, amely a számítógépen az aktuális dátumra és időpontra van állítva, UTC-ként kifejezve. DateTime.UtcNow
      Today Ez az operátor az aktuális dátumra beállított objektumot kap, ahol az időösszetevő értéke 00:00:00. DateTime.Today
      Subtract Ez az operátor egy új DateTime értéket ad vissza úgy, hogy kivon egy megadott dátumot és időt egy bemeneti DateTime-ból. DateTime.UtcNow.Subtract(@var1. ToDateTime())
      DaysSince(DateTime date) Ez az operátor egy egész számot ad vissza, amely a megadott DateTime érték és az aktuális dátum között eltelt napok számát jelöli (az egyezményes világidő [UTC] szerint kifejezve). DaysSince(@"user. CreationDate")
      Year Ez az operátor a példány által képviselt dátum évösszetevőjét kapja meg. @"user.creationDate". Év
      Dátum Ez az operátor egy új objektumot kap, amelynek dátuma megegyezik a példányéval, de ahol az időérték 00:00:00 (éjfél) értékre van állítva. @"user.creationDate". Dátum

      Típusöntvény-operátorok

      A típuskövetkeztetéssel kapcsolatos további információkért tekintse meg az attribútumok típuskövetkeztetését ismertető szakaszt a cikk későbbi részében.

      Operátor Leírás Példa
      Convert.ToDateTime

      Ez az operátor a sztringet datetime-ra konvertálja, és a dátumidőt egy adott formátumot használó sztringgé alakítja.

      Convert.ToDateTime(@"user.creationDate"). ToString("yyyyy-MM-dd")
      Konvertálás.ToInt32

      Ez az operátor a megadott értéket Int32 értékké alakítja.

      Convert.ToInt32(@var)
      Konvertálás.ToDouble

      Ez az operátor a megadott értéket dupla értékké alakítja.

      Convert.ToDouble(@var)

      Sztringfüggvények

      A Fraud Protection támogatja a standard C# sztringosztályt. Ez a táblázat néhány olyan függvényt és operátort tartalmaz, amelyek hasznosnak bizonyulhatnak.

      Operátor Leírás Példa
      StartsWith() Ez az operátor ellenőrzi, hogy egy sztring egy megadott előtaggal kezdődik-e. @"user.phoneNumber". StartsWith("1-")
      EndsWith() Ez az operátor ellenőrzi, hogy egy sztring egy megadott utótaggal végződik-e. @"user.email". EndsWith("@contoso.com")
      IsNumeric() Ez az operátor ellenőrzi, hogy egy sztring numerikus érték-e. @"user.email". IsNumeric()
      Hossz

      Ez az operátor a sztringben szereplő karakterek számát adja vissza.

      @"user.username". Hosszúság
      ToDateTime() Ez az operátor egy sztringet DateTime-objektummá konvertál. @"user.creationDate". ToDateTime()
      ToDouble() Ez az operátor kettős értékké konvertál egy sztringet. @"productList.purchasePrice". ToDouble()
      ToInt32() Ez az operátor egy sztringet Int32-értékké konvertál. @"zipcode". ToInt32()
      ToUpper() Ez az operátor visszaadja ennek a sztringnek a másolatát nagybetűssé alakítva. @"user.username". ToUpper()
      ToLower() Ez az operátor visszaadja a kisbetűssé konvertált sztring másolatát. @"user.username". ToLower()
      IndexOf() Ez az operátor egy adott sztring első előfordulásának nullaalapú indexét jelenti a megadott sztringen belül. @"user.username". IndexOf("@")
      LastIndexOf() Ez az operátor egy adott sztring utolsó előfordulásának nullaalapú indexét jelenti a megadott sztringen belül. @"user.username". LastIndexOf("@")
      Substring() Ez az operátor egy sztringen belüli nulla alapú indexből kiinduló részszúrást ad vissza egy második opcionális paraméterrel, amely megadja a kívánt részsztring hosszát @"user.username". Részszúrás(0,5)
      IsNullOrEmpty() Ez az operátor akkor ad vissza, ha a megadott sztring null értékű vagy üres. Máskülönben hamis értéket ad vissza. @"user.username". IsNullOrEmpty()
      IgnoreCaseEquals() Ez az operátor igaz értéket ad vissza, ha a két sztring egyenlő, függetlenül a burkolati különbségektől. Máskülönben hamis értéket ad vissza. @"user.username". IgnoreCaseEquals(@"user.email")
      Contains() Ez az operátor ellenőrzi, hogy egy sztring tartalmaz-e másik sztringet. @"productList.productName". Contains("Xbox")
      ContainsOnly() Ez az operátor ellenőrzi, hogy egy sztring csak a megadott karakterkészleteket tartalmazza-e. @"irányítószám". ContainsOnly(CharSet.Numerikus)
      ContainsAll() Ez az operátor ellenőrzi, hogy egy sztring tartalmazza-e a megadott összes karakterkészletet. @"irányítószám". ContainsAll(CharSet.Numerikus|CharSet.Kötőjel)
      ContainsAny() Ez az operátor ellenőrzi, hogy egy sztring tartalmazza-e a megadott karakterkészleteket. @"irányítószám". ContainsAny(CharSet.Numerikus|CharSet.Kötőjel)

      CharSet használata a ContainsOnly, a ContainsAll és az ContainsAny alkalmazásban

      A következő karaktertípusok használhatók a ContainsOnly, az ContainsAll és a ContainsAny fájlban.

      Karaktertípus Leírás
      Alfabetikus a-z, A-Z
      Aposztrof '
      Asperand @
      Fordított perjel \
      Vessző ,
      Kötőjel -
      Numerikus 0–9
      Időszak .
      Perjel /
      aláhúzás _
      Szóköz Egy szóköz

      Gibberish észlelési függvények

      Ezek a függvények segítenek megelőzni a csalást azáltal, hogy gyorsan és hatékonyan észlelik, hogy a fő felhasználói beviteli mezők (például nevek és címek) tartalmaznak-e gibberish-t.

      Függvény Leírás Példa
      GetPattern(String).maxConsonants A nem magánhangzóval elválasztott sztringek összefüggő mássalhangzóinak maximális száma. A "01gggyturah" sztring maxConsonants tulajdonsága például 5. GetPattern(@"user.email").maxConsonants
      GetPattern(String).gibberScore ML-alapú pontszám 0 és 1 között; 0 azt jelenti, hogy a legvalószínűbb, hogy gibberish és 1 azt jelenti, hogy a legkevésbé valószínű, hogy gibberish. GetPattern(@"user.email").gibberScore

      Feljegyzés

      A gibberish észlelési modell két egymást követő alfanumerikus karakter gyakoriságán alapul a nyilvánosan elérhető angol nyelvű dokumentumokban. Feltételezzük, hogy a nyilvános dokumentumokban gyakran két egymást követő alfanumerikus karakter jelenik meg, kevésbé valószínű, hogy ezek rövidek. A modellnek ésszerű pontszámokat kell biztosítania az angol nyelvű szövegekhez, és használható annak észlelésére, hogy a nevek vagy címek tartalmaznak-e gibberish-t. Előfordulhat azonban, hogy a modell nem alkalmas rövidítésekre, például az állapotok rövid formájára (AZ, TX stb.), és a nevek és címek ellenőrzésére sem használható. Végül a modellt nem tesztelték nem angol nyelvű szövegekhez.

      Mintaészlelési függvények

      Ezek a függvények segítenek megelőzni a csalást azáltal, hogy gyorsan és hatékonyan észlelik, hogy a fő felhasználói beviteli mezők (például nevek és címek) tartalmaznak-e gibberish-t.

      Függvény Leírás Példa
      Patterns.IsRegexMatch(sztringminta, sztringforrás) Sztringminta regex (regex) egyezését hajtja végre egy sztringforrással. Az eredmény logikai érték, azaz igaz (a mintának megfelelő adott sztringet jelzi) vagy hamis (nem egyezést jelez) Patterns.IsRegexMatch("^.com$", @ "user.email") Patterns.IsRegexMatch( "^.[aAeEiIoOuU]+.*$", @ "user.firstname")

      Feljegyzés

      • A sztringmintának állandó bemenetnek kell lennie.
      • A függvény hamis értéket ad vissza (az alapértelmezett eredményt), ha a kiértékelési idő meghaladja a 10 ezredmásodpercet.
      • A NonBacktrackinget nem támogató korlátozások az IsRegexMatch függvényre is érvényesek.

      Modellfüggvények

      A modellfüggvények a különböző csalási modelleket futtatják, és akkor hasznosak, ha az értékelés nem futtat automatikusan egy vagy több csalási modellt. A modellfüggvények futtatásakor a szabályértékelés során futó modellre vonatkozó információk a csalásértékelési API-hívásban lesznek kimenetek. Ezután a szabály hozzáférést kap a modell eredményéhez, beleértve a pontszámot, az okokat és egyebeket, amelyek további szabályfeldolgozáshoz és döntéshozatalhoz használhatók.

      Modell típusa Leírás Példa
      Kockázat Felméri annak valószínűségét, hogy egy munkamenet kockázatos-e. Model.Risk()
      Robot Felméri a robot által kezdeményezett munkamenetek valószínűségét. Adjon meg egy eszközkörnyezet-azonosítót, amelyet a Csalás elleni védelem eszköz ujjlenyomat-kezelő megoldásának küldtek. Model.Bot(@deviceContextId)

      Geofüggvények

      A geofüggvények egy IP-cím földrajzi címgé alakításával nyújtanak megoldást. A geofüggvények csak olyan IP-címek használatával hívhatók meg a szabályokban, amelyek a tranzakció hasznos adatainak részét képezik, vagy amelyeket a Csalás elleni védelem eszköz-ujjlenyomat-kezeléssel gyűjt. A geofüggvények nem hívhatók meg tetszőleges IP-értékekhez.

      Operátor Leírás Példa
      Geo.RegionCode(Sztring ip)

      Ez az operátor átalakít egy IPv4-címet az USA régiókódjára (azaz az USA államának vagy területének rövidítésére).

      Egy Washington államban lévő IP-cím esetében például a "WA" lesz visszaadva.

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

      Ez az operátor átalakít egy IPv4-címet az USA régiójára (azaz az USA államának vagy területének nevére).

      Egy Washington államban lévő IP-cím esetében például a "Washington" lesz a visszaadva.

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

      Ez az operátor átalakít egy IPv4-címet ország-/régiókóddá.

      Ausztráliában például egy IP-cím esetében a "AU" lesz visszaadva.

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

      Ez az operátor egy IP-címet régiónévvé konvertál.

      Egy Ausztráliában található IP-cím esetében például az "Ausztrália" lesz visszaadva.

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

      Ez az operátor egy IPv4-címet városnévvé alakít át.

      Egy New York-i IP-cím esetében például a "New York City" lesz visszaadva.

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

      Ez az operátor átalakít egy IPv4-címet az IP-cím piaci kódjára.

      Például egy Kanadából származó IP-cím esetén a "NA" (Észak-Amerika) lesz visszaadva.

      Geo.MarketCode(@"device.ipAddress")

      Eszközattribútum-függvények

      Operátor Leírás Példa
      Device.GetFullAttributes(String sessionId) A megadott eszköz-ujjlenyomat-munkamenethez tartozó eszközattribútumok teljes készletét adja vissza. Lásd: Az eszköz ujjlenyomatának beállítása az eszközattribútumok teljes készletének megtekintéséhez Device.GetFullAttributes(@"deviceFingerprinting.id")
      Device.GetAttributes(String sessionId) Az eszközattribútumok egy kisebb részét adja vissza a megadott eszköz ujjlenyomat-készítési munkamenethez. Az alkészlet a Fraud Protection által összeállított lista, amely a leggyakrabban használt attribútumokat tartalmazza. Device.GetAttributes(@"deviceFingerprinting.id")
      Device.GetSelectedAttributes(String sessionId, String attributeName) Legfeljebb 20 eszközattribútumot ad vissza a megadott ujjlenyomat-vételi munkamenethez. A kívánt attribútumok listáját vesszővel elválasztott paraméterekként kell megadni Device.GetSelectedAttributes(@"deviceFingerprinting.id", "deviceAsn","deviceCountryCode")
      Device.GetSpeedOfTravel(String sessionId) Egy eszköz maximális utazási sebességét adja vissza mérföld/óra sebességgel. A Fraud Protection az utolsó öt egymást követő ujjlenyomat-kezeléssel határozza meg a maximális sebességet, és kiszámítja az eszköz sebességét munkamenetről munkamenetre, és visszaadja a maximális értéket. Az eszközt munkamenetek során azonosítjuk a cookie-azonosító használatával. Device.GetSpeedOfTravel(@"deviceFingerprinting.id")

      BIN keresési függvények

      A BIN keresési függvények a banki azonosítószám (BIN) alapján adják meg a fizetésikártya-fiók adatait (például kártyahálózat, kártyatípus, kártya országkód, kártyakategória). A BIN-keresés adatai a vezető külső BIN-adatszolgáltatóktól származnak, majd a Fraud Protection által lesznek összeválogatva.

      Operátor Leírás Példa
      TÁROLÓ. Lookup(String BIN).cardNetwork

      Ez a függvény megkeresi a BIN fájlt, és visszaadja a kártyahálózatot (például Visa, Mastercard).

      TÁROLÓ. Lookup(@"card.bin").cardNetwork
      TÁROLÓ. Lookup(String BIN).cardType

      Ez az operátor megkeresi a BIN fájlt, és visszaadja a kártya típusát (például Terhelés, Hitel).

      TÁROLÓ. Lookup(@"card.bin").cardType
      TÁROLÓ. Lookup(String BIN).issuer

      Ez az operátor megkeresi a BIN fájlt, és visszaadja a kiállító szervezetet.

      TÁROLÓ. Lookup(@"card.bin").kiállító
      TÁROLÓ. Lookup(String BIN).countryCode

      Ez az operátor megkeresi a BIN fájlt, és a kártya ISO kétbetűs országkódját adja vissza.

      TÁROLÓ. Lookup(@"card.bin").countryCode
      TÁROLÓ. Lookup(String BIN).cardCategory

      Ez az operátor megkeresi a BIN-et, és visszaadja a kártyakategóriát (például előre fizetett, Vállalati, Rewards).

      TÁROLÓ. Lookup(@"card.bin").cardCategory
      TÁROLÓ. Lookup(String BIN).error

      Ez az operátor megkeresi a BIN fájlt, és hibaüzenetet ad vissza, ha a BIN nem található.

      TÁROLÓ. Lookup(@"card.bin").error

      Listafüggvények

      A Fraud Protection segítségével egyéni listákat tölthet fel, és a nyelven hivatkozhat rájuk. A listák feltöltéséről további információt a Listák kezelése című témakörben talál. A listák szabályokban való használatáról a jelen cikk későbbi, A listák használata a szabályok szakaszban című szakaszában talál további információt.

      Operátor Leírás Példa
      ContainsKey(
      Sztringlistanév,
      Karakterlánc oszlopneve,
      Sztringkulcs)
      Ez az operátor ellenőrzi, hogy a kulcs szerepel-e a Csalás elleni védelem lista megadott oszlopában.

      A következő oszlopban látható példa ellenőrzi, hogy az "E-mail támogatási lista" lista "E-mailek" oszlopa tartalmazza-e a @"user.email" változót .

      ContainsKey("E-mail támogatási lista", "E-mailek", @"user.email")
      Keresés(
      Sztringlistanév,
      String keyColName,
      String valueColName)
      Ez az operátor megkeresi egy kulcs értékét egy Csalás elleni védelem listában. A kulcsot tartalmazó oszlop nevét és az értéket tartalmazó oszlop nevét is meg kell adni.

      Az érték mindig sztringként lesz visszaadva. Ha a kulcs nem található, és a defaultValue paraméter nincs megadva, a rendszer az "Ismeretlen" értéket adja vissza.

      A következő oszlopban látható példa a @"user.email" változó értékét keresi az E-mail-támogatás lista E-mailek oszlopában. Ha talál egyezést, a függvény az Állapot oszlop értékét adja vissza a lista egyező sorából. Ha nem található egyezés, a függvény 0 értéket ad vissza.

      Lookup("E-mail támogatási lista", "E-mailek", @"user.email""Állapot";0)
      In Ez az operátor ellenőrzi, hogy a kulcs szerepel-e vesszővel tagolt értékek listájában. In(@"user.countryRegion", "US, MX, CA")
      InSupportList Ez az operátor ellenőrzi, hogy egy attribútum szerepel-e a támogatási listán. InSupportList('e-mail támogatási lista', @"user.email")
      IsSafe Ez az operátor ellenőrzi, hogy egy entitás biztonságosként van-e megjelölve egy támogatási listán. IsSafe('e-mail támogatási lista', @"user.email")
      IsBlock Ez az operátor ellenőrzi, hogy egy entitás blokkként van-e megjelölve egy támogatási listán. IsBlock('e-mail támogatási lista', @"user.email")
      IsWatch Ez az operátor ellenőrzi, hogy egy entitás figyelőként van-e megjelölve egy támogatási listán. IsWatch('e-mail támogatási lista', @"user.email")

      Listák használata szabályokban

      A ContainsKey és a Lookup operátorokkal hivatkozhat a Fraud Protectionbe feltöltött listákra. A listákról további információt a Listák kezelése című témakörben talál.

      ContainsKey

      Annak ellenőrzéséhez, hogy az egyik lista tartalmaz-e egy adott értéket, használja a ContainsKey operátort. Adja meg a lista nevét, az oszlopot és az ellenőrizni kívánt kulcsot.

      Feltöltheti például a kockázatos e-mail-címek egyoszlopos listáját, és kockázatos e-mail-listának nevezheti el.

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

      Ezután az alábbi szintaxis használatával elvetheti a listában szereplő kockázatos e-mail-címekről származó összes tranzakciót.

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

      Ez a záradék ellenőrzi, hogy a "Kockázatos e-mail lista" lista "E-mail" oszlopa tartalmazza-e a @email kulcsot. Ha igen, a rendszer elutasítja a tranzakciót.

      Keresés

      Többoszlopos listák esetén a Keresés operátorral ellenőrizheti egy adott kulcs oszlopának értékét.

      Létrehozhat például egy listát, amely egy oszlopot tartalmaz az e-mail-címekhez, és egy másik oszlopot, amely az e-mail-címek állapotát jelzi. Ezt a listát e-mail-listának kell nevezni.

      E-mail Állapot
      Kayla@contoso.com Kockázatos
      Jamie@bellowscollege.com Kockázatos
      Marie@atatum.com Kockázatos
      Camille@fabrikam.com Biztonságos
      Miguel@proseware.com Biztonságos
      Tyler@contoso.com Biztonságos

      Ezután az alábbi szintaxissal elvetheti a lista azon e-mail-címeinek összes tranzakcióját, amely kockázatos állapotú.

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

      Ez a záradék az "E-mail lista" lista "E-mail" oszlopában keresi a @"user.email" kulcsot, és ellenőrzi, hogy az "Állapot" oszlop értéke kockázatos-e. Ha igen, a rendszer elutasítja a tranzakciót.

      Ha a @"user.email" kulcs nem található a listában, a Fraud Protection az "Ismeretlen" értéket adja vissza.

      A saját alapértelmezett értékét is megadhatja ötödik paraméterként. További információt a cikk korábbi, Logikai operátorok című szakaszában talál.

      A Keresési operátor mindig egy sztringértéket ad vissza. Ha ezt az értéket Int, Double vagy DateTime értékre szeretné konvertálni, használjon egy típuselosztó operátort.

      Külső hívások, külső értékelések és helymeghatározások használata

      Attribútumok típuskövetkeztetése

      A változótípusok a használt környezetből következtetnek. Íme néhány példa:

      • A WHEN @isEmailValidated kifejezésben a változó logikai értékként van értelmezve.
      • A Model.Risk() kifejezésben. Az 500-as pontszámot > a rendszer kettős értékként értelmezi.
      • A @"user.creationDate" kifejezésben. Year < DateTime.UtcNow.Year, a változót DateTime értékként értelmezi a rendszer.

      Ha nincs elég környezet a változó típusának következtetéséhez, akkor karakterlánc-értéknek számít. Például a Model.Risk() kifejezésben . Score < Model.Bot(@"deviceFingerprinting.id"). Pontszám, mindkét változó sztringként van értelmezve.

      A nem összevonásos változó típusának megadásához használjon típus-öntési operátort.

      JSON-tömbök és objektumok

      A teljes tartománynév támogatja az összetett strukturált objektumok helyi változókként való felépítését, amelyek JSON-formában továbbíthatók a külső híváshoz vagy külső értékeléshez. A teljes tartománynév többi helyi helyhez hasonlóan a tömbök és objektumok nem módosíthatók a létrehozásuk után.

      JSON-tömbök

      A tömbök úgy jönnek létre, hogy a kifejezéseket zárójelpárba rendezik:

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

      JSON-objektumok

      Az objektumok kapcsos zárójelekkel jönnek létre:

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

      FQL-függvények JSON-tömbökhöz és objektumokhoz

      Szintaxis Leírás Példa
      myArr[0] Ezzel a szintaxissal elérheti egy adott tömbelemet az indexe alapján. myArr [0].property
      myArr [0][0]
      myArr [0][0].property
      myArr [0].property[0]
      myArr [0].property[0].property[0].property

      Ahol a fenti példákban a myArr egy tömb. Ennek a tömbnek a forrása lehet a @@payloadProperty, a külső értékelési válasz, a külső hívási válasz, a helyi változó vagy egy globális változó.

      Az alábbiakban példákat láthat arra, hogyan használhatja a szintaxist különböző tömbforrások alapján:

      • Tömbforrás: Hasznos adatok
      LET $sample = @@"myArr[0]".AsJsonArray()   
      RETURN Approve()   
      WHEN $sample[0].AsString() == "a"
      
      • Tömbforrás: Helyi változó
        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" 
        
      Szintaxis Leírás Példa
      Array.GetValue (TargetArray . AsJsonArray(), matchKey, matchValue, lookupKey) Ezzel a függvénnyel elérheti az első olyan tömbelemet, amely megfelel egy feltételnek.

      Értéket ad vissza

      Array.GetValue(@@"payloadProperty". AsJsonArray(), matchKey, matchValue, lookupKey)
      Array.GetValues(TargetArray . AsJsonArray(), matchKey, matchValue) Ezzel a függvénnyel egy feltételnek megfelelő tömbelemeket érhet el.

      Tömböt ad vissza

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

      Az alábbiakban részletesebb példákat láthat a fenti szintaxis különböző tömbforrásokon alapuló használatára:

      Tömbforrás Array.GetValue Array.GetValues
      Külső értékelések 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"
      Hasznos adat Hasznos adatminta: {"group":[{"item1": "a", "item2": "a1"}, {"item1": "b", "item2": "b1"}]}

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

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

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

      Globális változók Ugyanazzal a hasznos adatmintával, mint fentebb

      Do SetVariables(Var=@@"group")
      LET $group = GetVariable("Var"). AsJsonObject()
      LET $value = Array.GetValue($group, "item1", "a", "item2")
      RETURN Approve()
      WHEN $value. AsString() == "a1"
      Ugyanazzal a hasznos adatmintával, mint fentebb

      Do SetVariables(Var=@@"group")
      LET $group = GetVariable("Var"). AsJsonObject()
      LET $arr = Array.GetValues($group. AsJsonArray(), "item1", "a")
      RETURN Approve()
      Külső hívás

      Külső hívás (myCall) válasza: {"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"

      Külső hívás (myCall) válasza: {"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"

      JSON-tömbök és objektumok formázásának típusa

      • A következő . Mivel<a Type>() a JsonObject által támogatott:

        • AsString()
        • AsInt()
        • AsDouble()
        • AsDateTime()
        • AsBool()
        • AsJsonArray()
        • AsJsonObject()
      • Ha a két tömbsegítő metódus (Array.GetValue vagy Arrays.GetValues) valamelyikét használja, be kell írnia a leadott elemet. Típus>() típusként.< Példa:

        LET $arr = {myArr:[{item1: "red", number: 45}, {item1: "blue", number: 56}, {item1: "green", number: 33}]}
        LET $sample = Array.GetValues($arr.myArr.AsJsonArray(), "item1", "blue")
        
      • Miután az adatokat explicit módon JSON-objektummá vagy tömbgé alakította át, használhatja a következőt: Típus>(ok)ként<, ha szükséges, egy másik adattípusra való átíráshoz. Példa:

        RETURN Approve()
        WHEN $sample[0].number.AsInt() == 56
        
      • @@használata esetén az adatok implicit módon JSON-objektumba kerülnek. Ha ezután a JSON-objektumot egy másik adattípusra szeretné konvertálni, akkor a következőt kell használnia: Típus>() típusként.< Példa:

        LET $sample = @@”user.addresses”.AsJsonArray()
        
      • Ha egy adott formátumban szeretne kimenetet készíteni, akkor a következőt kell használnia: . Típus>() típusként.< Példa:

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

      Feljegyzés

      Ajánlott eljárások beírása:

      • Mindig írja be a öntöttet a . lánc végén.
      • Ha nem biztos benne, mindig explicit módon írja be a leadott elemet. Típus>() típusként<. Példa:
      LET $sample = External.myCall().data[0].Item1[0].AsJsonArray()
      
      Or
      
      LET $sample = @@”accommodations[0].rooms”.AsJsonArray()
      

      A döntés utáni műveletekben elérhető függvények

      A következő függvények csak a döntés utáni műveletekben használhatók. Ezek nem érhetők el a döntési szabályokban

      Szintaxis Leírás Példa
      SetResponse(String sectionName, k=v) Ezzel a függvénnyel kulcs-érték párokat adhat át az API-válasz CustomProperties szakaszának. A sectionName egy kihagyható paraméter. SetResponse("Scores", bot = Model.Bot(@deviceContextId), risk=Model.Risk())

      SetResponse(test="123")

      Response.Decision() Ez a függvény az aktuális értékelésre vonatkozó döntésre hivatkozik. Response.Decision() == "Jóváhagyás"