関数

Dynamics 365 Fraud Protection を使用すると、特定のタスクの実行に使用できる関数を柔軟に作成できます。 たとえば、関数を使用して、一緒に実行する必要があるコードのグループを結合できます。 または、関数を使用してコードを再利用できます。コードを 1 回記述して他の場所からアクセスすることで、コードをメインしやすくなります。 この例では、外部サービスを呼び出してそこから値をフェッチする場合、ロジックを関数内で定義し、他のリソースから関数を呼び出すことができます。

関数を定義する

関数は、入力パラメーターと出力プロパティで構成されます。

入力パラメーター。

関数は、呼び出し時に関数に渡されるパラメーターを定義できます。 入力パラメーターは、関数定義で定義されます。 呼び出し時に関数に渡されるパラメーターの数は、関数に定義されているパラメーターの数と正確に一致する必要があります。 定義されたパラメーターは、出力プロパティ内で使用して値を返すことができます。 詳細については、「出力プロパティ」を参照してください。 入力パラメーターの定義は省略可能です。

入力パラメーターは、次の 3 つの部分で構成されます。

  • パラメーター名: パラメーターを参照できる名前。

  • データ型: すべての入力パラメーターには、データ型が関連付けられている必要があります。 指定したデータ型は、パラメーターの値を対応する型に変換します。 関数は、次の表に示すデータ型をサポートします。

    データ型 サンプルの値
    Boolean True
    DateTime 2024 年 2 月 22 日午後 4 時 44 分
    倍精度浮動小数点型 10.0
    Integer 10
    String "Hello"
  • 既定値: すべてのパラメーターに既定値が必要です。 既定値は、"関数の評価" 中、または関数の呼び出しに問題がある場合に使用されます。

出力プロパティ

出力プロパティを使用して、関数の戻り値を定義できます。 出力プロパティは、関数の値を返すために "不正クエリ言語 (FQL) " ロジックを使用します。 その後、出力プロパティは、関数の呼び出し時に、他の関数、ルール、ベロシティ、事後決定アクション ルール、ルーティング ルール内からアクセスできます。 関数には、最大 30 個の出力プロパティを含めることができます。 FQL とその使用方法の詳細については、言語リファレンス ガイドを参照してください

出力プロパティは、次の 4 つの部分で構成されます。

  • プロパティの説明: プロパティの説明。 説明は省略できます。

  • データ型: プロパティから返される値のデータ型。 関数は、ブール値、datetime、double、整数、文字列など、すべてのプリミティブ データ型をサポートします。 他のリソースで参照されている関数の出力プロパティに重大な変更が加えられた場合は常に、元の出力プロパティ "データ型" の既定値が、リソースの実行を続行するためのフォールバックとして使用されます。 破壊的変更の後にリソースを更新することをお勧めします。

  • 既定値: プロパティの評価中に例外が発生すると、関数の結果として既定値が返されます。 たとえば、0 で除算し、Null 参照例外を指定します。

  • を返すコード エディター: コード エディターは、関数から値を返すために使用されます。 出力値を返す方法を次に示します。

    1. 関数内で定義された入力パラメーターを使用して、値を返すことができます。

      戻り値として入力パラメーターを返す出力プロパティの例。 入力パラメーターを定義する方法の詳細については、この記事の 「入力パラメーター」 セクションを参照してください。

    RETURN _number1 + _number2
    
    1. 関数を呼び出すルールを含む評価の要求属性と応答属性 (カスタム データを含む) の両方。 これらの属性には、演算子を使用して @ アクセスできます。 たとえば、@"salesTax" のようにします。

      要求属性を使用する関数の例:

    RETURN @"salesTax"
    
    1. 不正防止エンリッチメント データ。 たとえば、Geo.CountryCode() などです。

      riskscore を使用した関数の例:

    RETURN Geo.CountryCode(@"deviceContext.ipAddress")
    
    1. 不正アクセス防止にアップロードするリスト。 リストをアップロードする方法の詳細については、「リストの管理」を参照してください

      list を使用する関数の例:

    RETURN Lookup("Country_Score", "Country", "US", "ScoreCutOff")
    
    1. 不正アクセス防止で定義されている速度。 詳細については、「速度チェックの実行」を参照してください

      速度を使用する関数の例:

    RETURN Velocity.IPs_Per_User(@"deviceContext.ipAddress", 30s)
    
    1. 不正アクセス防止で作成された外部呼び出し。 詳細については、「外部呼び出し」を参照してください

      外部呼び出しを使用する関数の例:

    RETURN External.weather("Seattle").id
    
    1. 不正アクセス防止で作成された外部評価。 詳細については、「外部評価」を参照してください

      外部評価を呼び出す関数の例:

    LET $result = Assessments.myAssessment.Evaluate($baseInput = @@)
    RETURN $result.ToStr()
    
    1. 関数内の関数にアクセスします。

      別の関数を呼び出す関数の例:

    RETURN Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
    

