

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

# 廣告自助式
<a name="ad-buffet"></a>

Interactive Advertising Bureau (IAB) Video Ad Serving Template(VAST) 規格定義廣告 Pod 和廣告自助式。此機制支援有序廣告插入，並在廣告插入失敗時自動回復。在廣告 Pod 中，排序廣告會依序播放。獨立廣告做為自助式廣告，MediaTailor 會在排序廣告失敗時選取替代廣告。

AWS Elemental MediaTailor 透過 的 中的 `AdDecisionServerConfiguration` `AdSequencingMode`設定支援此規格`PlaybackConfiguration`。設為 時`FOLLOW_AD_SEQUENCE`，MediaTailor 會依序插入排序廣告，並只在排序廣告無法插入時使用獨立廣告做為替代。

## VAST 回應範例
<a name="ad-buffet-vast-example"></a>

下列範例顯示包含排序廣告和獨立廣告的 VAST 回應：

```
<VAST>
  <Ad sequence="1" id="sequencedAd1">...</Ad>    <!-- Sequenced Ad 1 -->
  <Ad sequence="2" id="sequencedAd2">...</Ad>    <!-- Sequenced Ad 2 -->
  <Ad id="standAloneAd1">...</Ad>                <!-- Standalone Ad 1 -->
  <Ad id="standAloneAd2">...</Ad>                <!-- Standalone Ad 2 -->
  <Ad id="standAloneAd3">...</Ad>                <!-- Standalone Ad 3 -->
</VAST>
```

在此範例中，兩個排序廣告會形成廣告 Pod。這三個獨立廣告組成廣告自助式。它們共同構成一個自助式群組。如果`sequencedAd1`失敗，MediaTailor 會先嘗試將其取代為來自相同自助式群組的合格獨立廣告。如果該群組中沒有符合資格的獨立廣告，MediaTailor 會從其他自助式群組中的獨立廣告中選取。

下圖顯示具有廣告 Pod （序列廣告） 和廣告自助式 （獨立廣告） 的 VAST 回應，兩者共同形成一個自助式群組。

