

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Targeting degli annunci contestuali con Elemental Inference
<a name="monetization-functions-elemental-inference-integration"></a>

Elemental Inference analizza i contenuti video e produce classificazioni della tassonomia dei contenuti e segnali di sicurezza IAB del marchio per ogni ripresa. GARM Grazie all'integrazione MediaTailor con Elemental Inference, puoi arricchire le richieste di annunci con metadati contestuali. Il tuo server di decisione pubblicitaria può quindi indirizzare gli annunci in base a ciò che accade nei contenuti.

Con questa integrazione, utilizzi il tipo di `AWS_SERVICE_REQUEST` funzione per chiamare l'`GetMetadata`API Elemental Inference durante le interruzioni pubblicitarie. Per ulteriori informazioni sul tipo di funzione, consulta. [AWS richiesta di servizio](monetization-functions-types-aws-service-request.md)

Di seguito viene descritto il flusso di integrazione:

1. Elemental Inference analizza i tuoi contenuti e produce classificazioni a livello sintetico.

1. AWS Elemental decora i marker con i parametri di interrogazione di Elemental Inference MediaLive . SCTE-35 

1. Ad ogni interruzione dell'annuncio, MediaTailor invia una richiesta autenticata per recuperare le classificazioni `GetMetadata` per la finestra dei contenuti.

1. Le espressioni di output della tua funzione estraggono IAB e GARM segnalano e le trasmettono all'ad ad Decision Server.

## Prerequisiti
<a name="monetization-functions-elemental-inference-integration-prereqs"></a>

