

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.

# SALIDA\_PERSONALIZADA
<a name="monetization-functions-types-custom-output"></a>

## Cuándo se debe usar
<a name="monetization-functions-types-custom-output-when"></a>

Úselo `CUSTOM_OUTPUT` cuando la lógica de su función sea puramente computacional. Los casos de uso más comunes incluyen la clasificación de los dispositivos en función de las cadenas de los agentes de usuario, la selección de las URL de los servidores de decisiones publicitarias con una lógica de A/B pruebas y el reformateo de los parámetros del reproductor antes de que lleguen al servidor de decisiones publicitarias.

`CUSTOM_OUTPUT`las funciones son del tipo más rápido porque evalúan las expresiones de la memoria sin llamadas de red. Elija este tipo siempre que pueda lograr su objetivo sin contactar con un servicio externo.

## Campos de configuración
<a name="monetization-functions-types-custom-output-fields"></a>

Una `CUSTOM_OUTPUT` función tiene dos campos:
+ **Tiempo de ejecución**: el lenguaje de expresión. Establézcalo en`JSONATA`.
+ **Resultado**: un mapa de pares clave-valor. Cada clave es un nombre de enlace de salida (por ejemplo`player_params.device_type`) y cada valor es una expresión que se MediaTailor evalúa en tiempo de ejecución.

**nota**  
Se utiliza `{%...%}` para envolver las expresiones de JSonata en campos de cadena. Los valores sin estos delimitadores se tratan como cadenas estáticas. Por ejemplo, `"{%session.id%}"` evalúa la expresión, mientras que `"session.id"` es el texto literal.

## Comportamiento en tiempo de ejecución
<a name="monetization-functions-types-custom-output-behavior"></a>

Cuando MediaTailor ejecuta una `CUSTOM_OUTPUT` función, evalúa todas las expresiones del bloque de salida comparándolas con el estado de la sesión actual. Todas las expresiones ven la misma instantánea de entrada. Los resultados evaluados se convierten en los resultados de la función.

Si alguna expresión no se evalúa, MediaTailor descarta toda la salida de la función y procede como si no hubiera ninguna función asociada. La función no confirma parcialmente los resultados.

## Ejemplo: división A/B del tráfico
<a name="monetization-functions-types-custom-output-example"></a>

La siguiente función asigna aleatoriamente cada pausa publicitaria a una de las dos URL del servidor de decisiones publicitarias. Está diseñada para el `PRE_ADS_REQUEST` ciclo de vida útil.

```
{
    "FunctionId": "abTestAdsUrl",
    "FunctionType": "CUSTOM_OUTPUT",
    "CustomOutputConfiguration": {
        "Runtime": "JSONATA",
        "Output": {
            "adsRequest.url": "{%$random() < 0.5 ? 'https://ads.example.com/v1' : 'https://ads.example.com/v2'%}"
        }
    }
}
```

Para ver un recorrido completo de este ejemplo, consulte[Ejemplos de funciones](monetization-functions-examples.md).