![包含廣告 Pod （兩個序列廣告） 和廣告自助式 （三個獨立廣告） 的 VAST 回應圖表，形成一個自助式群組。](http://docs.aws.amazon.com/zh_tw/mediatailor/latest/ug/images/vastVisualizedAdBuffetBuffetGroup.png)


## 重要概念
<a name="ad-buffet-key-concepts"></a>

下列術語說明廣告自助式服務的核心概念：
+ **循序廣告** – `sequence` `<Ad>`元素中具有屬性的廣告。這些會形成排序廣告 Pod，並以遞增的順序插入。
+ **獨立 （儲存貯體） 廣告** – `sequence` 沒有屬性的廣告。這些只會在序列化廣告無法插入時做為替代。
+ **自助式群組** – MediaTailor 在單一 VAST 回應中將廣告 Pod 與其獨立廣告配對。當排序廣告是包裝函式時，其重新導向的 VAST 會形成自己的獨立自助式群組。取代失敗的排序廣告時，MediaTailor 會優先考慮來自相同自助式群組的獨立廣告。如果同一個自助式群組中沒有符合資格的獨立廣告，MediaTailor 會回到來自其他自助式群組的獨立廣告。

**注意**  
`sequence` 是指`<Ad>`元素層級屬性，而不是在`<Creative>`元素中找到的`sequence`屬性。

## 廣告自助式的優勢
<a name="ad-buffet-benefits"></a>

如果沒有廣告自助式，MediaTailor 會以相同的方式處理所有廣告，這可能會導致下列問題：
+ **VOD** – 即使沒有失敗，也會插入獨立廣告，中斷商定的廣告休息位置和過度填滿廣告休息時間。
+ **即時** – 較低收入的獨立廣告可以在排序廣告之前插入，並佔用時段持續時間，因此沒有空間容納較高收入的排序廣告。

在啟用廣告自助式服務的情況下，MediaTailor 只會插入排序廣告，並只在排序廣告無法插入時使用獨立廣告做為替代。這可確保先播放最高收入的廣告。

**警告**  
如果您的廣告決策伺服器 (ADS) 回應不包含任何序列廣告 （沒有 `sequence` `<Ad>`元素具有 屬性），則啟用廣告自助式會導致沒有廣告插入。

## 啟用廣告自助式
<a name="ad-buffet-enable"></a>

廣告自助式是一種選擇加入功能，您可以使用 `PutPlaybackConfiguration` API 為每個播放組態設定此功能。

### AdSequencingMode 值
<a name="ad-buffet-sequencing-modes"></a>

下表說明可用的`AdSequencingMode`值。


| Value | 說明 | 
| --- | --- | 
| IGNORE\_AD\_SEQUENCE (default) | MediaTailor 會依照在 VAST 回應中顯示的順序插入廣告，無論序列屬性為何。 | 
| FOLLOW\_AD\_SEQUENCE | MediaTailor 會插入排序廣告，以便即時和 VOD 工作流程。失敗的序列廣告會取代為獨立廣告。 | 
| FOLLOW\_AD\_SEQUENCE\_ONLY\_LIVE | 廣告自助式行為僅針對即時工作流程啟用。 | 
| FOLLOW\_AD\_SEQUENCE\_ONLY\_VOD | 廣告自助式行為僅針對 VOD 工作流程啟用。 | 

**注意**  
當您啟用廣告自助式服務時，MediaTailor 會遵守 `Wrapper.fallbackOnNoAd`和 `Wrapper.allowMultipleAds` 屬性。

### 中繼組態
<a name="ad-buffet-midroll-config"></a>

下列範例為即時和 VOD 工作流程啟用廣告自助式：

```
{
    "PlaybackConfiguration": {
        "AdDecisionServerConfiguration": {
            "VastResponse": {
                "AdSequencingMode": "FOLLOW_AD_SEQUENCE"
            }
        }
    }
}
```

下列範例僅針對即時工作流程啟用廣告自助式：

```
{
    "PlaybackConfiguration": {
        "AdDecisionServerConfiguration": {
            "VastResponse": {
                "AdSequencingMode": "FOLLOW_AD_SEQUENCE_ONLY_LIVE"
            }
        }
    }
}
```

下列範例僅針對 VOD 工作流程啟用廣告自助式：

```
{
    "PlaybackConfiguration": {
        "AdDecisionServerConfiguration": {
            "VastResponse": {
                "AdSequencingMode": "FOLLOW_AD_SEQUENCE_ONLY_VOD"
            }
        }
    }
}
```

### 即時前導組態
<a name="ad-buffet-preroll-config"></a>

下列範例會啟用即時預導廣告的廣告自助式廣告：

```
{
    "PlaybackConfiguration": {
        "LivePrerollConfiguration": {
            "AdDecisionServerConfiguration": {
                "VastResponse": {
                    "AdSequencingMode": "FOLLOW_AD_SEQUENCE"
                }
            }
        }
    }
}
```

**注意**  
`LivePrerollConfiguration` 僅支援 `FOLLOW_AD_SEQUENCE`和 `IGNORE_AD_SEQUENCE`。透過中繼組態設定 VOD 前導的廣告自助式。

## 廣告自助式服務的運作方式
<a name="ad-buffet-how-it-works"></a>

### 廣告替換條件
<a name="ad-buffet-replacement-conditions"></a>

如果排序廣告遇到下列其中一個失敗案例，MediaTailor 會嘗試將排序廣告取代為來自相同自助式群組的合格獨立廣告。如果同一個自助式群組中沒有可用的獨立廣告，MediaTailor 會使用來自其他自助式群組的獨立廣告，如果可用的話。


| 失敗案例 | 說明 | 
| --- | --- | 
| VAST 剖析失敗 | 由於缺少必要的 VAST 元素 （例如， MediaFiles、 Creatives或 Impression遺失或 MediaFile VASTAdTagURI 無效），排序廣告無法剖析。 | 
| VAST 包裝函式解析失敗 | 重新導向逾時、失敗或傳回空的回應。 | 
| VPAID 廣告已捨棄 | 排序廣告是 VPAID，工作階段使用伺服器端報告或未設定 Slate。 | 
| 廣告轉碼未就緒 | 排序廣告的轉碼狀態不是 SUCCESS （例如 IN\_PROGRESS 或 ERROR)。 | 
| 超過可用持續時間 | 排序廣告的持續時間超過剩餘時段持續時間 （即時工作流程）。 | 

### 獨立廣告資格
<a name="ad-buffet-standalone-eligibility"></a>

