View a markdown version of this page

範例 4:次要廣告伺服器備用 - AWS Elemental MediaTailor

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

範例 4:次要廣告伺服器備用

案例

您的主要 ADS 有時會傳回比廣告休息時間可以保留的廣告更少的廣告。發生這種情況時,您想要從次要廣告伺服器擷取額外的廣告,並將其附加到廣告清單,讓額外的廣告可以填滿剩餘的時間。

此範例使用 POST_ADS_RESPONSE lifecycle hook。VAST_REQUEST 函數會擷取次要廣告,並SEQUENTIAL_EXECUTOR協調程序。執行器的輸出區塊會將擷取的廣告附加到廣告清單,並在主要回應已有足夠廣告時完全RunCondition略過次要擷取。

函數組態

擷取函數 (fetchBackupAds):

{ "FunctionId": "fetchBackupAds", "FunctionType": "VAST_REQUEST", "VastRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://backup-ads.example.com/vast?sid=' & session.uuid%}", "Headers": { "Accept": "application/xml" }, "RequestTimeoutMilliseconds": 1000, "Output": { "temp.backupAds": "{%response.parsedAds%}" } } }

序列 (backupAdsFallback):

{ "FunctionId": "backupAdsFallback", "FunctionType": "SEQUENTIAL_EXECUTOR", "SequentialExecutorConfiguration": { "Runtime": "JSONATA", "TimeoutMilliseconds": 2000, "FunctionList": [ { "FunctionId": "fetchBackupAds", "RunCondition": "{%$count(adsResponse.ads) < 3%}" } ], "Output": { "adsResponse.ads": "{%$count(adsResponse.ads) < 3 ? $append(adsResponse.ads, temp.backupAds)[] : adsResponse.ads[]%}" } } }

函數映射

{ "FunctionMapping": { "POST_ADS_RESPONSE": "backupAdsFallback" } }

執行時間會發生什麼情況

  1. MediaTailor 會接收並剖析主要 ADS 回應,然後觸發POST_ADS_RESPONSE生命週期掛鉤。

  2. 如果主要回應包含少於 3 個廣告, 會RunCondition評估 true並fetchBackupAds呼叫次要廣告伺服器。MediaTailor 接著會將回應剖析為 VAST、解析包裝函式重新導向,並將剖析的廣告寫入 temp.backupAds。

  3. 如果主要回應已有 3 個或更多廣告,則會略過擷取temp.backupAds且未設定。

  4. 序列的輸出區塊會將合併廣告清單寫入 adsResponse.ads。略過擷取時,條件會採用else分支,並傳回原始廣告不變。由於次要廣告是由相同勾點叫用中的VAST_REQUEST函數剖析,MediaTailor 會在選取廣告之前還原每個附加廣告的完整 VAST 資料。

  5. 廣告選擇會繼續進行合併清單。如果次要擷取失敗, temp.backupAds 是空陣列,且原始廣告清單保持不變。

注意

輸出表達式[]中的結尾是必要項目。如果沒有陣列強制,則產生零或一個廣告的表達式不會產生陣列,且輸出會被捨棄或誤用。如需詳細資訊,請參閱廣告後回應。

如需此範例中使用之欄位的詳細資訊,請參閱 VAST 請求和 廣告後回應。