

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Guía de inicio rápido de funciones
<a name="monetization-functions-quickstart"></a>

En esta guía se explica cómo crear la primera función, adjuntarla a una configuración de reproducción y comprobar que se ha ejecutado. Al final, dispondrás de una función funcional que clasifica el tipo de dispositivo de cada usuario (`ctv`,`mobile`, o`desktop`) y lo almacena como un parámetro del reproductor disponible en cada solicitud de ADS.

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

Antes de empezar, asegúrate de que tienes una configuración de MediaTailor reproducción existente. Si no dispone de una, consulte [Cómo empezar con MediaTailor](getting-started.md).

## Paso 1: Crear una función de
<a name="monetization-functions-quickstart-step1"></a>

En este paso, se crea una función que clasifica el tipo de dispositivo del usuario en función de la cadena del agente de usuario y almacena el resultado en los parámetros del reproductor. La función utiliza un tipo de salida personalizado (sin llamadas a la API externas) con una [JSONatareferencia de expresión](monetization-functions-jsonata.md) expresión para evaluar el agente de usuario.

1. Abra la [consola de MediaTailor](https://console.aws.amazon.com/mediatailor/home).

1. Seleccione **Funciones** en el panel de navegación.

1. Seleccione **Creación de función**.

1. En el modo del asistente de creación, seleccione ** Crear desde cero y**, a continuación, elija ** Continuar**.

1. En Tipo de ** función**, selecciona el ** mosaico de salida ** personalizado.

1. En Detalles de ** la función**, introduce lo siguiente:
   + **ID de función**: `myFirstFunction`
   + **Description:** `Classify device type from user agent`

1. En Configuración de salida ** personalizada**, en la ** sección ** Salida, agrega una fila:
   + **Clave**: `player_params.deviceType`
   + **Valor**: `{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}`

1. Seleccione **Creación de función**.

Una notificación de éxito confirma que la función se ha creado y se te redirige a la página de detalles de la función.

La configuración de la función resultante es:

```
{
    "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' %}"
        }
    }
}
```

## Paso 2: Adjunte la función a una configuración de reproducción
<a name="monetization-functions-quickstart-step2"></a>

Asigne la función a un enlace del ciclo de vida de su configuración de reproducción. El mapeo indica MediaTailor cuándo ejecutar la función.

1. En el panel de navegación, elija ** Configuraciones**.

1. Elija la configuración de reproducción que desea actualizar.

1. Elija **Edit (Edición de)**.

1. Amplíe la ** sección de configuración de ** funciones.

1. Para ver el enlace de inicialización de ** sesión**, selecciónelo `myFirstFunction` en el menú desplegable.

1. Seleccione **Save**.

Esto se adjunta al enlace del ciclo `myFirstFunction` de vida. [Pre-session inicialización](monetization-functions-hooks-pre-session.md) El mapeo de funciones resultante es:

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

MediaTailor ejecuta la función una vez al inicio de cada nueva sesión en esta configuración de reproducción.

## Paso 3: Inicie una sesión y verifique que la función se haya ejecutado
<a name="monetization-functions-quickstart-step3"></a>

Inicie una nueva sesión de reproducción para activar la función. Utilice una solicitud de inicialización de sesión para el punto final de inicialización de sesión de su configuración de reproducción.

MediaTailor publica automáticamente CloudWatch las métricas de cada ejecución de una función, sin necesidad de darse de alta. Tras iniciar una sesión, comprueba las siguientes métricas en el espacio de `AWS/MediaTailor` nombres para confirmar que la función se ha ejecutado:
+ `PreSessionInitHook.Invocations`— Confirma que se disparó el anzuelo.
+ `PreSessionInitHook.Errors`— Debe ser 0 si la función se ha realizado correctamente.
+ `Function.Invocations`— Confirma la función individual ejecutada. Esta métrica incluye `FunctionId` y `FunctionType` `HookType` dimensiones para que puedas filtrarla de `myFirstFunction` forma específica.

Si la función falla, MediaTailor emite los eventos del registro de errores a Manifest Logs de forma predeterminada (no es necesaria ninguna configuración):
+ `PRE_SESSION_INIT_HOOK_ERROR`— Hook-level error con `errorType` y. `cause`
+ `PRE_SESSION_INIT_FUNCTION_ERROR`— Function-level fallo con los detalles específicos `functionId` y del error.

El ejemplo siguiente muestra un `PRE_SESSION_INIT_FUNCTION_ERROR` evento relacionado con un error de sintaxis en la expresión de la función:

```
{
    "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": {}
}
```

Utilice el `eventId` campo para correlacionar los eventos de error de enlace y función para la misma ejecución. El `errorType` campo indica la clase de error. Consulte [Solución de problemas y supervisión](monetization-functions-troubleshooting.md) para obtener una lista completa de los tipos de errores y las soluciones.

**nota**  
Para registrar los errores de forma detallada, opta por incluir `PRE_SESSION_INIT_HOOK_SUMMARY` los `PRE_SESSION_INIT_FUNCTION_COMPLETED` eventos en la configuración del registro de manifiestos. Los eventos resumidos muestran el resultado de cada ejecución. Los eventos completados muestran los request/response detalles de entrada, salida y HTTP de cada función. Están deshabilitados de forma predeterminada para minimizar los costos de registro. Para obtener más información, consulte [Solución de problemas y supervisión](monetization-functions-troubleshooting.md).

## ¿Qué sucede entre bastidores
<a name="monetization-functions-quickstart-behind-scenes"></a>

Este es el flujo de solicitud completo para la función que acabas de crear:

1. El jugador inicia una sesión con MediaTailor.

1. MediaTailor activa el gancho del `PRE_SESSION_INITIALIZATION` ciclo de vida y se ejecuta`myFirstFunction`.

1. La función evalúa el `session.user_agent` campo y escribe `ctv``mobile`, o `desktop` en. `player_params.deviceType`

1. MediaTailor crea la sesión y devuelve el manifiesto al jugador.

1. El reproductor encuentra una pausa publicitaria durante la reproducción.

1. MediaTailor activa el enlace `PRE_ADS_REQUEST` del ciclo de vida y, a continuación, construye la solicitud ADS. Como `deviceType` se almacena en los parámetros del reproductor, está disponible para su inclusión en la URL de la solicitud de ADS mediante la sustitución dinámica de variables.

1. El ADS utiliza el tipo de dispositivo para mostrar creatividades publicitarias segmentadas.

1. MediaTailor incorpora los anuncios al manifiesto y se lo devuelve al jugador.

Si la función falla por cualquier motivo, MediaTailor descarta el resultado y procede como si no hubiera ninguna función adjunta. El espectador sigue viendo anuncios, pero sin segmentar por tipo de dispositivo.

## Temas sugeridos
<a name="monetization-functions-quickstart-suggested-topics"></a>

Ahora tiene una función funcional asociada a una configuración de reproducción. Desde aquí:
+ Para saber qué campos de entrada y espacios de nombres de salida están disponibles en cada enlace del ciclo de vida, consulte. [Enlaces de ciclo de vida](monetization-functions-hooks.md)
+ Para obtener más información sobre los distintos tipos de funciones y cómo encadenarlos, consulte. [Tipos de funciones y composición](monetization-functions-types.md)
+ Para ver ejemplos de funcionamiento completos, consulte[Ejemplos de funciones](monetization-functions-examples.md).