若要符合替代資格，獨立廣告必須符合下列條件：
+ 不是 VPAID 廣告
+ 完成轉碼
+ 持續時間符合剩餘時段持續時間

### 獨立廣告選擇
<a name="ad-buffet-standalone-selection"></a>

當序列化廣告失敗時，MediaTailor 會使用下列優先順序從合格的獨立廣告中選取替換項目：

1. 首先**是相同的自助式群組** – MediaTailor 偏好來自失敗廣告本身自助式群組的獨立廣告。

1. **其他自助式群組** – 僅在相同自助式群組中沒有符合資格的廣告時使用。

如果找不到符合資格的獨立廣告，則不會填充該位置並`SkippedReason`發出適當的 。

## VAST 包裝函式行為
<a name="ad-buffet-wrapper-behavior"></a>

MediaTailor 處理包裝函式重新導向回應的方式取決於兩個包裝函式變數的值： `Wrapper.fallbackOnNoAd`和 `Wrapper.allowMultipleAds`。
+ `fallbackOnNoAd` 當重新導向回應為空、逾時或在 ADS 請求期間發生錯誤時， 就會生效。
+ `allowMultipleAds` 如果 ADS 回應包含一或多個廣告， 就會生效。

### 空白 VAST、請求錯誤或請求逾時
<a name="ad-buffet-wrapper-empty-response"></a>

下表說明重新導向回應為空、逾時或發生錯誤時的 MediaTailor 行為。


| fallbackOnNoAd | MediaTailor 行為 | 
| --- | --- | 
| true (default) | MediaTailor 會選取獨立廣告來取代失敗的包裝函式，偏好相同的自助式群組。如果沒有符合資格的相同群組廣告，MediaTailor 會從其他自助式群組中選取。 | 
| false | MediaTailor 會捨棄廣告位置，並移至 Pod 中的下一個廣告。不會發生取代。 | 

**Example fallbackOnNoAd=true （重新導向失敗）**  
**父系 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad sequence="2">
    <Wrapper fallbackOnNoAd="true">
      <VASTAdTagURI>https://ads.example.com/vast</VASTAdTagURI>
    </Wrapper>
  </Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**包裝函式重新導向回應：**空白 VAST、逾時或錯誤。  
**已解決的 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <!-- standAloneAd1 replaced failed Wrapper Ad and now has the Wrapper's sequence (2) -->
  <Ad sequence="2" id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**播放順序：**  

1. seqAd1

1. standAloneAd1

**Example fallbackOnNoAd=false （重新導向失敗）**  
**父系 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad sequence="2">
    <Wrapper fallbackOnNoAd="false">
      <VASTAdTagURI>https://ads.example.com/vast</VASTAdTagURI>
    </Wrapper>
  </Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**包裝函式重新導向回應：**空白 VAST、逾時或錯誤。  
**已解決的 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <!-- sequence 2 is not replaced -->
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**播放順序：**  

1. seqAd1

### 回應包含一或多個廣告
<a name="ad-buffet-wrapper-ads-response"></a>

下表說明重新導向回應包含一或多個廣告時的 MediaTailor 行為。


| allowMultipleAds | MediaTailor 行為 | 
| --- | --- | 
| false (default) | MediaTailor 從重新導向回應中選取一個廣告，並捨棄剩餘的廣告。選取的廣告會繼承父系包裝函式廣告的序列值。選擇策略：MediaTailor 會在重新導向回應中選取最低序列的廣告。如果沒有可用的排序廣告，MediaTailor 會挑選可用的獨立廣告。 | 
| true | 當包裝函式具有序列屬性時，MediaTailor 會將重新導向廣告插入包裝函式的位置。當包裝函式沒有序列屬性時，MediaTailor 會在父項的序列廣告之後插入重新導向廣告。解析的廣告會形成自己的自助式群組。 | 

**Example allowMultipleAds=false，包裝函式的序列=2**  
**父系 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad sequence="2">
    <Wrapper allowMultipleAds="false">
      <VASTAdTagURI>https://ads.example.com/vast</VASTAdTagURI>
    </Wrapper>
  </Ad>
  <Ad sequence="3" id="seqAd3">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**包裝函式重新導向回應：**  

