

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Angebotserstellung und Templateerstellung
<a name="yield-optimization-bid-construction"></a>

Auf dieser Seite wird erklärt, wie eine OpenRTB-Gebotsanfrage aus Ihrer Vorlage MediaTailor erstellt wird, wie die Variableninterpolation funktioniert und welche Werte automatisch festgelegt werden. MediaTailor 

## Felder für die Konfiguration
<a name="yield-optimization-bid-construction-config-fields"></a>

Wenn Sie die Ertragsoptimierung für eine Wiedergabekonfiguration aktivieren, geben Sie vier Felder an:


| Feld | Description | Erforderlich | 
| --- | --- | --- | 
| PublisherId | Ihre APS-Publisher-ID (erhalten Sie aus der APS-Registrierung). Wird app.publisher.id bei jeder Angebotsanfrage eingefügt. | Ja | 
| Region | APS-Region: AMERICASEUROPE, oderASIA\_PACIFIC. Bestimmt den APS-Endpunkt. | Ja | 
| MinimumUnfilledDuration | Es sind mindestens ungefüllte Sekunden erforderlich, bevor eine Gebotsanfrage MediaTailor ausgelöst wird. Wird auch verwendet alsimp.video.minduration. | Ja | 
| OpenRtbTemplate | Ihre ORTB-JSON-Vorlage (max. 100 KB). Definiert den Text der Angebotsanfrage. | Ja | 

## Wie ist die Angebotsanfrage aufgebaut
<a name="yield-optimization-bid-construction-how"></a>

Wenn eine Werbeunterbrechung noch eine ungenutzte Laufzeit hat, wird MediaTailor die Angebotsanfrage in den folgenden Schritten erstellt:

1. **Interpolation von Vorlagen. ** MediaTailor löst`{{session.*}}`,, `{{player_params.*}}` `{{avail.*}}``{{request.*}}`, `{{asset.*}}` und `{{scte.*}}` Platzhalter in Ihrer Vorlage mithilfe der [ Standard-Syntax für Moustache-Vorlagen auf. ](https://mustache.github.io/mustache.5.html) Moustache verwendet doppelte geschweifte Klammern, was sich von den eckigen Klammern unterscheidet`{{ }}`, die bei der ADS-URL-Variablenersetzung verwendet werden. `[ ]`

1. **JSON-Analyse. ** Die interpolierte Vorlage wird als JSON geparst.

1. **Extraktion und Validierung von Feldern. ** MediaTailorextrahiert Pflichtfelder und gibt eine aus, `BidRequestConfigurationError` falls welche fehlen oder leer sind.

1. **Fest codierte Feldinjektion. ** MediaTailor überschreibt oder fügt automatisch verwaltete Felder mithilfe von Werten aus der Konsolenkonfiguration und dem aktuell verfügbaren Kontext ein (z. B. `app.publisher.id` aus Ihrer konfigurierten Publisher-ID, `imp.video.maxduration` aus der berechneten ungefüllten Dauer).

1. **Serialisierung und Einreichung. ** Das Finale BidRequest wird in JSON serialisiert und als HTTP-POST an den APS-Endpunkt gesendet.

**Wichtig**  
Wenn nach der Interpolation ein Pflichtfeld fehlt oder leer ist, schlägt die Angebotsanforderung mit einem fehl `BidRequestConfigurationError` und es wird keine Anfrage an APS gesendet. Der Fehler wird protokolliert, aber die Wiedergabe wird normal fortgesetzt (Fail-Open).

## Standardvorlage für die Konsole
<a name="yield-optimization-bid-construction-default-template"></a>

Wenn Sie die Ertragsoptimierung in der MediaTailor Konsole aktivieren, wird die folgende vorgefüllte Vorlage als Ausgangspunkt bereitgestellt. Sie sollten die Werte für Ihre Anwendung anpassen:

```
{
  "imp": [
    {
      "bidfloor": 5
    }
  ],
  "app": {
    "id": "{{player_params.app_id}}",
    "name": "{{player_params.app_name}}",
    "bundle": "{{player_params.bundle}}",
    "storeurl": "{{player_params.storeurl}}",
    "domain": "{{player_params.domain}}",
    "content": {
      "genre": "{{asset.genre}}",
      "contentrating": "{{asset.content_rating}}"
    }
  },
  "device": {
    "dnt": "{{player_params.dnt}}",
    "ua": "{{session.user_agent}}",
    "ip": "{{session.client_ip}}",
    "ifa": "{{player_params.device_ifa}}",
    "w": "{{player_params.device_width}}",
    "h": "{{player_params.device_height}}",
    "language": "{{player_params.language}}",
    "model": "{{player_params.model}}",
    "os": "{{player_params.os}}",
    "osv": "{{player_params.osv}}",
    "devicetype": "{{player_params.devicetype}}",
    "make": "{{player_params.make}}"
  },
  "user": {
    "consent": "{{player_params.consent}}"
  },
  "regs": {
    "gdpr": "{{player_params.gdpr}}",
    "us_privacy": "{{player_params.us_privacy}}",
    "gpp": "{{player_params.gpp_consent}}",
    "gpp_sid": "{{player_params.gpp_sid}}"
  }
}
```

**Field-by-field Erklärung: **


| Feld | Kategorie | Vorgehensweise | 
| --- | --- | --- | 
| imp[0].bidfloor | Optional (Standard: 1.0) | Lege deinen Mindest-CPM fest. Die Standardeinstellung für die Konsole ist 5$. Niedriger für bessere Füllraten beim Testen. | 
| app.id | APS empfohlen | Ihre App-Kennung. Der Spieler muss sendenplayerParams.app\_id. | 
| app.name | APS empfohlen | Ihr App-Name. Der Spieler muss sendenplayerParams.app\_name. | 
| app.bundle | Verpflichtend  | Ihre App-Paket-ID. Der Spieler muss einen statischen Wert senden playerParams.bundle oder durch einen statischen Wert ersetzen (empfohlen). | 
| app.storeurl | Pflichtfeld  | Ihre App Store-URL. Der Spieler muss einen statischen Wert senden playerParams.storeurl oder durch einen statischen Wert ersetzen (empfohlen). | 
| app.domain | APS wird empfohlen | Ihre App-Domain. Der Spieler muss sendenplayerParams.domain. | 
| app.content.genre | APS empfohlen | Wird aus Asset-Metadaten der Inhaltsquelle gefüllt. | 
| app.content.contentrating | APS wird empfohlen | Wird aus Asset-Metadaten der Inhaltsquelle gefüllt. | 
| device.dnt | APS wird empfohlen | Flagge „Nicht verfolgen“. Der Spieler muss sendenplayerParams.dnt. | 
| device.ua | Verpflichtend  | Wird automatisch vom User-Agent Header des Viewers bis zum Ende ausgefüllt{{session.user\_agent}}. Es wird kein Spielerparameter benötigt. | 
| device.ip | Erforderlich  | Wird automatisch von der IP des Betrachters bis zum Ende ausgefüllt{{session.client\_ip}}. Es wird kein Spielerparameter benötigt. | 
| device.ifa | APS empfohlen | Werbe-ID. Der Spieler muss sendenplayerParams.device\_ifa. | 
| device.w / device.h | APS empfohlen | Abmessungen des Bildschirms. Der Spieler mussplayerParams.device\_width/sendendevice\_height. | 
| device.language | APS empfohlen | Sprache des Geräts. Der Spieler muss sendenplayerParams.language. | 
| device.model | APS empfohlen | Gerätemodell. Der Spieler muss sendenplayerParams.model. | 
| device.os / device.osv | APS empfohlen | Betriebssystem und Version. Der Spieler mussplayerParams.os/sendenosv. | 
| device.devicetype | Überschreibbar (Standard: 3) | IAB-Gerätetyp. Der Spieler muss sendenplayerParams.devicetype. Ist das Feld leer, ist die Standardeinstellung 3 (CTV). | 
| device.make | APS empfohlen | Hersteller des Geräts. Der Spieler muss sendenplayerParams.make. | 
| user.consent | APS empfohlen (EU) | DSGVO-Einwilligungszeichenfolge (TCF). Der Spieler muss sendenplayerParams.consent. | 
| regs.gdpr | APS empfohlen (EU) | DSGVO-Flag (0 oder 1). Der Spieler muss sendenplayerParams.gdpr. | 
| regs.us\_privacy | APS empfohlen (USA) | CCPA-Zeichenfolge (z. B.1YNY). Der Spieler muss sendenplayerParams.us\_privacy. | 
| regs.gpp | APS empfohlen | Zeichenfolge mit der Zustimmung der Global Privacy Platform. Der Spieler muss sendenplayerParams.gpp\_consent. us\_privacyFür bessere Füllraten vorzuziehen. | 
| regs.gpp\_sid | APS empfohlen | GPP-Abschnitts-IDs (z. B. [7] für US National). Der Spieler muss sendenplayerParams.gpp\_sid. | 

**Wichtig**  
Die Konsole verwendet `{{player_params.*}}` standardmäßig Pflichtfelder wie `app.bundle` und`app.storeurl`. Wenn Ihr Spieler diese Parameter nicht sendet, schlägt die Gebotsanfrage mit fehl`BidRequestConfigurationError`. Bei Feldern, die für jede Sitzung identisch sind (in der Regel`app.bundle`, `app.storeurl``app.name`, und andere Kennungen auf App-Ebene), sollten Sie erwägen, den Platzhalter durch einen statischen Wert zu ersetzen (z. B.). `"bundle": "com.yourcompany.app"` Codieren Sie keine Felder fest, die je nach Betrachter unterschiedlich sind, wie `device.ua` z. B.,, GDPR- und GPP-Zustimmungszeichenfolgen oder irgendwelche Regs- oder Benutzerobjektfelder. `device.ip` `device.ifa` Diese müssen von oder stammen. `{{session.*}}` `{{player_params.*}}`

**Anmerkung**  
In der Standardeinstellung der Konsole ist `video.mimes` oder nicht `video.protocols` in der Vorlage enthalten. MediaTailor verwendet fest codierte Fallback-Werte (`["video/mp4"]`für MIMEs, `[1,2,3,4,5,6,7,8]` für Protokolle), wenn diese nicht bereitgestellt werden. Sie können sie zu Ihrer Vorlage hinzufügen, wenn Sie die unterstützten Formate einschränken möchten.

## Vorlageninterpolation (Moustache Templating)
<a name="yield-optimization-bid-construction-interpolation"></a>

Ihre ORTB-Vorlage verwendet die [ Mustache-Templating-Syntax für die dynamische Wertersetzung. ](https://mustache.github.io/mustache.5.html) Platzhalter verwenden doppelte geschweifte Klammern. `{{ }}`

### Verfügbare Vorlagenvariablen
<a name="yield-optimization-bid-construction-variables"></a>

Ihre ORTB-Vorlage kann dieselben dynamischen Variablen verwenden, die in ADS-URL-Vorlagen verfügbar sind. Dazu gehören Sitzungsvariablen (z. B.,`{{session.client_ip}}`)`{{session.user_agent}}`, Player-Parameter (`{{player_params.*}}`), Asset-Metadaten (`{{asset.*}}`), Avail-Kontext (`{{avail.*}}`) und SCTE-Signaldaten (). `{{scte.*}}`

Die vollständige Liste der verfügbaren Variablen und ihre Beschreibungen finden Sie unter. [MediaTailor dynamische Anzeigenvariablen für ADS-Anfragen](variables.md) Wie man MediaTailor URL-decodes Parameterwerte abspielt, bevor man sie in die Vorlage einfügt, finden Sie weiter unten [Verhalten beim Kodieren und Dekodieren](#yield-optimization-bid-construction-encoding) auf dieser Seite.

Die am häufigsten verwendeten Variablen in ORTB-Vorlagen sind:
+ `{{session.user_agent}}`: User-Agent Header des Betrachters (verwenden für`device.ua`).
+ `{{session.client_ip}}`: IP-Adresse des Betrachters (verwenden für`device.ip`).
+ `{{player_params.*}}`: Benutzerdefinierte Werte, die vom Player während der Sitzungsinitialisierung weitergegeben wurden.
+ `{{asset.*}}`: Inhaltsmetadaten vom Ursprung (z. B.`asset.genre`,`asset.content_rating`).

**Warnung**  
Setzen Sie Platzhalter immer in Anführungszeichen, auch bei numerischen Feldern wie `dnt` oder`devicetype`. Wenn ein Platzhalter in eine leere Zeichenfolge aufgelöst wird und nicht in Anführungszeichen gesetzt wird (z. B.`"dnt": {{player_params.dnt}}`), ist das Ergebnis ein ungültiges JSON und die gesamte Gebotsanfrage schlägt mit einem fehl. `BidRequestConfigurationError` Verwenden Sie stattdessen `"dnt": "{{player_params.dnt}}"`. APS akzeptiert numerische Felder, die als Zeichenfolgen übergeben werden. Dieses Verhalten ist beabsichtigt, da das automatische Anführen von Ersetzungen leerer Zeichenketten mit dem Raw-JSON-Modus, der an anderer Stelle im Interpolator verwendet wird, in Konflikt geraten würde. Die Einschränkung wird dokumentiert und nicht durchgesetzt. Siehe auch[Verhalten beim Kodieren und Dekodieren](#yield-optimization-bid-construction-encoding), wie Spielerparameterwerte vor der Interpolation MediaTailor behandelt werden.

### Wie übergibt man Spielerparameter
<a name="yield-optimization-bid-construction-pass-params"></a>

Es gibt zwei Möglichkeiten, Spielerparameter während der Sitzungsinitialisierung zu übergeben.

**Methode 1: POST-Anfrage mit JSON-Text (empfohlen) **

```
POST https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8
Content-Type: application/json

{
  "playerParams": {
    "app_id": "558775_example",
    "slot_id": "608109df-2378-4bc5-8da5-24bc355f01a4",
    "os": "Tizen",
    "make": "Samsung",
    "model": "Tizen TV",
    "language": "en",
    "us_privacy": "1YNY"
  }
}
```

Diese Methode wird bevorzugt, da sie URL-encoding Probleme mit komplexen Werten wie User-Agent-Zeichenketten vermeidet.

**Methode 2: URL-Abfrageparameter **

```
GET https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8
  ?playerParams.app_id=558775_example
```

Bei dieser Methode müssen Werte wie folgt sein URL-encoded. MediaTailor URL-decodes sie vor der Interpolation.

### Verhalten beim Kodieren und Dekodieren
<a name="yield-optimization-bid-construction-encoding"></a>

MediaTailor führt ** eine URL-Dekodierung der Player-Parameterwerte ** auf einer Ebene durch, bevor sie in die Vorlage interpoliert werden. Dies gilt unabhängig davon, wie die Parameter übergeben werden (POST-Text oder URL-Abfrageparameter).

**Beispiele für dekodierte Werte: **


| Gesendeter Wert | Wert nach der Decodierung (wird in der Vorlage verwendet) | 
| --- | --- | 
| Test%20Os | Test Os | 
| https%3A%2F%2Flocalhost | https://localhost | 
| foo%20bar | foo bar | 
| Mozilla%2F5.0%20(SMART-TV) | Mozilla/5.0 (SMART-TV) | 

**Die wichtigsten Punkte: **
+ MediaTailor dekodiert nur ** auf ** eine Ebene. Double-encoded Werte (z. B.`%2520`) werden in ein Leerzeichen dekodiert`%20`, nicht in ein Leerzeichen.
+ **POST-Textwerte ** werden ebenfalls dekodiert. Wenn Ihr POST-Text URL-encoded Werte enthält, werden diese vor der Interpolation dekodiert.
+ **Klartextwerte ** (keine Kodierung) werden unverändert übertragen.
+ Nach der Dekodierung und Interpolation wird die gesamte Vorlage als JSON analysiert. Sonderzeichen in interpolierten Werten (wie Anführungszeichen ohne Escapezeichen oder umgekehrte Schrägstriche) können die JSON-Analyse unterbrechen.

**Tipp**  
Wenn dein Player Werte sendet, die bereits Klartext sind (nicht URL-encoded), funktionieren sie unverändert. Du musst nur darauf achten, dass deine URL-encodes Spielerwerte dekodiert werden, bevor du sie sendest.

### Was passiert, wenn eine Variable fehlt
<a name="yield-optimization-bid-construction-missing-variable"></a>

Wenn der Player keinen Parameter sendet, auf den in Ihrer Vorlage verwiesen wird (zum Beispiel, `{{player_params.app_name}}` aber nicht `app_name` in den Player-Parametern), wird der Platzhalter in eine ** leere Zeichenfolge aufgelöst. ** `""`

**Auswirkung: ** Wenn sich die leere Zeichenfolge in einem Pflichtfeld befindet (wie`app.bundle`), schlägt die Gebotsanfrage mit fehl. `BidRequestConfigurationError` Wenn es sich um ein optionales Feld handelt, erhält APS einen leeren Wert, was zu einer Antwort ohne Gebot (HTTP 204) führen kann.

## Was wird automatisch MediaTailor gesetzt
<a name="yield-optimization-bid-construction-auto-set"></a>

Die folgenden Felder werden immer MediaTailor mithilfe von Werten aus Ihrer Konsolenkonfiguration und dem aktuell verfügbaren Kontext festgelegt. Wenn Sie diese in Ihre Vorlage aufnehmen, werden Ihre Werte außer Kraft gesetzt:


| Feld | Quelle | 
| --- | --- | 
| id | Auto-generated: {sessionId}\_{availId} Format (zum Beispiel). abc123-def456\_78901 Nützlich, um Angebotsanfragen mit Sitzungsprotokollen zu korrelieren. | 
| app.publisher.id | Ihre Konfiguration PublisherId von der Konsole aus. | 
| imp[0].video.minduration | Ihre Konfiguration MinimumUnfilledDuration von der Konsole. | 
| imp[0].video.maxduration | Berechnet: Die tatsächlich noch nicht abgefüllten Sekunden sind hierfür verfügbar. | 
| imp[0].video.maxseq | Berechnet:. floor(unfilled\_duration / 6) | 
| imp[0].video.poddur | Berechnet: Die tatsächlich ungefüllten Sekunden stehen hierfür zur Verfügung. | 
| ext.integrationType | Immer auf eingestellt. "EMT" | 

## Nächste Schritte
<a name="yield-optimization-bid-construction-next-steps"></a>
+ Die vollständige Referenz zu den einzelnen Feldern finden Sie unter. [ORTB-Feldreferenz](yield-optimization-ortb-reference.md)
+ Informationen zum Kopieren und Einfügen von Vorlagen finden Sie unter. [Beispiel--Vorlagen](yield-optimization-examples.md)