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


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:

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>)<
[ MIKOR <BooleanExpression>

]

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ó:

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

    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:

    • 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 @"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
      FROM Purchase
      WHEN @"ruleEvaluation.decision" == "Elutasítás"
      GROUPBY @"user.email"

      Standard kiadás LECT 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ó.

      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:

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

      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:

      • Lookup(String listName, String keyColumnName, String key, String valueColumnName, String defaultValue)

      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.

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

      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].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 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<.