本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例 2:A/B 流量分割
案例
串流服務想要使用 CUSTOM_OUTPUT 函數,在 A/B 測試的兩個廣告決策伺服器 (ADS) URLs 之間隨機分割廣告請求流量。一半的廣告請求會移至 v1 端點,一半則會移至 v2 端點。
Configuration
A/B 流量分割 (CUSTOM_OUTPUT):
{ "FunctionId": "abTestAdsUrl", "FunctionType": "CUSTOM_OUTPUT", "CustomOutputConfiguration": { "Runtime": "JSONATA", "Output": { "adsRequest.url": "{%$random() < 0.5 ? 'https://ads.example.com/v1/decision?session=' & session.id : 'https://ads.example.com/v2/decision?session=' & session.id%}" } } }
在此組態中:
-
FunctionId— 此函數的唯一名稱。 -
FunctionType—CUSTOM_OUTPUT評估表達式而不進行 HTTP 呼叫。 -
Output— 映射adsRequest.url到會隨機選取兩個 ADS URLs 之一的表達式。
函數映射
{ "FunctionMapping": { "PRE_ADS_REQUEST": "abTestAdsUrl" } }
函數執行時會發生什麼情況
播放期間遇到廣告休息時間。
MediaTailor 會執行
PRE_ADS_REQUEST生命週期掛鉤並執行abTestAdsUrl。$random()函數會傳回介於 0 和 1 之間的值。如果值小於 0.5,函數會將 ADS URL 設定為 v1 端點。否則,它會將 URL 設定為 v2 端點。
每個廣告休息時間都會評估 $random()函數,因此分割是每個廣告請求,而不是每個工作階段。
提示
若要調整流量分割比率,請變更閾值。例如, $random() < 0.8會將 80% 的流量傳送至第一個 URL,並將 20% 傳送至第二個 URL。
注意
寫入 可adsRequest.url覆寫目前廣告休息時間播放組態中設定的預設 ADS URL。
如需詳細資訊,請參閱CUSTOM_OUTPUT、PRE_ADS_REQUEST及JSONata 表達式參考。