Nyelvi referencia útmutató
A Microsoft Dynamics 365 saját, gazdag és kifejező nyelvvel rendelkezik, amely segít meghatározni és kifejezni a csalási stratégiát. 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 nyelvi referencia-útmutató tartalmazza a nyelvet alkotó operátorok, függvények és utasítások teljes listáját:
- Utasítások
- Döntési függvények
- Műveletfüggvények
- Megfigyelési függvények
- Modellfüggvények
- Gibberish észlelési függvények
- Eszközattribútum-függvények
- Hivatkozási attribútumok és változók
- Logikai operátorok
- Függvények listázása
- Összehasonlító operátorok
- BIN keresési függvények
- Geofüggvények
- Sztringfüggvények
- Matematikai függvények
- Típusöntvény-operátorok
- DateTime függvények
- Összesítő függvények
- Globális változók függvényei
Az útmutató más cikkeket is tartalmaz. Íme néhány példa:
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 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" |
OB Standard kiadás RVE OB Standard kiadás RVE ObservationFunction>(<KeyValuePairs>)< |
Az OB Standard kiadás RVE 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. Az OB Standard kiadás RVE 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 az OB Standard kiadás RVE utasítást. Az alábbi szabályok minden záradékához legfeljebb egy használható:
|
OB Standard kiadás RVE Output(reason="high score") OB Standard kiadás RVE TRACE(ip=@"device.ipAddress") HA @"riskscore"> 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 @"riskscore"> 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 |
Standard kiadás LECT <AggregationFunction> AS <VelocityName> FROM <AssesmentType> GROUPBY <GroupExpression> [ MIKOR <BooleanExpression> ] |
A sebességkészletekben egy Standard kiadás LECT utasítást használunk a sebesség meghatározásához. 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 Standard kiadás LECT 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ó. |
Standard kiadás LECT Count() AS _Purchase_Rejections_Per_Email Standard kiadás LECT 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ó. |
HA @"riskscore"> 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ó, és egy műveletfüggvény követi | DO SetResponse(name = @"firstname" + @"lastname") |
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") |
Műveletfüggvények
A műveletfüggvények a döntés utáni műveleti szabályban végrehajtandó művelet megadására szolgálnak.
Művelettípus | 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. Megadhatja a kulcsértékpár alszakasznevét. Túlterhelés: • SetResponse(k=v) |
SetResponse("Scores", bot = Model.Bot(@deviceContextId), risk=Model.Risk()) SetResponse(test="123") |
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) | Ez a függvény kulcs-érték párok API-válaszba való továbbítására használható. | 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") |
Modellfüggvények
A modellfüggvények futtatják a különböző csalási modelleket, és 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) |
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.
Eszközattribútum-függvények
Operátor | Leírás | Példa |
---|---|---|
Device.GetAttributes(String sessionId) | A kiválasztott eszközattribútumokat adja vissza az eszköz ujjlenyomatából. A kiválasztott eszközattribútumokat a Fraud Protection állítja össze, és a szabályokban gyakran használt attribútumok készlete. | Device.GetAttributes(@"deviceContext.deviceContextId).attribute_name |
Device.GetFullAttributes(String sessionId) | Az eszközattribútumok teljes készletét adja vissza az eszköz ujjlenyomatából. Ezt a függvényt csak akkor használja, ha szükséges az eszközattribútumok teljes készletének eléréséhez. Az eszközattribútumok teljes készletének megtekintéséhez tekintse meg az eszköz ujjlenyomatának beállítását. | Device.GetFullAttributes(@"deviceFingerprinting.id").attribute_name |
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. Az attribútum elküldhető a kérelem hasznos adatainak részeként, vagy a Microsoft Dynamics 365 Fraud Protection generálhatja. 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 következtethető, amelyben használva van. 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 |
@"botScore" | Minden fióklétrehozási vagy fiókbeléptetési eseményhez a Fraud Protection AI-modelljei 0 és 999 közötti robotpontszámot hoznak létre. A magasabb pontszám nagyobb valószínűséggel jelzi, hogy az eseményt egy robot kezdeményezte. A @botScore használatával hivatkozhat erre a pontszámra a robot utáni pontozási záradékokban és a kockázatkezelés utáni pontozási záradékokban. |
@"botScore" |
@"riskScore" | A Csalásvédelem AI-modelljei minden vásárlási vagy fiókvédelmi esemény esetében 0 és 999 közötti kockázati pontszámot hoznak létre. A magasabb pontszám magasabb kockázatot jelez. A @riskScore használatával hivatkozhat erre a pontszámra a kockázatkezelés utáni záradékokban. |
@"riskScore" |
@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") |
Response.Decision() | Ez a függvény az aktuális értékelésre vonatkozó döntésre hivatkozik. | Response.Decision() == "Jóváhagyás" |
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() OB Standard kiadás RVE Output(Diagnostics = $extResponseDiagnostics ) MIKOR $extResponseDiagnostics. HttpStatusCode != 200 |
Logikai operátorok
Operátor | Leírás | Példa |
---|---|---|
és (>) | Logikai és | @"riskScore" > 500 &> @"riskScore"< 800 @"riskScore" > 500 és @"riskScore"< 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" |
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. | ContainsKey("E-mail támogatási lista", "E-mailek", @"user.email") Ez a példa ellenőrzi, hogy az "E-mail támogatási lista" lista "E-mailek" oszlopa tartalmazza-e a @"user.email" változót . |
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. |
Lookup("E-mail támogatási lista", "E-mailek", @"user.email""Állapot";0) Ez a példa a @"user.email" változót keresi az "E-mail támogatási lista" lista "E-mailek" oszlopában, és visszaadja a megfelelő értéket az "Állapot" oszlopban. Ha a kulcs nem található a listában, a Fraud Protection 0 értéket ad vissza. |
LookupClosest( String listName, String keyColumnName, String key, String valueColumnName, String defaultValue) |
Ez az operátor megkeresi egy kulcs értékét egy Csalás elleni védelem listában. Ha a kulcs nem található, a keresett kulcshoz ábécérendben legközelebbi érték lesz visszaadva. Túlterhelés:
|
LookupClosest("IP Addresses", "IP", @"device.ipAddress", "City") == "Seattle" Ez a példa a @ipAddress változót keresi az "IP-címek" lista "IP" oszlopában, és visszaadja a megfelelő értéket a "Város" oszlopban. Ha @ipAddress nem található a listában, a kifejezés a következő legközelebbi IP-cím értékét adja vissza a listában. |
In | Ez az operátor ellenőrzi, hogy a kulcs szerepel-e vesszővel tagolt értékek listájában. In(Sztringkulcs, Sztringlista) |
In(@"user.countryRegion", "US, MX, CA") |
Ö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. | @"riskScore"> 500 |
< | Ez az operátor ellenőrzi, hogy az első érték kisebb-e a másodiknál. | @"riskScore"< 500 |
>= | Ez az operátor ellenőrzi, hogy az első érték nagyobb-e, mint a második érték. | @"riskScore">= 500 |
<= | Ez az operátor ellenőrzi, hogy az első érték kisebb-e, mint a második érték. | @"riskScore"<= 500 |
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 |
---|---|---|
BIN. 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). |
BIN. Lookup(@"card.bin").cardNetwork |
BIN. 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). |
BIN. Lookup(@"card.bin").cardType |
BIN. Lookup(String BIN).issuer | Ez az operátor megkeresi a BIN fájlt, és visszaadja a kiállító szervezetet. |
BIN. Lookup(@"card.bin").kiállító |
BIN. 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. |
BIN. Lookup(@"card.bin").countryCode |
BIN. 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). |
BIN. Lookup(@"card.bin").cardCategory |
BIN. Lookup(String BIN).error | Ez az operátor megkeresi a BIN fájlt, és hibaüzenetet ad vissza, ha a BIN nem található. |
BIN. Lookup(@"card.bin").error |
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") |
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 |
---|---|---|
Contains(String substring) | Ez az operátor ellenőrzi, hogy egy sztring tartalmaz-e másik sztringet. Contains(String substring) |
@"productList`.productName". Contains("Xbox") |
ContainsOnly(CharSet) | Ez az operátor ellenőrzi, hogy egy sztring csak a megadott karakterkészleteket tartalmazza-e. ContainsOnly(Charset1 Charset2 ... stb.) |
@"irányítószám". ContainsOnly(CharSet.Numerikus) |
ContainsAll(CharSet) | Ez az operátor ellenőrzi, hogy egy sztring tartalmazza-e a megadott összes karakterkészletet. ContainsAll(Charset1 Charset2 ... stb.) |
@"irányítószám". ContainsAll(CharSet.Numerikus|CharSet.Hypen) |
ContainsAny(CharSet) | Ez az operátor ellenőrzi, hogy egy sztring tartalmazza-e a megadott karakterkészleteket. ContainsAll(Charset1 Charset2 ... stb.) |
@"irányítószám". ContainsAny(CharSet.Numerikus|CharSet.Hypen) |
StartsWith(Sztringelőtag) | Ez az operátor ellenőrzi, hogy egy sztring egy megadott előtaggal kezdődik-e. StartsWith(Sztringelőtag) |
@"user.phoneNumber". StartsWith("1-") |
EndsWith(Sztring utótag) | Ez az operátor ellenőrzi, hogy egy sztring egy megadott utótaggal végződik-e. EndsWith(Sztring utótag) |
@"user.email". EndsWith("@contoso.com") |
IsNumeric() | Ez az operátor ellenőrzi, hogy egy sztring numerikus érték-e. (Sztring). IsNumeric() |
@"user.email". IsNumeric() |
Hossz | Ez az operátor a sztringben szereplő karakterek számát adja vissza. |
@"user.username". Hossza |
Convert.ToDateTime(@"user.creationDate"). ToString("yyyyy-MM-dd HH:mm:ss") | 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") |
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 |
Aposztróf | ' |
Asperand | @ |
Fordított perjel | \ |
Vessző | , |
Hypen | - |
Numerikus | 0–9 |
Időszak | . |
Perjel | / |
aláhúzás | _ |
Szóköz | Egy szóköz |
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(@"riskScore",@"botScore") |
Math.Max(Dupla érték1, Dupla érték2) | Ez az operátor legfeljebb két értéket számít ki. | Math.Max(@"riskScore",@"botScore") |
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 |
---|---|---|
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") |
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 |
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 |
---|---|---|
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. | @"riskScore". ToInt32() |
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. | Standard kiadás LECT 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. | Standard kiadás LECT 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. | Standard kiadás LECT Sum(@"totalAmount") AS totalSpending |
Globális változók függvényei
A Globális változók függvényekkel globális változókat állíthat be és kérhet le a szabályokon, a helymeghatározásokon, az útválasztási szabályokon és a döntés utáni műveleti szabályokon belül. A beállított változók ugyanabból a környezetből vagy a veremen belüli környezetekből érhetők el. Ha például globális változókat állít be egy szabályban a gyökérkörnyezetben, a változók ugyanabból a környezetből vagy gyermekeikből is elérhetők a szabályokon belül. A globális változók az értékelésre is jellemzőek. Az egyik értékelésen belüli változókészlet nem érhető el a Hypenhez egy másik értékelésből.
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() |
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.
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 |
Széf |
Miguel@proseware.com |
Széf |
Tyler@contoso.com |
Széf |
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 @"riskScore" > 500 kifejezésben a változó kettős értékként lesz értelmezve.
- 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. A @"riskScore" <@"botScore"kifejezésben például 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, amelyeket átadhat a külső hívásnak vagy a külső értékelésnek JSON-formában. 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].propertymyArr [0][0]myArr [0][0].propertymyArr [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 valamelyikét használja, . GetValue vagy . GetValues, be kell gépelnie 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.
Példa:
LET $sample = External.myCall().data[0].Item1[0].AsJsonArray()
Or
LET $sample = @@”accommodations[0].rooms”.AsJsonArray()
- Ha nem biztos benne, mindig explicit módon írja be a leadott elemet. Típus>() típusként<.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: