翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
例 2: A/B トラフィック分割
シナリオ
ストリーミングサービスは、CUSTOM_OUTPUT 関数を使用して、広告リクエストトラフィックを A/B テスト用の 2 つの広告決定サーバー (ADS) URLs にランダムに分割したいと考えています。広告リクエストの半分は v1 エンドポイントに送信され、半分は v2 エンドポイントに送信されます。
設定
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— HTTP 呼び出しを行わずに式CUSTOM_OUTPUTを評価します。 -
Output— 2 つの ADS URL のいずれかをランダムに選択する式adsRequest.urlにマッピングします。 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% を 2 番目の URL に送信します。
注記
に書き込むと、現在の広告時間枠の再生設定で設定されたデフォルトの ADS URL がadsRequest.url上書きされます。
詳細については、CUSTOM_OUTPUT、PRE_ADS_REQUEST、および JSONata 式リファレンス を参照してください。