Note

複数階層スタック内の任意の環境で関数を作成できます。 関数が、環境で使用可能な速度、外部呼び出し、リスト、外部評価などのリソースを参照する場合、関数を呼び出す下位環境では、関数が参照するリソースも継承されます。 たとえば、ルート内に外部呼び出しを参照して値を返す関数を作成した場合、関数を呼び出す子環境は、その外部呼び出しの結果にもアクセスできます。 関数を継承して呼び出す方法の詳細については、この記事で後述する「関数の 継承 」セクションを参照してください。

関数を発行する

  1. 不正アクセス防止ポータルで、ナビゲーション バーの [関数] を選択し、[新しい関数] を選択します。 Fraud Protection では、自分 (関数の作成者) にのみ表示される下書き関数が作成されます。 下書きに加えたすべての変更が自動的に保存されます。

  2. 新しい関数をゼロから定義するには、この記事で前述した「関数の 定義」 セクションを参照してください。

  3. 関数を発行するには、[発行] を選択します

  4. 確認ダイアログ ボックスで、名前と説明を変更できます。 [発行] を選びます。

Note

関数を発行すると、すべてのユーザーに表示されます。 その後、他の関数、ルール、ベロシティ、決定後ルール、ルーティング ルール内で関数を呼び出すことができます。

関数、ルール、ベロシティ、事後決定アクション、ルーティング ルールなどの他のリソースで関数を使用する方法については、この記事の後半の「リソースからの関数の呼び出し」セクションを参照してください

[サンプル] ウィンドウ

関数を作成または編集すると、 ページの横に [サンプル ] ペインが表示されます。

  • 関数はどの評価にも関連付けられません。 サンプル ペイロードは、関数で参照できるすべてのイベント プロパティを表示するユーザーにとって役立つガイドとして示されています。 ウィンドウの上部にある [イベント] フィールドでイベントの種類を選択します。

  • ペイロードの サンプル セクションには、評価の要求 API で送信できるプロパティの例が含まれています。

関数を管理する

  1. 以前に発行した関数を編集するには、関数を選択し、[編集] を選択 します。 発行された関数の下書きが作成され、自分だけが使用できます。 下書きに加えたすべての変更が自動的に保存されます。 変更を運用環境にプッシュするには、[発行] を選択します。 以前に発行された関数は、変更によって上書きされます。 下書きをカード解除するには、[Disカード] を選択します。

  2. 既存の関数を削除するには、省略記号 (...) を選択し、[削除] を選択 します

  3. 関数の名前または説明を更新するには、省略記号 (...) を選択し、[名前の変更] を選択 します

  4. 関数を検索するには、[検索] フィールドにキーワード (keyword)を入力します。 すべての関数名と説明が検索され、検索キーワード (keyword)に従って結果がフィルター処理されます。

関数を評価する

