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 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:
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 ImageResponseCard 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,CustomPayloadouSSML. -
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
textcom o texto a ser exibido e um campovaluecom 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 Definição de atributos de solicitação para seu bot do 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" } }