```
<VAST>
  <Ad sequence="1" id="redirectSeqAd1">...</Ad>
  <Ad sequence="2" id="redirectSeqAd2">...</Ad>
  <Ad id="redirectStandAloneAd1">...</Ad>
</VAST>
```
**已解決的 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad sequence="2" id="redirectSeqAd1">...</Ad> <!-- redirectSeqAd1 selected, inherits Wrapper's sequence (2) -->
  <Ad sequence="3" id="seqAd3">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**播放順序：**  

1. seqAd1

1. redirectSeqAd1

1. seqAd3

**Example allowMultipleAds=false，包裝函式沒有序列**  
**父系 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad>
    <Wrapper allowMultipleAds="false">
      <VASTAdTagURI>https://ads.example.com/vast</VASTAdTagURI>
    </Wrapper>
  </Ad>
  <Ad sequence="3" id="seqAd3">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**包裝函式重新導向回應：**  

```
<VAST>
  <Ad sequence="1" id="redirectSeqAd1">...</Ad>
  <Ad sequence="2" id="redirectSeqAd2">...</Ad>
  <Ad id="redirectStandAloneAd1">...</Ad>
</VAST>
```
**已解決的 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad id="redirectSeqAd1">...</Ad> <!-- redirectSeqAd1 selected, inherits Wrapper's sequence (UNDEFINED) -->
  <Ad sequence="3" id="seqAd3">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**播放順序：**  

1. seqAd1

1. seqAd3
不會播放 redirectSeqAd1，因為它未定義序列。

**Example allowMultipleAds=true，包裝函式的序列=2**  
**父系 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad sequence="2">
    <Wrapper allowMultipleAds="true">
      <VASTAdTagURI>https://ads.example.com/vast</VASTAdTagURI>
    </Wrapper>
  </Ad>
  <Ad sequence="3" id="seqAd3">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**包裝函式重新導向回應：**  

```
<VAST>
  <Ad sequence="1" id="redirectSeqAd1">...</Ad>
  <Ad sequence="2" id="redirectSeqAd2">...</Ad>
  <Ad id="redirectStandAloneAd1">...</Ad>
</VAST>
```
**已解決的 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <!-- Redirect response merged at sequence 2 -->
  <Ad sequence="1" id="redirectSeqAd1">...</Ad>
  <Ad sequence="2" id="redirectSeqAd2">...</Ad>
  <Ad id="redirectStandAloneAd1">...</Ad>
  <Ad sequence="3" id="seqAd3">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**播放順序：**  

1. seqAd1

1. redirectSeqAd1

1. redirectSeqAd2

1. seqAd3

**Example allowMultipleAds=true，包裝函式沒有序列**  
**父系 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad>
    <Wrapper allowMultipleAds="true">
      <VASTAdTagURI>https://ads.example.com/vast</VASTAdTagURI>
    </Wrapper>
  </Ad>
  <Ad sequence="3" id="seqAd3">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**包裝函式重新導向回應：**  

```
<VAST>
  <Ad sequence="1" id="redirectSeqAd1">...</Ad>
  <Ad sequence="2" id="redirectSeqAd2">...</Ad>
  <Ad id="redirectStandAloneAd1">...</Ad>
</VAST>
```
**已解決的 VAST：**  

```
<VAST>
  <Ad sequence="1" id="seqAd1">...</Ad>
  <Ad sequence="3" id="seqAd3">...</Ad>
  <!-- Redirect response merged after sequenced ads -->
  <Ad sequence="1" id="redirectSeqAd1">...</Ad>
  <Ad sequence="2" id="redirectSeqAd2">...</Ad>
  <Ad id="redirectStandAloneAd1">...</Ad>
  <Ad id="standAloneAd1">...</Ad>
  <Ad id="standAloneAd2">...</Ad>
</VAST>
```
**播放順序：**  

1. seqAd1

1. seqAd3

1. redirectSeqAd1

1. redirectSeqAd2

## 指標和日誌監控
<a name="ad-buffet-metrics"></a>

### 現有指標的變更
<a name="ad-buffet-existing-metrics"></a>

啟用廣告自助式服務時，下列現有指標會變更行為。


| 指標 | 廣告自助式的行為 | 
| --- | --- | 
| AdDecisionServer.Ads | 從 ADS 回應剖析的序列廣告計數。 | 
| AdDecisionServer.Duration | 僅排序廣告的總持續時間。 | 
| AdDecisionServer.FillRate | 僅使用序列廣告計算的填滿率。 | 

### 新指標
<a name="ad-buffet-new-metrics"></a>

