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
ouSSML
. -
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 campovalue
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" } }