

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Guia de início rápido do Functions
<a name="monetization-functions-quickstart"></a>

Este guia explica como criar sua primeira função, anexá-la a uma configuração de reprodução e verificar se ela foi executada. Ao final, você terá uma função funcional que classifica o tipo de dispositivo de cada espectador (`ctv`,`mobile`, ou`desktop`) e o armazena como um parâmetro de player disponível em cada solicitação do ADS.

## Pré-requisitos
<a name="monetization-functions-quickstart-prereqs"></a>

Antes de começar, verifique se você tem uma configuração de MediaTailor reprodução existente. Se você não tiver uma, consulte [Começando com MediaTailor](getting-started.md).

## Etapa 1: criar uma função do
<a name="monetization-functions-quickstart-step1"></a>

Nesta etapa, você cria uma função que classifica o tipo de dispositivo do visualizador com base na string do agente do usuário e armazena o resultado nos parâmetros do player. A função usa um tipo de saída personalizado (sem chamadas externas de API) com uma [Referência de expressão JSonata](monetization-functions-jsonata.md) expressão para avaliar o agente do usuário.

1. Abra o MediaTailor console em [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/).

1. Selecione **Funções** no painel de navegação.

1. Escolha a opção **Criar função**.

1. No modal do assistente de criação, selecione **Criar do zero** e escolha **Continuar**.

1. Em **Tipo de função**, selecione o quadro **de saída personalizada**.

1. Em **Detalhes da função**, insira o seguinte:
   + **ID da função**: `myFirstFunction`
   + **Descrição:** `Classify device type from user agent`

1. Em **Configuração de saída personalizada**, na seção **Saída**, adicione uma linha:
   + **Chave**: `player_params.deviceType`
   + **Valor**: `{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}`

1. Escolha a opção **Criar função**.

Uma notificação de sucesso confirma que a função foi criada e você será redirecionado para a página de detalhes da função.

A configuração da função resultante é:

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

## Etapa 2: anexar a função a uma configuração de reprodução
<a name="monetization-functions-quickstart-step2"></a>

Mapeie a função para um gancho de ciclo de vida em sua configuração de reprodução. O mapeamento informa MediaTailor quando executar a função.

1. No painel de navegação, escolha **Configurações**.

1. Escolha a configuração de reprodução que você deseja atualizar.

1. Escolha **Editar**.

1. Expanda a seção **Configuração de funções**.

1. Para **Gancho de inicialização da sessão**, selecione no `myFirstFunction` menu suspenso.

1. Escolha **Salvar**.

Isso se conecta `myFirstFunction` ao gancho do [INICIALIZAÇÃO DA PRÉ-SESSÃO](monetization-functions-hooks-pre-session.md) ciclo de vida. O mapeamento de funções resultante é:

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

MediaTailor executa a função uma vez no início de cada nova sessão nessa configuração de reprodução.

## Etapa 3: iniciar uma sessão e verificar se a função foi executada
<a name="monetization-functions-quickstart-step3"></a>

Inicie uma nova sessão de reprodução para acionar a função. Use uma solicitação de inicialização de sessão para o endpoint de inicialização de sessão da sua configuração de reprodução.

MediaTailor publica automaticamente CloudWatch métricas para cada execução de função, sem a necessidade de aceitação. Depois de iniciar uma sessão, verifique as seguintes métricas no `AWS/MediaTailor` namespace para confirmar se sua função foi executada:
+ `PreSessionInitHook.Invocations`— Confirma que o gancho foi acionado.
+ `PreSessionInitHook.Errors`— Deveria ser 0 se a função for bem-sucedida.
+ `Function.Invocations`— Confirma a função individual executada. Essa métrica inclui`FunctionId`,`FunctionType`, e `HookType` dimensões para que você possa filtrar `myFirstFunction` especificamente.

Se a função falhar, MediaTailor emite eventos de registro de erros para os registros manifestos por padrão (sem necessidade de configuração):
+ `PRE_SESSION_INIT_HOOK_ERROR`— Hook-level falha com `errorType` `cause` e.
+ `PRE_SESSION_INIT_FUNCTION_ERROR`— Function-level falha com os detalhes específicos `functionId` e do erro.

O exemplo a seguir mostra um `PRE_SESSION_INIT_FUNCTION_ERROR` evento para um erro de sintaxe na expressão da função:

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

Use o `eventId` campo para correlacionar eventos de erro de gancho e função para a mesma execução. O `errorType` campo indica a classe da falha — consulte [Solução de problemas e monitoramento](monetization-functions-troubleshooting.md) para obter uma lista completa dos tipos e correções de erros.

**nota**  
Para obter um registro detalhado de sucesso, opte por participar `PRE_SESSION_INIT_HOOK_SUMMARY` e participar de `PRE_SESSION_INIT_FUNCTION_COMPLETED` eventos na configuração do Registro de Manifestos. Eventos resumidos mostram o resultado final de cada execução. Os eventos concluídos mostram a entrada, a saída e request/response os detalhes HTTP de cada função. Eles são desativados por padrão para minimizar os custos de registro. Para obter mais informações, consulte [Solução de problemas e monitoramento](monetization-functions-troubleshooting.md).

## O que acontece nos bastidores
<a name="monetization-functions-quickstart-behind-scenes"></a>

Aqui está o fluxo completo da solicitação para a função que você acabou de criar:

1. O jogador inicia uma sessão com MediaTailor.

1. MediaTailor dispara o gancho do `PRE_SESSION_INITIALIZATION` ciclo de vida e funciona. `myFirstFunction`

1. A função avalia o `session.user_agent` campo e grava `ctv``mobile`, ou `desktop` para`player_params.deviceType`.

1. MediaTailor cria a sessão e retorna o manifesto para o player.

1. O player encontra uma pausa publicitária durante a reprodução.

1. MediaTailor aciona o gancho do `PRE_ADS_REQUEST` ciclo de vida e, em seguida, constrói a solicitação ADS. Como `deviceType` está armazenado nos parâmetros do player, ele está disponível para inclusão no URL de solicitação do ADS por meio da substituição dinâmica de variáveis.

1. O ADS usa o tipo de dispositivo para retornar anúncios criativos direcionados.

1. MediaTailor junta os anúncios no manifesto e os devolve ao player.

Se a função falhar por algum motivo, MediaTailor descarta a saída e prossegue como se nenhuma função estivesse anexada. O espectador ainda vê anúncios, mas sem a segmentação por tipo de dispositivo.

## Tópicos sugeridos
<a name="monetization-functions-quickstart-suggested-topics"></a>

Agora você tem uma função funcional anexada a uma configuração de reprodução. A partir daqui:
+ Para saber quais campos de entrada e namespaces de saída estão disponíveis em cada gancho do ciclo de vida, consulte. [Hooks do ciclo de vida](monetization-functions-hooks.md)
+ Para saber mais sobre os diferentes tipos de função e como encadeá-los, consulte[Tipos de funções e composição](monetization-functions-types.md).
+ Para ver exemplos completos de trabalho, consulte[Exemplos de funções](monetization-functions-examples.md).