共用方式為


函式

Dynamics 365 Fraud Protection 可讓您彈性地建立可用來執行特定工作的函式。 例如,您可以使用函式來結合必須一起執行的程式代碼群組。 或者,您可以使用函式重複使用程式碼,您可以在其中撰寫程式代碼一次,並從其他地方存取程序代碼,讓程式碼更容易維護。 在此範例中,如果您想要呼叫外部服務來從中擷取值,則可以在函式內定義邏輯,而且可以從其他資源叫用函式。

定義函式

函式包含輸入參數和輸出屬性。

輸入參數

函式可以定義在調用時傳遞至函式的參數。 輸入參數定義中定義。 在調用時傳入函式的參數數目應該完全符合為函式定義的參數數目。 定義的參數可以在輸出屬性內使用,以傳回值。 如需詳細資訊,請參閱 輸出屬性。 定義輸入參數是選擇性的。

輸入參數包含下列三個部分。

  • 參數名稱:可以參考參數的名稱。

  • 數據類型:每個輸入參數都應該有相關聯的數據類型。 您指定的數據類型會將參數的值轉換成對應的型別。 函式支援下表所列的數據類型。

    資料類型 範例值
    布林值 True
    Datetime 2月22,2024下午4:44
    Double 10.0
    整數 10
    String 「您好」
  • 預設值:每個參數都需要預設值。 預設值會在「函式評估」期間使用,或者如果函式調用發生問題,則為 。

輸出屬性

您可以使用輸出屬性來定義函式的傳回值。 輸出屬性會使用「詐騙查詢語言(FQL)」邏輯來傳回函式的值。 然後,您可以在叫用函式時,從其他函式、規則、速度、決策後動作規則和路由規則中存取輸出屬性。 函式最多可以有 30 個輸出屬性。 如需 FQL 及其使用方式的詳細資訊,請參閱 語言參考指南

輸出屬性包含下列四個部分。

  • 屬性描述:屬性的描述。 描述是選擇性的。

  • 數據類型:從屬性傳回之值的數據類型。 函式支援所有基本數據類型,例如布爾值、日期時間、雙精度浮點數、整數和字串。 每當對其他資源中所參考之函式的輸出屬性進行重大變更時,原始輸出屬性 「data type」 的預設值會作為後援,以繼續進行資源執行。 建議您在重大變更之後更新您的資源。

  • 默認值:在屬性評估期間遇到例外狀況時,會傳回作為函式結果的預設值。 例如,除以 0 和 Null 參考例外狀況。

  • 傳回值的程式代碼編輯器:程式代碼編輯器用來從函式傳回值。 以下是傳回輸出值的方法。

    1. 函數內定義的輸入參數可用來傳回值。

      傳回輸入參數做為傳回值的輸出屬性範例。 如需如何定義輸入參數的詳細資訊,請參閱 本文稍早的<輸入參數 >一節。

    RETURN _number1 + _number2
    
    1. 評估的要求和回應屬性(包括自定義數據)都包含叫用函式的規則。 您可以使用運算子存取這些屬性 @ 。 例如: @"salesTax" 。

      使用要求屬性的函式範例:

    RETURN @"salesTax"
    
    1. 詐騙保護擴充數據。 例如,Geo.CountryCode()。

      使用風險核心的函式範例:

    RETURN Geo.CountryCode(@"deviceContext.ipAddress")
    
    1. 您上傳至詐騙保護的清單。 如需如何上傳清單的詳細資訊,請參閱 管理清單

      使用清單的函式範例:

    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
    

注意

您可以在多階層堆疊的任何環境中建立函式。 當函式參考環境中可用的速度、外部呼叫、清單和外部評估等資源時,叫用函式的較低環境也會繼承函式參考的資源。 例如,如果您在根目錄中建立參考外部呼叫以傳回值的函式,叫用函式的子環境也可以存取該外部呼叫的結果。 如需如何繼承和叫用函式的詳細資訊,請參閱本文稍後的函 式繼承 一節。