関数を発行する前に、[関数の 評価 ] ウィンドウを使用して、期待した結果が返されることを確認できます。

  • 関数評価ウィンドウを開くには、[関数] タブで [展開] を選択します。
  • ウィンドウを閉じるには、[折りたたみ] を選択 します

評価ウィンドウを開くと、出力プロパティの一覧が結果と共に表示されます。 評価では、返される内容を決定するときに、サンプル ペイロード セクションの入力パラメーターと値に既定値が使用されます。 これらの値のいずれかが変更されると、出力も変更されます。 こうすることで、各出力プロパティの正しい値が返されることを確認できます。

リソースから関数を呼び出す

パブリッシュされた関数は、ルール、ベロシティ、決定後アクション、ルーティング ルールなどのリソースから呼び出すことができます。 関数内で定義されているすべての出力プロパティにアクセスするには、関数を呼び出します。 その後、値を使用して意思決定を行うことができます。

ルール

関数は、同じ環境の任意のルール (評価内) から、および以下の階層内の子環境から呼び出すことができます。 ルールの詳細については、「ルール」を参照してください

LET $sum = Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5

速度

関数は、同じ環境の任意の速度から、および以下の階層内の子環境から呼び出すことができます。 ベロシティの詳細については、「速度チェックを実行する」を参照してください

SELECT DistinctCount(@"device.deviceContextId") AS Devices_Per_IP
FROM AccountLogin
WHEN Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum > 5
GROUPBY @"device.ipAddress"

決定後のルール

関数は、同じ環境の任意の決定後アクション ルール (任意の評価内) から、および以下の階層内の子環境から呼び出すことができます。 事後決定アクションルールの詳細については、「事後決定アクションルール」を参照してください

DO SetResponse()
WHEN Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum == 5

ルーティング規則

関数は、同じ環境のルーティング規則と、以下の階層内の子環境から呼び出すことができます。 ルーティング規則の詳細については、「ケース管理」を参照してください

ROUTETO Queue("General Queue")
WHEN Functions.MyFunction(@"purchase.request.totalAmount", @"purchase.request.salesTax").Calculate_Sum > 5

関数の継承

関数は、同じ環境と、以下の階層内の子環境から呼び出すことができます。 呼び出し構文は、関数が存在する場所と呼び出しの場所によって異なります。 複数階層の設定内で関数を呼び出すさまざまな方法を次に示します。

Note

関数が速度、リスト、外部呼び出し、外部評価などのリソースを参照している場合、関数が呼び出されると、そのリソースは、以下の階層内の子環境からも継承されます。

同じ環境内で作成された関数を呼び出す

次の例では、ルールと関数の両方が同じ環境に存在するルールから関数を呼び出します。

LET $sum = Functions.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5

ルート環境内で作成された関数を呼び出す

次の例では、子環境からルートに作成された関数を呼び出します。

LET $sum = Functions.root.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5

親環境内で作成された関数を呼び出す

次の例では、直接の親環境から関数を呼び出します。

LET $sum = Functions.parent.MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5

スタックの上の任意の環境内で作成された関数を呼び出す

次の例では、スタックの上の環境で作成され、下位環境内のルールから継承された関数を呼び出します。

LET $sum = Functions.environment["environmentid"].MyFunction(@"totalAmount", @"salesTax").Calculate_Sum
RETURN Approve()
WHEN $sum > 5

関数とリソースの制限

Fraud Protection には、環境ごとに作成できる関数の数と、関数内で参照できるリソースの数に制限があります。

リソース 制限
環境内で発行できる関数の最大数 30
関数内に存在できる出力プロパティの最大数 30
関数が参照できる一意のベロシティの最大数 15
関数が参照できる外部呼び出しの最大数 2
関数が参照できる一意のリスト参照の最大数 5
関数が参照できる一意の外部評価の最大数 2
ルール セットが呼び出すことができる関数の最大数 10
ルーティング規則が呼び出すことができる関数の最大数 10
決定後アクションが呼び出すことができる関数の最大数 10
ベロシティが呼び出すことができるリソースの最大数 10