本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
廣告後回應
當它觸發時
MediaTailor 會在接收並剖析來自 ADS 的回應POST_ADS_RESPONSE後執行映射至 的函數,包括 VAST 包裝函式重新導向的解析。函數會在 MediaTailor 選取要插入的廣告之前看到剖析的廣告,因此在此所做的變更會影響哪些廣告填滿廣告休息時間。
所有串流通訊協定 (HLS 和 DASH) 和所有播放模式 (即時、VOD 和預轉) 的掛鉤都會觸發。每個廣告休息時間通常會觸發一次。對於一次涵蓋多個廣告休息時間的 ADS 回應 (例如 VMAP 回應),以及預先擷取的廣告回應,勾點會在 MediaTailor 處理回應時觸發,而avail輸入命名空間不存在。使用 在存取時段欄位之前$exists(avail)進行檢查。
Input
event.*、adsRequest.*、 session.*和 adsResponse.*,加上當回應套用至單一廣告休息時間avail.*時。如需所有可用的欄位,請參閱 輸入欄位參考。
允許輸出命名空間
| 命名空間 | 接受的類型 | 如何使用輸出 |
|---|---|---|
adsResponse.ads |
廣告物件陣列 | 取代此回應的剖析廣告清單。MediaTailor 會將每個傳回的廣告與原始廣告進行比對,adId並使用傳回的清單繼續進行廣告選擇。 |
temp.* |
任何 | 用於在執行器中的步驟之間傳遞值的暫時資料。未保留。 |
將修改後的廣告清單寫回 adsResponse.ads。您可以:
-
Filter - 傳回原始廣告的子集。您省略的廣告不會考慮插入,而且它們佔用的持續時間可供其他廣告填滿。
-
重新排序 — 以不同的順序傳回廣告。順序會影響哪些廣告會先填滿廣告休息時間。
-
修改 — 在廣告
trackingEvents上變更durationSeconds、mediaFiles、、adSystemadTitle或 。傳回的廣告保持不變,保留其所有原始 VAST 中繼資料。 -
注入 — 新增不在原始回應中的廣告。新的項目必須包含
adId、durationSeconds和mediaFiles。使用相同勾點叫用中的VAST_REQUEST函數擷取的廣告是例外狀況:透過其附加這類廣告adId就夠了,因為 MediaTailor 會還原廣告的完整剖析 VAST 資料。如需詳細資訊,請參閱VAST 請求。
重要
篩選時,一律使用 JSONata 陣列建構函數或陣列強制。當只有一個廣告相符時, 等篩選條件表達式adsResponse.ads[adSystem != 'BLOCKED']會產生單一物件。當零廣告相符時,它完全不會產生任何值。在這種情況下,會省略輸出金鑰,而且篩選條件沒有效果。以括號或附加 括住表達式[]:
{ "Output": { "adsResponse.ads": "{%adsResponse.ads[adSystem != 'BLOCKED'][]%}" } }
下列規則適用於傳回的廣告清單:
-
如果兩個項目共用
adId,則第一次出現會獲勝。 -
無效項目會個別拒絕。相同輸出中的有效項目仍然適用。
-
如果插入項目的
adId與來自 ADS 回應的廣告碰撞,則會使用原始廣告做為基礎,並在其上套用您的欄位變更。
此勾點看不到的內容
此勾點會在廣告選擇之前執行,因此不會看到其他 MediaTailor 功能稍後貢獻的廣告,也無法判斷最終插入哪些廣告,因為轉碼狀態和填入決策會在之後發生。對於預先擷取的廣告,當 MediaTailor 處理預先擷取回應本身時,勾點會觸發。在稍後的廣告休息時間,這些先前預先擷取的廣告會在此掛鉤執行後合併,因此掛鉤不會在那裡看到它們。若要對最終廣告集採取行動,請使用 PRE_MANIFEST_INSERTION。
典型使用案例
-
依中繼資料篩選廣告,例如從競爭廣告系統移除廣告,使其不會出現在相同的廣告休息時間 (競爭區隔)。
-
當主要回應很短時,從具有
VAST_REQUEST函數的次要廣告伺服器擷取額外的廣告,並將其附加到廣告清單。 -
重新排序廣告,讓偏好的廣告先填滿廣告休息時間。
-
在插入之前修改追蹤事件或廣告中繼資料。
失敗行為
如果連接至 的函數因任何原因POST_ADS_RESPONSE失敗,例如逾時、表達式錯誤或無效的輸出,MediaTailor 會捨棄函數的輸出。請求會繼續進行原始 ADS 回應,就像未連接任何 函數一樣。如果序列化輸入超過輸入大小限制,MediaTailor 會完全略過勾點調用。如需適用的限制,請參閱 限制。