啟用廣告自助式服務時，可使用下列新指標。


| 指標 | 說明 | 
| --- | --- | 
| AdNotReady.SequencedAd | 尚未準備好插入的序列廣告數量。 | 
| AdNotReady.StandaloneAd | 尚未準備好插入的獨立廣告數量 （不包括略過 的廣告StandaloneAdNotNeeded)。 | 
| Avail.FillRate.SequencedAd | 依排序廣告填入的時段百分比。 | 
| Avail.FillRate.StandaloneAd | 由獨立廣告填入的時段百分比。 | 
| Avail.FilledDuration.SequencedAd | 以序列廣告填滿的時段持續時間。 | 
| Avail.FilledDuration.StandaloneAd | 填滿獨立廣告的時段持續時間。 | 
| AdsBilled.SequencedAd | 排序的計費廣告數量。 | 
| AdsBilled.StandaloneAd | 獨立計費廣告的數量。 | 
| SkippedReason.StandaloneAdNotNeeded | 因為已成功插入所有序列廣告，所以不需要獨立廣告時發出。 | 

### 新的略過廣告原因
<a name="ad-buffet-skipped-reason"></a>

啟用廣告自助式時，可使用下列新的略過廣告原因。


| Reason | 說明 | 
| --- | --- | 
| STANDALONE\_AD\_NOT\_NEEDED | 獨立廣告符合資格，但不需要，因為已成功插入所有序列廣告。不會觸發任何錯誤信標。 | 

對於不符合插入資格的獨立廣告 （例如，VPAID 或轉碼未就緒），實際失敗原因會發出 （例如， `TRANSCODE_IN_PROGRESS`或 `VPAID_AD`) 為 `SkippedReason`。

### 錯誤信標
<a name="ad-buffet-error-beaconing"></a>

MediaTailor 會處理廣告自助式廣告的錯誤信標，如下所示：
+ 失敗的序列廣告 – 觸發錯誤信標 （現有行為）。
+ 尚未就緒的獨立廣告 （廣告轉碼狀態不是 SUCCESS) – 會觸發錯誤信標 （與序列廣告相同）。
+ 未使用且符合插入資格但不需要的獨立廣告 – 不會觸發錯誤信標。

## ADS 事件變更
<a name="ad-buffet-ads-events"></a>

啟用廣告自助式服務時，MediaTailor 會將下列欄位新增至兩個 ADS 事件：

### VAST\_RESPONSE 事件
<a name="ad-buffet-vast-response-event"></a>

`VAST_RESPONSE` 事件`VastAd`中的每個 都包含下列欄位。


| 欄位 | Type | Description | 
| --- | --- | --- | 
| buffetGroup | String | MediaTailor 產生的字串，定義廣告所屬的自助式群組。 | 
| sequence | Int | 元素的序列值Ad。 | 

### FILLED\_AVAIL 事件
<a name="ad-buffet-filled-avail-event"></a>

`creativeAds` 和 `FILLED_AVAIL`事件`skippedAds`中的每個項目都包含下列欄位。


| 欄位 | Type | Description | 
| --- | --- | --- | 
| buffetGroup | String | MediaTailor 產生的字串，定義廣告所屬的自助式群組。 | 
| sequence | Int | 元素的序列值Ad。 | 

這些欄位可讓您判斷：
+ 哪些廣告剖析為排序式與獨立式
+ 插入哪些廣告及其類型
+ 為什麼略過排序廣告，以及獨立廣告是否取代它
+ 為什麼獨立廣告無法使用

## 另請參閱
<a name="ad-buffet-see-also"></a>

如需 `PutPlaybackConfiguration` API 和 IAB VAST 規格的詳細資訊，請參閱下列內容：
+ [PutPlaybackConfiguration API 參考](https://docs.aws.amazon.com/mediatailor/latest/apireference/API_PutPlaybackConfiguration.html) – 用於設定 `AdSequencingMode` 和相關設定的完整參數參考。
+ [IAB VAST 4.x Specification](https://iabtechlab.com/standards/vast/) IAB Tech Lab網站上的 – 定義廣告 Pod、排序廣告和獨立廣告的業界標準。
+ [AWS Elemental MediaTailor 使用 Amazon CloudWatch 指標進行監控](monitoring-cloudwatch-metrics.md) – 所有 MediaTailor CloudWatch 指標的完整參考，包括新的廣告自助式指標。