

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

# PRE\_ADS\_REQUEST
<a name="monetization-functions-hooks-pre-ads"></a>

## 当它开火时
<a name="monetization-functions-hooks-pre-ads-when"></a>

MediaTailor 在向 ADS 发送请求之前，立即运行映射到每个广告时段`PRE_ADS_REQUEST`一次的函数。每次在清单处理过程中遇到广告机会时，该函数都会运行。

## Input
<a name="monetization-functions-hooks-pre-ads-input"></a>

来自`PRE_SESSION_INITIALIZATION`、plus `avail.*` `scte.*`、和`adsRequest.*`（url、方法、标题、正文）的所有字段。有关所有可用字段，请参阅[输入字段参考](monetization-functions-hooks.md#monetization-functions-hooks-input-ref)。

## 允许输出命名空间
<a name="monetization-functions-hooks-pre-ads-output"></a>


| 命名空间 | 可接受的类型 | 如何使用输出 | 
| --- | --- | --- | 
| player\_params.\* | 字符串、数字、布尔值 | 覆盖此广告时段的会话播放器参数。可通过以下方式获得 ADS 请求网址[MediaTailor ADS 请求的动态广告变量](variables.md)。 | 
| session.\* | 字符串、数字、布尔值 | 覆盖此广告时段的会话变量。通过动态变量替换可用于 ADS 请求网址。 | 
| avail.\* | 字符串、数字、布尔值 | 覆盖此广告时段的可用变量。通过动态变量替换可用于 ADS 请求网址。 | 
| scte.\* | 字符串、数字、布尔值 | 覆盖此广告时段的 SCTE 变量。通过动态变量替换可用于 ADS 请求网址。 | 
| adsRequest.\* | 字符串 | 仅覆盖针对此广告时段的 ADS 请求。支持的字段：url、method、headers.<name>、body。该url值被视为模板，并在函数运行[MediaTailor ADS 请求的动态广告变量](variables.md)后支持。没有坚持下去。 | 

**注意**  
`PRE_ADS_REQUEST`挂钩的所有输出都是瞬态覆盖，它们仅适用于当前广告插播时间点的 ADS 请求，不会保留到会话中。

**示例 — 重写 ADS 请求：**

```
{
    "Output": {
        "adsRequest.url": "{%'https://ads.example.com/v1/vast?sid=' & session.id & '&genre=' & player_params.genre%}",
        "adsRequest.headers.X-Custom-Token": "{%player_params.auth_token%}"
    }
}
```

这将取代广告网址，并为当前广告插播时间添加自定义标题。

## 典型用例
<a name="monetization-functions-hooks-pre-ads-use-cases"></a>
+ 重写 ADS 请求网址，以便在不同的广告服务器之间路由流量以进行 A/B 测试。
+ 将丰富数据（受众细分、身份令牌）附加到 ADS 请求网址或标头。
+ 根据 SCTE-35 信号数据或可用索引有条件地修改 ADS 请求参数。

## 失败行为
<a name="monetization-functions-hooks-pre-ads-failure"></a>

如果附加到的函数因任何原因`PRE_ADS_REQUEST`失败，则 MediaTailor 丢弃该函数的输出并像未附加任何函数一样继续前进。ADS 请求使用原始会话和请求参数发送，无需修改。