

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

# MediaTailor 向 ADS 传递参数
<a name="passing-paramters-to-the-ads"></a>

AWS Elemental MediaTailor 支持使用以下步骤在向 ADS 发出的 MediaTailor 请求中设置动态变量。
+ 有关查询参数支持的格式的信息，请参见[MediaTailor 参数参考和限制](parameter-comprehensive-reference.md)。
+ 有关配置别名和域变量，请参见[MediaTailor 配置别名概述](configuration-aliases-overview.md)。
+ 有关 ADS 请求的其他自定义设置，请参阅[高级用法](#variables-advanced-usage)。

**会话初始化方法**  
MediaTailor 支持多种会话初始化和参数传递方法：

1. **带有请求正文的 POST：**

   ```
   POST <master>.m3u8
   {
       "adsParams": {"param1": "value1", "param2": "value2"},
       "playerParams": {"param3": "value3"}
   }
   ```

1. **URL 中的查询参数：**

   ```
   GET <master>.m3u8?ads.param1=value1&ads.param2=value2&playerParams.param3=value3
   ```

**重要**  
在初始化时，只能指定一次参数。在转发之前，配置别名会解析为实际值。

**将会话和播放器信息传递到 ADS**

1. 与 ADS 合作，确定其回复广告查询所需的信息 AWS Elemental MediaTailor。

1. 在中创建使用满足 ADS MediaTailor 要求的模板 ADS 请求网址的配置。在 URL 中，包含静态参数和用于动态参数的占位符。在配置的 **Ad decision server (广告决策服务器)** 字段中输入您的模板 URL。

   在以下示例模板 URL 中，`correlation` 提供会话数据，`deviceType` 提供播放器数据：

   ```
   https://my.ads.server.com/path?correlation=[session.id]&deviceType=[player_params.deviceType]
   ```

1. 在播放器上，为 AWS Elemental MediaTailor 配置会话发起请求以便为播放器数据提供参数。在会话发起请求中包含您的参数，并在后续会话请求中省略它们。

   玩家为初始化会话而进行的调用类型决定了玩家（客户端）还是 MediaTailor （服务器）是否为会话提供广告跟踪报告。有关这两个选项的信息，请参阅[报告广告跟踪数据](ad-reporting.md)。

   根据您是需要服务器端还是客户端广告跟踪报告来进行以下类型的呼叫之一。在两个示例调用中，`userID` 适用于 ADS，`auth_token` 适用于源：
   + （选项）要求服务器端广告跟踪报告 — 在要发送 MediaTailor 到 ADS 的参数前面加上前缀。`ads`为您希望 MediaTailor 将其发送到源服务器的参数消除前缀：

     以下示例显示了 HLS 和 DASH 的传入请求。 AWS Elemental MediaTailor MediaTailor `deviceType`在向 ADS 发出的请求中使用，`auth_token`在对源服务器的请求中使用。

     HLS 示例：

     ```
     GET master.m3u8?ads.deviceType=ipad&auth_token=kjhdsaf7gh
     ```

     DASH 示例：

     ```
     GET manifest.mpd?ads.deviceType=ipad&auth_token=kjhdsaf7gh
     ```
   + （选项）调用客户端广告跟踪报告 — 为对象内部的 ADS 提供参数。`adsParams`

     HLS 示例：

     ```
     POST master.m3u8
         {
             "adsParams": {
                "deviceType": "ipad"
            }
         }
     ```

     DASH 示例：

     ```
     POST manifest.mpd
         {
             "adsParams": {
                "deviceType": "ipad"
            }
         }
     ```

当玩家发起会话时，将模板 ADS 请求网址中的变量 AWS Elemental MediaTailor 替换为会话数据和玩家的`ads`参数。它将剩余参数从播放器传递到源服务器。

**Example MediaTailor 带有广告变量的请求**  
以下示例显示了来自 AWS Elemental MediaTailor 的针对 ADS 和源服务器的调用（对应于上述播放器的会话初始化调用示例）。  
+ MediaTailor 使用会话数据和玩家的设备类型调用 ADS：

  ```
  https://my.ads.server.com/path?correlation=896976764&deviceType=ipad
  ```
+ MediaTailor 使用玩家的授权令牌调用源服务器。
  + HLS 示例：

    ```
    https://my.origin.server.com/master.m3u8?auth_token=kjhdsaf7gh
    ```
  + DASH 示例：

    ```
    https://my.origin.server.com/manifest.mpd?auth_token=kjhdsaf7gh
    ```

## 高级用法
<a name="variables-advanced-usage"></a>

您可以通过播放器和会话数据以多种方式自定义 ADS 请求。您只需要包含 ADS 主机名即可。

以下示例显示了一些可用来自定义请求的方法：
+ 连接播放器参数和会话参数以创建新参数。示例：

  ```
  https://my.ads.com?key1=[player_params.value1][session.id]
  ```
+ 使用播放器参数作为路径元素的一部分。示例：

  ```
  https://my.ads.com/[player_params.path]?key=value
  ```
+ 使用播放器参数传递路径元素和键本身，而不仅仅是值。示例：

  ```
  https://my.ads.com/[player_params.path]?[player_params.key1]=[player_params.value1]
  ```