

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à.

# Guida rapida alle funzioni
<a name="monetization-functions-quickstart"></a>

Questa guida illustra come creare la prima funzione, collegarla a una configurazione di riproduzione e verificare che funzioni. Alla fine, avrai una funzione funzionante che classifica il tipo di dispositivo di ogni spettatore (`ctv`,`mobile`, o`desktop`) e lo memorizza come parametro del lettore disponibile in ogni richiesta ADS.

## Prerequisiti
<a name="monetization-functions-quickstart-prereqs"></a>

Prima di iniziare, assicurati di avere una configurazione di MediaTailor riproduzione esistente. Se non lo hai, consultare [Iniziare con MediaTailor](getting-started.md).

## Fase 1: Creare una funzione
<a name="monetization-functions-quickstart-step1"></a>

In questo passaggio, crei una funzione che classifica il tipo di dispositivo dello spettatore in base alla stringa dello user agent e memorizza il risultato nei parametri del giocatore. La funzione utilizza un tipo di output personalizzato (nessuna chiamata API esterna) con un'[Riferimento all'espressione JSonata](monetization-functions-jsonata.md)espressione per valutare l'agente utente.

1. Apri la MediaTailor console all'indirizzo [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/).

1. Nel riquadro di navigazione, seleziona **Funzioni**.

1. Scegli **Crea funzione**.

1. **Nella modalità Create Wizard, seleziona **Crea da zero**, quindi scegli Continua.**

1. In **Tipo di funzione**, seleziona il riquadro di **output personalizzato**.

1. In **Dettagli della funzione**, inserisci quanto segue:
   + **ID della funzione**: `myFirstFunction`
   + **Descrizione:** `Classify device type from user agent`

1. In **Configurazione di output personalizzata**, nella sezione **Output**, aggiungi una riga:
   + **Chiave**: `player_params.deviceType`
   + **Value (Valore)**: `{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}`

1. Scegli **Crea funzione**.

Una notifica di successo conferma che la funzione è stata creata e l'utente viene reindirizzato alla pagina dei dettagli della funzione.

La configurazione della funzione risultante è:

```
{
    "FunctionId": "myFirstFunction",
    "FunctionType": "CUSTOM_OUTPUT",
    "Description": "Classify device type from user agent",
    "CustomOutputConfiguration": {
        "Runtime": "JSONATA",
        "Output": {
            "player_params.deviceType": "{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}"
        }
    }
}
```

## Fase 2: Collegare la funzione a una configurazione di riproduzione
<a name="monetization-functions-quickstart-step2"></a>

Associa la funzione a un hook del ciclo di vita presente nella configurazione di riproduzione. La mappatura indica MediaTailor quando eseguire la funzione.

1. Nel riquadro di navigazione, scegli **Configurazioni**.

1. Scegli la configurazione di riproduzione che desideri aggiornare.

1. Scegli **Modifica**.

1. Espandi la sezione **Configurazione delle funzioni**.

1. Per l'**hook di inizializzazione della sessione**, seleziona `myFirstFunction` dal menu a discesa.

1. Scegli **Save** (Salva).

Si collega `myFirstFunction` al lifecycle hook. [INIZIALIZZAZIONE DELLA PRE\_SESSIONE](monetization-functions-hooks-pre-session.md) La mappatura delle funzioni risultante è:

```
{
    "FunctionMapping": {
        "PRE_SESSION_INITIALIZATION": "myFirstFunction"
    }
}
```

MediaTailor esegue la funzione una volta all'inizio di ogni nuova sessione in questa configurazione di riproduzione.

## Fase 3: Avvia una sessione e verifica che la funzione sia stata eseguita
<a name="monetization-functions-quickstart-step3"></a>

Avvia una nuova sessione di riproduzione per attivare la funzione. Utilizzate una richiesta di inizializzazione della sessione sull'endpoint di inizializzazione della sessione della configurazione di riproduzione.

MediaTailor pubblica automaticamente le CloudWatch metriche per ogni esecuzione di funzione, non è richiesto alcun consenso esplicito. Dopo aver avviato una sessione, controlla le seguenti metriche nello spazio dei `AWS/MediaTailor` nomi per confermare l'esecuzione della funzione:
+ `PreSessionInitHook.Invocations`— Conferma che l'hook è stato attivato.
+ `PreSessionInitHook.Errors`— Dovrebbe essere 0 se la funzione ha avuto successo.
+ `Function.Invocations`— Conferma la singola funzione eseguita. Questa metrica include `FunctionId` e `HookType` dimensioni in modo da poter filtrare in modo `myFirstFunction` specifico. `FunctionType`