發佈函式

  1. 在 [詐騙保護] 入口 網站中,選取 導覽列中的 [函式 ],然後選取 [ 新增函式]。 詐騙保護會建立只為您顯示的草稿函式(函式的建立者)。 您對草稿所做的所有變更都會自動儲存。

  2. 若要從頭開始定義新的函式,請參閱 本文稍早的<定義函 式>一節。

  3. 若要發佈函式,請選取 [ 發佈]。

  4. 在確認對話框中,您可以變更名稱和描述。 選取發行

注意

發佈函式之後,所有使用者都能看見該函式。 然後,可以在其他函式、規則、速度、決策後規則和路由規則內叫用函式。

如需如何在其他資源中使用函式的資訊,例如函式、規則、速度、決策後動作和路由規則,請參閱 本文稍後的<從資源 叫用函式>一節。

[範例] 窗格

當您建立或編輯函式時,[ 範例 ] 窗格會出現在頁面的一側。

  • 函式不會系結至任何評定。 範例承載會顯示為使用者有用的指南,這些指南會顯示函式中可參考的所有事件屬性。 在窗格頂端的 [事件] 字段中選取事件類型

  • 承載 範例 區段包含可在要求 API 中傳送評估的屬性範例。

管理函式

  1. 若要編輯先前發佈的函式,請選取函式,然後選取 [ 編輯]。 系統會建立已發佈函式的草稿,並僅供您使用。 您對草稿所做的所有變更都會自動儲存。 若要將變更推送至生產環境,請選取 [ 發佈]。 先前發佈的函式會隨著變更覆寫。 若要捨棄草稿,請選取 [ 捨棄]。

  2. 若要刪除現有的函式,請選取省略號 (...),然後選取 [ 刪除]。

  3. 若要更新函式的名稱或描述,請選取省略號 (...),然後選取 [ 重新命名]。

  4. 若要搜尋函式,請在 [搜尋] 欄位中輸入關鍵字。 會搜尋所有函式名稱和描述,並根據搜尋關鍵詞來篩選結果。

評估函式

發佈函式之前,您可以使用 [ 函式評估 ] 窗格,確定它會傳回您預期的結果。

  • 若要開啟函式評估窗格,請選取 [函式] 索引卷標中的 [展開]。
  • 若要關閉窗格,請選取 [ 折迭]。

當評估窗格開啟時,輸出屬性清單會以其結果顯示。 評估會在判斷應該傳回的內容時,針對範例承載區段的輸入參數和值使用預設值。 如果其中任何一個值變更,則輸出也會變更。 如此一來,您就可以確定會傳回每個輸出屬性的正確值。

從資源叫用函式

您可以從資源叫用已發佈的函式,例如規則、速度、決策後動作和路由規則。 叫用函式即可存取函式內定義的所有輸出屬性。 然後,這些值就可以用於決策。

規則

函式可以從相同環境中的任何規則和下列階層中的子環境叫用。 如需規則的詳細資訊,請參閱 規則

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

函式繼承

函式可以在相同環境中叫用,並從下列階層中的子環境叫用。 調用語法取決於函式存在的位置,以及從何處叫用。 以下是在多重階層設定內叫用函式的不同方式。

注意

如果函式參考速度、清單、外部呼叫和外部評估等資源,當叫用函式時,也會從下列階層中的子環境繼承資源。

叫用在相同環境中建立的函式

下列範例會從規則和函式同時存在於相同環境中的規則叫用函式。

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

函式和資源限制

詐騙保護限制每個環境可以建立的函式數目,以及可在函式內參考的資源數目。

資源 限制
可在環境中發佈的函式數目上限 30
函式中可以存在的輸出屬性數目上限 30
函式可以參考的唯一速度數目上限 15
函式可以參考的外部呼叫數目上限 2
函式可以參考的最大數目唯一列表查閱 5
函式可以參考的唯一外部評估數目上限 2
規則集可以叫用的函式數目上限 10
路由規則可以叫用的函式數目上限 10
後續決策動作可以叫用的函式數目上限 10
速度可以叫用的資源數目上限 10