

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

# AWS Lambdaformato de resposta para Lex V2
<a name="lambda-response-format"></a>

A segunda etapa na integração de uma função do Lambda em seu bot do Amazon Lex V2 é entender os campos na resposta da função do Lambda e determinar quais parâmetros você deseja manipular. O objeto JSON a seguir mostra o formato geral de uma resposta do Lambda que é retornada ao Amazon Lex V2:

```
{
    "sessionState": {
        // see Estado da sessão for details about the structure
    },
    "messages": [
        {
            "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML",
            "content": string,
            "imageResponseCard": {
                "title": string,
                "subtitle": string,
                "imageUrl": string,
                "buttons": [
                    {
                        "text": string,
                        "value": string
                    },
                    ...
                ]
            }
        },
        ...
    ],
    "requestAttributes": {
        string: string,
        ...
    }
}
```

Cada campo na resposta é descrito abaixo:

## sessionState
<a name="lambda-response-sessionstate"></a>

O estado da conversa entre o usuário e seu bot do Amazon Lex V2 que você deseja retornar. Consulte [Estado da sessão](lambda-common-structures.md#lambda-session-state) para obter detalhes sobre a estrutura. Este campo é sempre obrigatório.

## mensagens
<a name="lambda-response-messages"></a>

Uma lista de mensagens que o Amazon Lex V2 retorna ao cliente para a próxima rodada da conversa. Se o `contentType` que você fornecer for `PlainText`, `CustomPayload` ou `SSML`, escreva a mensagem que você deseja devolver ao cliente no campo `content`. Se o `contentType` que você fornecer for `ImageResponseCard`, forneça os detalhes do cartão no campo `imageResponseCard`. Se você não fornecer mensagens, o Amazon Lex V2 usa a mensagem apropriada definida quando o bot foi criado.

O campo `messages` é obrigatório se `dialogAction.type` for `ElicitIntent` ou `ConfirmIntent`.

Cada item na lista é uma estrutura no formato a seguir, contendo informações sobre uma mensagem a ser retornada ao usuário. Exemplo:

```
{
    "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML",
    "content": string,
    "imageResponseCard": {
        "title": string,
        "subtitle": string,
        "imageUrl": string,
        "buttons": [
            {
                "text": string,
                "value": string
            },
            ...
        ]
    }
}
```

Uma descrição para cada campo é fornecida abaixo:
+ **contentType**: o tipo de mensagem a ser usada.

  `CustomPayload`: uma string de resposta que você pode personalizar para incluir dados ou metadados para a aplicação.

  `ImageResponseCard`: uma imagem com botões que o cliente pode selecionar. Consulte [ImageResponseCard](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_ImageResponseCard.html) para obter mais informações.

  `PlainText`: uma string de texto simples.

  `SSML`: uma string que inclui Linguagem de marcação de síntese de fala para personalizar a resposta de áudio.
+ **content**: a mensagem a ser enviada ao usuário. Use esse campo se o tipo de mensagem for `PlainText`, `CustomPayload` ou `SSML`.
+ **imageResponseCard**— Contém a definição do cartão de resposta a ser mostrado ao usuário. Use esse campo se o tipo de mensagem for `ImageResponseCard`. Mapeia para uma estrutura que contém os seguintes campos:
  + **title**: o título do cartão de resposta.
  + **subtitle**: a solicitação para o usuário escolher um botão.
  + **imageUrl**: um link para uma imagem do cartão.
  + **buttons**: uma lista de estruturas que contém, informações sobre um botão. Cada estrutura contém um campo `text` com o texto a ser exibido e um campo `value` com o valor a ser enviado ao Amazon Lex V2, se o cliente selecionar esse botão. Você pode incluir até três botões.

## requestAttributes
<a name="lambda-response-requestattributes"></a>

Uma estrutura que contém atributos específicos da solicitação para a resposta ao cliente. Consulte [Definição de atributos de solicitação para seu bot do Lex V2](context-mgmt-request-attribs.md) Para mais informações. Esse campo é opcional.

## Campos necessários na resposta
<a name="lambda-response-required"></a>

No mínimo, a resposta do Lambda deve incluir um objeto `sessionState`. Dentro disso, forneça um objeto `dialogAction` e especifique o campo `type`. Dependendo do `type` de `dialogAction` que você fornecer, pode haver outros campos obrigatórios para a resposta do Lambda. Esses requisitos são descritos a seguir, juntamente com exemplos mínimos de trabalho:

### Delegate
<a name="lambda-response-delegate"></a>

**Delegate** permite que o Amazon Lex V2 determine a próxima etapa. Nenhum outro campo é necessário.

```
{
    "sessionState": {
        "dialogAction": {
            "type": "Delegate"
    }
}
```

### ElicitIntent
<a name="lambda-response-elicitintent"></a>

**ElicitIntent**solicita que o cliente expresse uma intenção. Você deve incluir pelo menos uma mensagem no campo `messages` para solicitar a elicitação de uma intenção.

```
{
    "sessionState": {
        "dialogAction": {
            "type": "ElicitIntent"
    },
    "messages": [
        {
            "contentType": PlainText,
            "content": "How can I help you?"
        }
    ]
}
```

### ElicitSlot
<a name="lambda-response-elicitslot"></a>

**ElicitSlot**solicita que o cliente forneça um valor de slot. Você deve incluir o nome do slot no campo `slotToElicit` do objeto `dialogAction`. Você também deve incluir o `name` do `intent` no objeto `sessionState`.

```
{`
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "OriginCity",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "BookFlight"
        }
    }
}
```

### ConfirmIntent
<a name="lambda-response-confirmintent"></a>

**ConfirmIntent**confirma os valores dos slots do cliente e se a intenção está pronta para ser cumprida. Você deve incluir o `name` do `intent` no objeto `sessionState` e o `slots` a ser confirmado. Você também deve incluir pelo menos uma mensagem no campo `messages` para solicitar ao usuário a confirmação dos valores dos slots. Sua mensagem deve gerar uma resposta “sim” ou “não”. Se o usuário responder “sim”, o Amazon Lex V2 define `confirmationState` da intenção como `Confirmed`. Se o usuário responder “não”, o Amazon Lex V2 define o `confirmationState` da intenção como `Denied`.

```
{
    "sessionState": {
        "dialogAction": {
            "type": "ConfirmIntent"
        },
        "intent": {
            "name": "BookFlight",
            "slots": {
                "DepartureDate": {
                    "value": {
                        "originalValue": "tomorrow",
                        "interpretedValue": "2023-05-09",
                        "resolvedValues": [
                            "2023-05-09"
                    ]
                 }
                },
                "DestinationCity": {
                    "value": {
                        "originalValue": "sf",
                        "interpretedValue": "sf",
                        "resolvedValues": [
                            "sf"
                        ]
                    }
                },
                "OriginCity": {
                    "value": {
                        "originalValue": "nyc",
                        "interpretedValue": "nyc",
                        "resolvedValues": [
                            "nyc"
                        ]
                    }
                }
            }
        }
    },
    "messages": [
        {
            "contentType": PlainText,
            "content": "Okay, you want to fly from {OriginCity} to \
            {DestinationCity} on {DepartureDate}. Is that correct?"
        }
    ]
}
```

### Fechar
<a name="lambda-response-close"></a>

**Fechar** encerra o processo de cumprimento da intenção e indica que nenhuma resposta adicional é esperada do usuário. Você deve incluir o `name` e o `state` do `intent` no objeto `sessionState`. Os estados de intenção compatíveis são `Failed`, `Fulfilled` e `InProgress`.

```
"sessionState": {
    "dialogAction": {
        "type": "Close"
    },
    "intent": {
        "name": "BookFlight",
        "state": "Failed | Fulfilled | InProgress"
    }
}
```