Como posso alterar o fluxo do meu bot do Amazon Lex usando uma função do AWS Lambda de inicialização/validação ou cumprimento?

Data da última atualização: 27/05/2022

Quero alterar o fluxo do meu bot do Amazon Lex usando uma função do AWS Lambda de inicialização/validação ou cumprimento. Como posso fazer isso usando o console do Amazon Lex?

Breve descrição

Você pode usar ganchos de código do AWS Lambda de inicialização/validação ou cumprimento para fazer alterações no fluxo de diálogo do seu bot do Amazon Lex. O console do Amazon Lex fornece o campo dialogAction, que direciona o Amazon Lex no próximo curso de ação a ser executado na interação com os seus usuários. Esse campo descreve para o Amazon Lex o que esperar de um usuário depois que ele retorna uma resposta ao cliente.

O campo type indica o próximo curso de ação para o bot. Ele também determina os outros campos que a função Lambda deve fornecer como parte do valor dialogAction. Há cinco tipos:

  1. ElicitIntent: informa ao Amazon Lex que é esperado que o usuário responda com uma expressão oral que inclua uma intenção.
  2. ElicitSlot: informa ao Amazon Lex que é esperado que o usuário forneça um valor de slot na resposta.
  3. Close: informa ao Amazon Lex para não esperar uma resposta do usuário. Por exemplo, “Seu pedido de pizza foi feito” não requer uma resposta.
  4. ConfirmIntent: informa ao Amazon Lex que é esperado que o usuário responda com “sim” ou “não” para confirmar ou negar a intenção atual.
  5. Delegate: orienta o Amazon Lex a escolher o próximo curso de ação com base na configuração do bot.

Resolução

Observação: As etapas neste artigo usam a V2 do console do Amazon Lex. Se você estiver usando a V1, escolha Switch to the new Lex v2 console (Mudar para o novo console Lex v2) no painel de navegação.

A sintaxe de resposta do Lambda especifica o formato no qual o Amazon Lex espera uma resposta da sua função do Lambda.

Analise as seguintes informações sobre os campos de resposta:

  • sessionState: esse campo é obrigatório. Ele descreve o estado atual da conversa com o usuário. O conteúdo real da estrutura depende do tipo de ação da caixa de diálogo.
  • dialogAction: esse campo determina o tipo de ação que o Amazon Lex deve executar em resposta à função Lambda. O campo “type” é sempre obrigatório. O campo slotToElicit é necessário somente quando dialogAction.type é ElicitSlot.
  • intent: o nome da intenção que o Amazon Lex usa. Esse campo não é obrigatório quando dialogAction.type for Delegate ou ElicitIntent.
  • state: esse campo é obrigatório. O estado só pode ser ReadyForFulfillment se dialogAction.type for Delegate.
  • messages: esse campo será obrigatório se dialogAction.type for ElicitIntent. Ele descreve uma ou mais mensagens que o Amazon Lex exibe ao cliente para realizar o próximo turno da conversa. Se você não fornecer mensagens, o Amazon Lex usará uma mensagem apropriada que você definiu quando o bot foi criado. Para obter mais informações, consulte o tipo de dados Mensagem.
  • contentType: descreve o tipo de mensagem a ser usada.
  • content: se o tipo de mensagem for PlainText, CustomPayload ou SSML, esse campo conterá a mensagem a ser enviada ao usuário.
  • imageResponseCard:se o tipo de mensagem for ImageResponseCard, esse campo conterá a definição do cartão de resposta a ser exibida ao usuário. Para obter mais informações, consulte o tipo de dados ImageResponseCard.

Alterar o fluxo da caixa de diálogo usando o tipo ElicitSlot

Para alterar o fluxo de diálogo usando o tipo ElicitSlot, passe a resposta do gancho de código Lambda neste formato:

{
    "sessionState": {
        "dialogAction": {
            "slotToElicit": "<slot-name-to-elicit>",
            "type": "ElicitSlot"
        },
        "intent": {
            "name": "<intent-name-to-elicit>",
            "state": "<state>"
        }
    }
}

Depois de retornar a resposta, um slot chamado slot-name-to-elicit pertencente à intenção intent-name-to-elicit é obtido pelo Amazon Lex.

Alterar o fluxo da caixa de diálogo usando o tipo ElicitIntent

Para alterar o fluxo da caixa de diálogo usando o tipo ElicitIntent, passe a resposta do gancho do código Lambda neste formato:

   {
     "sessionState": {
         "dialogAction": {
             "type": "ElicitIntent"
         }
     },
     "messages": [{
         "contentType": "<content-type>",
         "content": "<message>"
     }]
 }

Depois de retornar essa resposta, a mensagem especificada no espaço reservado da mensagem é exibida para o usuário. A próxima entrada do usuário é considerada como uma expressão oral de intenção, que evoca a intenção com a maior pontuação nluConfidence.


Este artigo foi útil?


Você necessita de suporte técnico ou relacionado à cobrança?