View a markdown version of this page

示例 4:二级广告服务器备用 - AWS Elemental MediaTailor

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例 4:二级广告服务器备用

场景

您的主广告返回的广告有时会少于广告插播时间所能容纳的广告。发生这种情况时,你想从辅助广告服务器获取更多广告并将其附加到广告列表中,这样额外的广告就可以填满剩余的时间。

此示例使用POST_ADS_RESPONSE生命周期挂钩。一个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则为空数组,原始广告列表将保持不变。

注意

输出表达式[]中的尾部是必填的。如果没有数组强制,生成零个或一个广告的表达式不会生成数组,输出将被丢弃或误用。有关更多信息,请参阅 Post-ads 回应。

有关此示例中使用的字段的更多信息,请参阅VAST 请求和Post-ads 回应。