Prima di configurare questa integrazione, è necessario quanto segue:
+ Un feed Elemental Inference con un output di metadati contestuale. Per istruzioni sulla creazione del feed, consulta [ Create the feed ](https://docs.aws.amazon.com/elemental-inference/latest/userguide/create-feed.html) nella Guida per l'utente di Elemental * Inference. *
+ Una politica delle risorse sul feed che concede MediaTailor l'accesso. Consulta [Concedi l'accesso MediaTailor al tuo feed Elemental Inference](#monetization-functions-elemental-inference-integration-access).
+ Un MediaLive canale AWS Elemental con arricchimento contestuale dei metadati abilitato. Per fornire valori di temporizzazione PTS accurati per le query di Elemental Inference, abilita l'arricchimento. MediaLive Per istruzioni sulla configurazione dell'arricchimento contestuale dei metadati, consulta Configurare l'arricchimento contestuale dei metadati nella Guida per l'utente di [ Elemental. ](https://docs.aws.amazon.com/medialive/latest/ug/cm-enrichment-setup.html) *AWS MediaLive *

MediaTailor ed Elemental Inference non devono necessariamente trovarsi nella stessa regione. AWS Le combinazioni supportate dipendono dal fatto che ciascun servizio si trovi in una regione opt-in. Per informazioni dettagliate, vedi [Concedi l'accesso MediaTailor al tuo feed Elemental Inference](#monetization-functions-elemental-inference-integration-access). Per le regioni in cui è disponibile Elemental Inference, vedi Endpoint e quote di [ Elemental Inference. ](https://docs.aws.amazon.com/elemental-inference/latest/userguide/endpoints.html)

## Concedi l'accesso MediaTailor al tuo feed Elemental Inference
<a name="monetization-functions-elemental-inference-integration-access"></a>

MediaTailor chiama `GetMetadata` utilizzando le proprie credenziali di servizio. Il feed Elemental Inference di destinazione deve avere una politica delle risorse che consideri attendibile il principale del servizio. MediaTailor 

MediaTailor aggiunge automaticamente delle intestazioni di sicurezza che identificano l'account e la configurazione di riproduzione, assicurando che il feed Elemental Inference possa verificare che la richiesta provenga dalle risorse. MediaTailor 

La tabella seguente mostra quale servizio principale utilizzare in base allo scenario di distribuzione.


| Scenario | Principale del servizio | 
| --- | --- | 
| MediaTailor ed Elemental Inference nella stessa regione non opt-in o in diverse regioni non opt-in | mediatailor.amazonaws.com | 
| MediaTailor in una regione con consenso esplicito che chiama Elemental Inference in una regione non opt-in | mediatailor.{{region}}.amazonaws.com (ad esempio, mediatailor.af-south-1.amazonaws.com) | 
| Limita l'accesso a una singola regione MediaTailor  | mediatailor.{{region}}.amazonaws.com | 

**Nota**  
MediaTailor attualmente non supporta l'accesso a più regioni (opt-in a un opt-in diverso o non opt-in a opt-in).

Il seguente esempio di politica sulle risorse concede l'autorizzazione a richiamare un feed. MediaTailor `GetMetadata`

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "mediatailor.amazonaws.com"
            },
            "Action": "elemental-inference:GetMetadata",
            "Resource": "arn:aws:elemental-inference:us-west-2:123456789012:feed/my-contextual-feed",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:mediatailor:us-west-2:123456789012:playbackConfiguration/*"
                }
            }
        }
    ]
}
```

Sostituisci `us-west-2``123456789012`, e `my-contextual-feed` con la tua regione, l'ID dell'account e l'ID del feed.

La `aws:SourceAccount` condizione garantisce che solo MediaTailor chi opera per conto del tuo account possa accedere al feed. La `aws:SourceArn` condizione limita ulteriormente l'accesso a specifiche configurazioni di riproduzione. Sostituisci il carattere jolly con un nome specifico per la configurazione di riproduzione per un ambito più ristretto.

L'esempio seguente mostra una politica delle risorse per una regione con attivazione, in cui l'entità del servizio include il nome della regione.

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "mediatailor.af-south-1.amazonaws.com"
            },
            "Action": "elemental-inference:GetMetadata",
            "Resource": "arn:aws:elemental-inference:us-west-2:123456789012:feed/my-contextual-feed",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:mediatailor:af-south-1:123456789012:playbackConfiguration/*"
                }
            }
        }
    ]
}
```

## Configura utilizzando la console MediaTailor
<a name="monetization-functions-elemental-inference-integration-console"></a>

La MediaTailor console fornisce una ricetta guidata per la configurazione delle funzioni di metadati contestuali di Elemental Inference. La ricetta costruisce automaticamente l'URL, modella il corpo della richiesta e genera espressioni di output.

### Prima di iniziare
<a name="monetization-functions-elemental-inference-integration-console-prereqs"></a>

Completa le fasi descritte in [Prerequisiti](#monetization-functions-elemental-inference-integration-prereqs). È necessario un feed Elemental Inference con un output contestuale dei metadati, una policy sulle risorse che conceda l' MediaTailor accesso e un canale con l'arricchimento contestuale dei metadati abilitato. MediaLive 

### Creazione della funzione
<a name="monetization-functions-elemental-inference-integration-console-steps"></a>

1. Apri la [MediaTailor console](https://console.aws.amazon.com/mediatailor/home). Nel riquadro di navigazione, seleziona **Funzioni**.

1. Scegli **Crea funzione**.

1. **Per Tipo di funzione, scegli. ** ** AWS\_SERVICE\_REQUEST **

1. Scegliete la ricetta ** Elemental Inference — Contextual Metadata. **

1. Per Fonte del ** feed**, scegli una delle seguenti opzioni:
   + **Dai SCTE-35 marker ** (consigliato): MediaTailor estrae le informazioni sull'endpoint, sulla regione e sulla tempistica del feed dai SCTE-35 marker decorati da. MediaLive Non è necessario configurare nient'altro.
   + **Sfoglia i feed nel mio account**: la console elenca i feed di Elemental Inference nella regione selezionata. Scegli un feed per compilare automaticamente la configurazione. Usalo quando il tuo feed Elemental Inference è nello stesso account delle tue risorse. MediaTailor 

1. Per Nome ** dell'output**, scegli o inserisci il nome dell'output dei metadati contestuali configurato nel tuo feed Elemental Inference.
**Nota**  
Se hai selezionato un feed utilizzando il browser dei feed, la console compila automaticamente i nomi di output disponibili nella configurazione del feed.

1. In Configurazione ** dell'output**, seleziona i segnali contestuali da estrarre:
   + **IABCategorie di contenuti**: estrae gli ID delle categorie della IAB tassonomia come stringa separata da virgole.
   + **GARMBrand Safety: estrae le categorie di sicurezza del marchio ** contrassegnate. GARM

   Puoi personalizzare i nomi delle chiavi di output (ad esempio,`player_params.iabCategories`) in modo che corrispondano ai nomi dei parametri del server di decisione pubblicitaria.

1. Per ** Timeout**, inserisci il tempo massimo di attesa per una risposta. L'impostazione predefinita è 2000 millisecondi.

1. (Facoltativo) In ** Resource policy**, esamina lo snippet di policy generato. Se non hai ancora configurato l'accesso al tuo feed Elemental Inference, copia la policy e applicala utilizzando la console o l'API di Elemental Inference. `PutFeedPolicy`

1. Scegli **Crea**.

### Allega a una configurazione di riproduzione
<a name="monetization-functions-elemental-inference-integration-console-attach"></a>

Dopo aver creato la funzione, collegatela a una configurazione di riproduzione in corrispondenza del `PRE_ADS_REQUEST` lifecycle hook. È possibile collegarlo direttamente o come passaggio all'interno di una funzione. `SEQUENTIAL_EXECUTOR`

1. Nel pannello di navigazione, scegli Configurazioni di ** riproduzione ** e scegli la tua configurazione.

1. In Mappature delle ** funzioni**, scegli Modifica. ** **

1. Per l'`PRE_ADS_REQUEST`hook, seleziona la funzione che hai creato.

1. Salvare la configurazione.

**Importante**  
Se il tuo stream contiene interruzioni pubblicitarie senza indicatori Elemental Inference, usa una condizione `SEQUENTIAL_EXECUTOR` con una run che verifichi `inference.enriched` prima di richiamare la funzione di metadati contestuali. Consulta [Catena con altre funzioni](#monetization-functions-elemental-inference-integration-chaining).

## Configura utilizzando l'API o la CLI
<a name="monetization-functions-elemental-inference-integration-configure"></a>

Per fornire informazioni accurate sulla tempistica per le query di Elemental Inference, abilita MediaLive l'arricchimento contestuale dei metadati. Le sezioni seguenti descrivono la configurazione di produzione consigliata utilizzando SCTE-35 i marcatori di e un'opzione di configurazione manuale a scopo di MediaLive test.

### Utilizzo SCTE-35 dei marker di MediaLive (produzione)
<a name="monetization-functions-elemental-inference-integration-configure-scte"></a>

Quando MediaLive è configurato per l'arricchimento contestuale dei metadati, incorpora i parametri delle query Elemental Inference direttamente negli indicatori di interruzione degli annunci. SCTE-35 MediaTailorli analizza automaticamente e li espone come variabili. `inference.*` Per l'elenco completo delle variabili disponibili, vedere. [Variabili di metadati contestuali di Elemental Inference (inferenza.\*)](monetization-functions-hooks-pre-ads.md#monetization-functions-hooks-pre-ads-elemental-inference-vars)

Utilizzate questo approccio per le distribuzioni di produzione per i seguenti motivi:
+ Non sono necessari endpoint codificati.
+ La regione e il feed vengono risolti automaticamente dallo stream.
+ L'allineamento PTS viene gestito dall'encoder.

Per istruzioni su come abilitare l'arricchimento contestuale dei metadati sul tuo MediaLive canale, consulta [ Configurare l'arricchimento dei metadati contestuali nella Guida per l'utente di Elemental. ](https://docs.aws.amazon.com/medialive/latest/ug/cm-enrichment-setup.html) *AWS MediaLive *

L'esempio seguente mostra una configurazione completa delle funzioni mediante l'arricchimento. SCTE-35

```
{
    "FunctionId": "eiContextualMetadata",
    "FunctionType": "AWS_SERVICE_REQUEST",
    "AwsServiceRequestConfiguration": {
        "Runtime": "JSONATA",
        "TargetService": "elemental-inference",
        "TargetRegion": "{%inference.region%}",
        "MethodType": "POST",
        "Url": "{%inference.dataEndpoint & '/v1/feed/' & inference.feedId & '/input/0/metadata'%}",
        "Headers": {
            "Content-Type": "application/json"
        },
        "Body": "{%'{\"outputName\": \"my-contextual-output\", \"timeSpecification\": {\"ptsBased\": {\"startPts\": ' & $string(($exists(inference.previousBreakEndPts) and inference.previousBreakEndPts > inference.pts - 30 * inference.timescale ? inference.previousBreakEndPts : inference.pts - 30 * inference.timescale)) & ', \"endPts\": ' & $string(inference.pts + 1) & ', \"timescale\": ' & $string(inference.timescale) & '}}, \"parameters\": {\"contextualMetadata\": {}}}' %}",
        "RequestTimeoutMilliseconds": 2000,
        "Output": {
            "player_params.iabCategories": "{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), ',') : ''%}",
            "player_params.garmExcluded": "{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.garm.suitability.categories[flagged = true].category), ',') : ''%}"
        }
    }
}
```

L'elenco seguente spiega i campi chiave dell'esempio precedente:
+ `TargetRegion`utilizza `inference.region` per firmare dinamicamente la regione corretta.
+ L'URL è costituito da `inference.dataEndpoint` e`inference.feedId`.
+ The Body esegue una ricerca dalla fine dell'interruzione pubblicitaria precedente (o fino a 30 secondi di lookback) all'interruzione corrente.
+ L'output estrae gli ID delle categorie e le IAB categorie contrassegnate. GARM

**Nota**  
Sostituiscilo `my-contextual-output` con il nome dell'output contestuale dei metadati del feed Elemental Inference.

**Nota**  
Nel percorso dell'URL`/v1/feed/{feed-id}/input/0/metadata`, `0` si riferisce all'indice di input del feed Elemental Inference. La maggior parte dei feed ha un singolo input nell'indice. `0` Se il feed ha più input, sostituiscili `0` con l'indice appropriato.

**Nota**  
MediaTailor include automaticamente l'`x-amzn-elemental-inference-skip-poll`intestazione delle richieste a Elemental Inference. Ciò garantisce risposte a bassa latenza adeguate alla tempistica delle interruzioni pubblicitarie. Non è necessario configurare questa intestazione.

**Importante**  
Se il tuo stream contiene interruzioni pubblicitarie prive di marcatori Elemental Inference (ad esempio, fonti di contenuto misto), racchiudi questa funzione in una `SEQUENTIAL_EXECUTOR` stringa che controlli: `RunCondition` `inference.enriched`  

```
{ "FunctionId": "eiContextualMetadata", "RunCondition": "{%inference.enriched = true%}" }
```
Quando `inference.enriched` sono presenti `false` o assenti, le `inference.*` variabili non sono disponibili e le espressioni che fanno riferimento ad esse non produrranno risultati validi.

### Configurazione manuale (solo test)
<a name="monetization-functions-elemental-inference-integration-configure-manual"></a>

Usa questa configurazione solo per i test. Senza SCTE-35 l'arricchimento di MediaLive, è necessario determinare i valori PTS manualmente e non si può trarre vantaggio dall'allineamento temporale dinamico. Questa modalità ha funzionalità limitate. Non è supportata per i flussi di lavoro di produzione.

```
{
    "FunctionId": "eiContextualMetadataManual",
    "FunctionType": "AWS_SERVICE_REQUEST",
    "AwsServiceRequestConfiguration": {
        "Runtime": "JSONATA",
        "TargetService": "elemental-inference",
        "TargetRegion": "us-west-2",
        "MethodType": "POST",
        "Url": "https://abc123.elemental-inference-data.us-west-2.amazonaws.com/v1/feed/my-feed-id/input/0/metadata",
        "Headers": {
            "Content-Type": "application/json"
        },
        "Body": "{%'{\"outputName\": \"my-contextual-output\", \"timeSpecification\": {\"ptsBased\": {\"startPts\": 6300001, \"endPts\": 9000001, \"timescale\": 90000}}, \"parameters\": {\"contextualMetadata\": {}}}' %}",
        "RequestTimeoutMilliseconds": 2000,
        "Output": {
            "player_params.iabCategories": "{%response.statusCode = 200 ? $join($distinct(response.body.items.metadata.contextualMetadata.iabTaxonomy.categories.uniqueId), ',') : ''%}"
        }
    }
}
```

**Nota**  
Sostituiscilo `my-contextual-output` con il nome dell'output contestuale dei metadati del feed Elemental Inference.

**Nota**  
Sostituisci i `endPts` valori `startPts` e con i valori PTS appropriati per i tuoi contenuti. In questo esempio, i valori rappresentano una finestra di 30 secondi su una scala temporale di 90 kHz. Senza l'arricchimento dei SCTE-35 marker, è necessario determinare i valori PTS dalla pipeline di contenuti.

**Nota**  
Sostituisci `abc123.elemental-inference-data.us-west-2.amazonaws.com` e `us-west-2` con l'endpoint dei dati`my-feed-id`, l'ID del feed e la regione del feed. Puoi trovare l'endpoint dei dati nella risposta o nella console dell'`GetFeed`API Elemental Inference.

### Allega a una configurazione di riproduzione
<a name="monetization-functions-elemental-inference-integration-attach-api"></a>

Dopo aver creato la funzione, collegala a una configurazione di riproduzione in corrispondenza dell'hook del `PRE_ADS_REQUEST` ciclo di vita utilizzando l'`PutPlaybackConfiguration`API. Includi l'ID della funzione nella mappatura delle funzioni:

```
{
    "FunctionMappings": {
        "PRE_ADS_REQUEST": {
            "FunctionId": "eiContextualMetadata"
        }
    }
}
```

Puoi anche raggrupparlo in una `SEQUENTIAL_EXECUTOR` catena con altre funzioni. Per ulteriori informazioni, consulta [Catena con altre funzioni](#monetization-functions-elemental-inference-integration-chaining).

## Comprendi la finestra temporale
<a name="monetization-functions-elemental-inference-integration-timewindow"></a>

L'espressione Body crea una finestra PTS-based temporale per la `GetMetadata` richiesta. L'elenco seguente descrive la logica di lookback:
+ `endPts`= PTS dell'interruzione pubblicitaria corrente (da`inference.pts`) più 1 (fine inclusa).
+ `startPts`= ultima tra: fine dell'interruzione pubblicitaria precedente (`inference.previousBreakEndPts`) o 30 secondi prima dell'interruzione corrente.
+ In questo modo vengono interrogati solo i contenuti riprodotti tra le interruzioni pubblicitarie, evitando il contenuto contenuto contenuto nei contenitori pubblicitari precedenti.
+ Per la prima interruzione pubblicitaria di una sessione, non `inference.previousBreakEndPts` è disponibile, quindi viene utilizzato il lookback completo di 30 secondi.
+ La finestra di 30 secondi è il lookback massimo supportato da Elemental Inference. Quando `inference.previousBreakEndPts` è disponibile, l'espressione utilizza l'ultimo di quel valore o il lookback di 30 secondi. Ciò garantisce che la query riguardi solo i contenuti della precedente interruzione pubblicitaria.

## Utilizza la risposta nelle richieste di annunci
<a name="monetization-functions-elemental-inference-integration-output"></a>

La tabella seguente descrive i prefissi di destinazione dell'output disponibili e il loro comportamento.


| Prefisso di destinazione | Comportamento | 
| --- | --- | 
| player\_params.\* | Disponibile nell'URL del server di decisione pubblicitaria dell'annuncio corrente tramite [player\_params.key] sostituzione. Non persistente tra le interruzioni pubblicitarie. | 
| temp.\* | Valori intermedi per le funzioni successive in a. SEQUENTIAL\_EXECUTOR Non persistente. | 
| adsRequest.headers.\* | Inviato come intestazioni HTTP sulla richiesta del server di decisione pubblicitaria. | 
| adsRequest.url | Sostituisce completamente l'URL del server di decisione pubblicitaria. | 

Per altre ricette di espressioni di output, consulta. [Esempio 3: metadati contestuali](monetization-functions-examples-contextual-metadata.md)

## Catena con altre funzioni
<a name="monetization-functions-elemental-inference-integration-chaining"></a>

Per combinare la chiamata Elemental Inference con altre funzioni, racchiudile in un. `SEQUENTIAL_EXECUTOR` L'esempio seguente mostra una pipeline in cui la seconda funzione viene eseguita solo quando Elemental Inference ha restituito con successo le categorie.

```
{
    "FunctionId": "contextualAdPipeline",
    "FunctionType": "SEQUENTIAL_EXECUTOR",
    "SequentialExecutorConfiguration": {
        "Runtime": "JSONATA",
        "FunctionList": [
            { "FunctionId": "eiContextualMetadata" },
            {
                "FunctionId": "buildEnrichedAdsRequest",
                "RunCondition": "{%$exists(player_params.iabCategories) and player_params.iabCategories != ''%}"
            }
        ],
        "TimeoutMilliseconds": 3000
    }
}
```

`RunCondition`Garantisce che venga eseguita `buildEnrichedAdsRequest` solo quando la funzione Elemental Inference produce dati. È quindi possibile creare la richiesta del server decisionale pubblicitario utilizzando i dati contestuali.

## Risoluzione dei problemi
<a name="monetization-functions-elemental-inference-integration-troubleshooting"></a>

La tabella seguente descrive i problemi più comuni e le relative risoluzioni.


| Caratteristiche | Causa | Risoluzione | 
| --- | --- | --- | 
| 403 AccessDenied nei registri delle funzioni | Politica sulle risorse mancante o errata | Verifica che la politica sui feed includa l'entità del MediaTailor servizio e che la aws:SourceAccount condizione corrisponda all'ID del tuo account. Per informazioni sulla visualizzazione dei log di esecuzione delle funzioni, vedere[Risoluzione dei problemi e monitoraggio](monetization-functions-troubleshooting.md). | 
| inference.enriched è false | SCTE-35 i marker non contengono dati Elemental Inference | Verifica che l'arricchimento contestuale dei metadati sia abilitato sul tuo canale. MediaLive  | 
| inference.parseError è true | Dati di inferenza elementare non validi nei marcatori SCTE-35  | Controllate la configurazione del MediaLive canale e la versione del software dell'encoder. | 
| Risposta vuota (nessun elemento) | Nessun contenuto analizzato nella finestra temporale della query | Verifica che il feed Elemental Inference stia elaborando attivamente il contenuto e che la finestra temporale copra i segmenti analizzati. | 
| Risposta troncata | La risposta supera il limite di 20.000 caratteri | Riduci la finestra temporale per restituire un numero inferiore di scatti analizzati. | 

**Nota**  
Se la funzione fallisce per qualsiasi motivo (timeout, errore di autorizzazione o risposta vuota), MediaTailor procede con l'inserimento dell'annuncio utilizzando i valori disponibili senza il contributo della funzione. L'interruzione dell'annuncio non è bloccata.