Se la funzione fallisce, per impostazione predefinita MediaTailor emette eventi di registro degli errori nei registri del manifesto (non è necessaria alcuna configurazione):
+ `PRE_SESSION_INIT_HOOK_ERROR`— Hook-level errore con `errorType` and. `cause`
+ `PRE_SESSION_INIT_FUNCTION_ERROR`— Function-level mancato inserimento dei dati specifici `functionId` e dell'errore.

L'esempio seguente mostra un `PRE_SESSION_INIT_FUNCTION_ERROR` evento relativo a un errore di sintassi nell'espressione della funzione:

```
{
    "eventTimestamp": "2024-01-01T12:00:00.076000000Z",
    "eventType": "PRE_SESSION_INIT_FUNCTION_ERROR",
    "eventDescription": "Function execution failed",
    "awsAccountId": "123456789012",
    "originId": "my-config",
    "sessionId": "session-123",
    "requestId": "req-abc",
    "eventId": "5dc6f040-0f72-4e8c-a64e-25eeef62708c",
    "functionId": "myFirstFunction",
    "functionType": "CUSTOM_OUTPUT",
    "executionTimeMs": 2,
    "errorType": "SYNTAX_ERROR",
    "cause": "Expected \")\" before end of expression",
    "input": {}
}
```

Utilizzate il `eventId` campo per correlare gli eventi di errore di hook e function per la stessa esecuzione. Il `errorType` campo indica la classe di errore. [Risoluzione dei problemi e monitoraggio](monetization-functions-troubleshooting.md) Per un elenco completo dei tipi di errore e delle correzioni, consulta la sezione.

**Nota**  
Per una registrazione dettagliata dei risultati corretti, attivate `PRE_SESSION_INIT_HOOK_SUMMARY` e attivate `PRE_SESSION_INIT_FUNCTION_COMPLETED` gli eventi nella configurazione del Manifest Log. Gli eventi di riepilogo mostrano il risultato dell'hook per ogni esecuzione. Gli eventi completati mostrano i request/response dettagli di input, output e HTTP di ogni funzione. Questi sono disabilitati per impostazione predefinita per ridurre al minimo i costi di registro. Per ulteriori informazioni, consulta [Risoluzione dei problemi e monitoraggio](monetization-functions-troubleshooting.md).

## Cosa succede dietro le quinte
<a name="monetization-functions-quickstart-behind-scenes"></a>

Ecco il flusso di richieste completo per la funzione che hai appena creato:

1. Il giocatore inizia una sessione con MediaTailor.

1. MediaTailor attiva il `PRE_SESSION_INITIALIZATION` lifecycle hook e corre. `myFirstFunction`

1. La funzione valuta il `session.user_agent` campo e scrive`ctv`, `mobile` o to. `desktop` `player_params.deviceType`

1. MediaTailor crea la sessione e restituisce il manifesto al giocatore.

1. Il giocatore subisce un'interruzione pubblicitaria durante la riproduzione.

1. MediaTailor attiva il `PRE_ADS_REQUEST` lifecycle hook, quindi costruisce la richiesta ADS. Poiché `deviceType` è memorizzato nei parametri del giocatore, è possibile includerlo nell'URL della richiesta ADS tramite la sostituzione dinamica delle variabili.

1. L'ADS utilizza il tipo di dispositivo per restituire creatività pubblicitarie mirate.

1. MediaTailor inserisce gli annunci nel manifesto e lo restituisce al giocatore.

Se la funzione fallisce per qualsiasi motivo, MediaTailor scarta l'output e procede come se non fosse associata alcuna funzione. Lo spettatore continua a vedere gli annunci, ma senza il targeting per tipo di dispositivo.

## Argomenti suggeriti
<a name="monetization-functions-quickstart-suggested-topics"></a>

Ora hai una funzione funzionante collegata a una configurazione di riproduzione. Da qui:
+ Per sapere quali campi di input e namespace di output sono disponibili in ogni hook del ciclo di vita, consulta. [Hook del ciclo di vita](monetization-functions-hooks.md)
+ Per ulteriori informazioni sui diversi tipi di funzioni e su come concatenarli, vedere. [Tipi e composizione delle funzioni](monetization-functions-types.md)
+ Per vedere esempi di funzionamento completi, vedere[Esempi di funzioni](monetization-functions-examples.md).