

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# CUSTOM\_OUTPUT
<a name="monetization-functions-types-custom-output"></a>

## 使用情況
<a name="monetization-functions-types-custom-output-when"></a>

`CUSTOM_OUTPUT` 當您的函數邏輯純粹是運算時，請使用 。常見的使用案例包括根據使用者代理程式字串分類裝置、使用 A/B 測試邏輯選取廣告決策伺服器 URLs，以及在玩家參數到達廣告決策伺服器之前重新格式化。

`CUSTOM_OUTPUT` 函數是最快的類型，因為它們會在沒有網路呼叫的記憶體中評估表達式。每當您無需聯絡外部服務即可完成目標時，請選擇此類型。

## 組態欄位
<a name="monetization-functions-types-custom-output-fields"></a>

`CUSTOM_OUTPUT` 函數有兩個欄位：
+ **執行時間** — 表達式語言。將此設定為 `JSONATA`。
+ **輸出** — 鍵/值對的映射。每個索引鍵都是輸出繫結名稱 （例如 `player_params.device_type`)，而每個值都是 MediaTailor 在執行時間評估的表達式。

**注意**  
使用 `{%...%}` 在字串欄位中包裝 JSONata 運算式。沒有這些分隔符號的值會被視為靜態字串。例如， 會`"{%session.id%}"`評估表達式，而 `"session.id"`是文字文字。

## 執行時間行為
<a name="monetization-functions-types-custom-output-behavior"></a>

當 MediaTailor 執行`CUSTOM_OUTPUT`函數時，它會根據目前的工作階段狀態評估輸出區塊中的每個表達式。所有表達式都會看到相同的輸入快照。評估的結果會成為函數的輸出。

如果有任何表達式無法評估，MediaTailor 會捨棄整個函數的輸出，並像未連接函數一樣繼續。函數不會部分遞交結果。

## 範例：A/B 流量分割
<a name="monetization-functions-types-custom-output-example"></a>

下列函數會將每個廣告休息時間隨機指派給兩個廣告決策伺服器 URLs之一。它專為`PRE_ADS_REQUEST`生命週期掛鉤而設計。

```
{
    "FunctionId": "abTestAdsUrl",
    "FunctionType": "CUSTOM_OUTPUT",
    "CustomOutputConfiguration": {
        "Runtime": "JSONATA",
        "Output": {
            "adsRequest.url": "{%$random() < 0.5 ? 'https://ads.example.com/v1' : 'https://ads.example.com/v2'%}"
        }
    }
}
```

如需此範例的完整演練，請參閱 [函數範例](monetization-functions-examples.md)。