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:
- Utasítások
- Hivatkozási attribútumok és változók
- Saját változók meghatározása
- Globális változók függvényei
- Döntési függvények
- Megfigyelési függvények
- Összesítő függvények
- Logikai operátorok
- Összehasonlító operátorok
- Matematikai függvények
- DateTime függvények
- Típusöntvény-operátorok
- Sztringfüggvények
- Gibberish észlelési függvények
- Mintaészlelési függvények
- Modellfüggvények
- Geofüggvények
- Eszközattribútum-függvények
- BIN keresési függvények
- Függvények listázása
- Listák használata szabályokban
- Külső hívások, külső értékelések és helymeghatározások használata
- Attribútumok típuskövetkeztetése
- JSON-tömbök és objektumok
- A döntés utáni műveletekben elérhető függvények
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>) |
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ó:
|
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:
|
RETURN Felülvizsgálat() 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 SELECT DistinctCount(@"purchaseId") |
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:
|
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:
|
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:
|
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:
|
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
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.
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.
Á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
- Külső hívásra való hivatkozáshoz írja be a Külső kifejezést, majd a hivatkozni kívánt külső hívást. További információ: Külső hívás használata szabályokban.
- Külső értékelésre való hivatkozáshoz írja be az Értékelések típust, majd a hivatkozni kívánt külső értékelést. További információ: Külső értékelés használata szabályokban.
- A sebességre való hivatkozáshoz írja be a Velocity kifejezést, majd a hivatkozni kívánt sebességet. További információ: Sebesség használata szabályokban.
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"}]} |
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" |