AWS Lambda formato de resposta para Lex V2 - Guia do desenvolvedor

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 Lambda formato de resposta para Lex V2

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 JSON objeto a seguir mostra o formato geral de uma resposta 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:

O estado da conversa entre o usuário e seu bot do Amazon Lex V2 que você deseja retornar. Consulte Estado da sessão para obter detalhes sobre a estrutura. Este campo é sempre obrigatório.

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 ImageResponseCardpara 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 para o 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.

Uma estrutura que contém atributos específicos da solicitação para a resposta ao cliente. Consulte Configurando atributos de solicitação para seu bot Lex V2 Para mais informações. Esse campo é opcional.

Campos necessários na resposta

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 permite que o Amazon Lex V2 determine a próxima etapa. Nenhum outro campo é necessário.

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

ElicitIntentsolicita 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?" } ] }

ElicitSlotsolicita 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" } } }

ConfirmIntentconfirma 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 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" } }