Gerenciamento de mensagens - Amazon Lex V1

Se você estiver usando o Amazon Lex V2, consulte o Guia do Amazon Lex V2.

 

Se você estiver usando o Amazon Lex V1, recomendamos atualizar seus bots para o Amazon Lex V2. Não estamos mais adicionando novos atributos à V1 e recomendamos o uso da V2 para todos os novos bots.

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

Gerenciamento de mensagens

Ao criar um bot, você pode configurar mensagens de esclarecimento ou informativas que deseja que ele envie ao cliente. Considere os seguintes exemplos:

  • Você pode configurar seu bot com a solicitação de esclarecimento a seguir:

    I don't understand. What would you like to do?

    O Amazon Lex envia essa mensagem para o cliente, caso não entenda a intenção do usuário.

     

  • Suponha que você crie um bot para oferecer suporte a uma intenção chamada OrderPizza. Para pedidos de pizza, você deseja que os usuários forneçam informações como tamanho da pizza, cobertura e tipo de massa. Você pode configurar as seguintes solicitações:

    What size pizza do you want? What toppings do you want? Do you want thick or thin crust?

    Assim que o Amazon Lex determina a intenção do usuário de pedir uma pizza, ele envia estas mensagens ao cliente para obter informações do usuário.

Esta seção explica como projetar interações do usuário em sua configuração de bot.

Tipos de mensagens

A mensagem pode ser uma solicitação ou instrução.

  • Normalmente, o prompt é uma pergunta que presume uma resposta do usuário.

  • A instrução é apenas informativa. Ela não presume uma resposta.

Uma mensagem pode incluir referências a slot, atributos de sessão e atributos de solicitação. Em runtime, o Amazon Lex substitui essas referências com valores reais.

Para se referir a valores de slots que foram definidos, use a seguinte sintaxe:

{SlotName}

Para se referir a atributos de sessão, use a seguinte sintaxe:

[SessionAttributeName]

Para se referir a atributos de solicitação, use a seguinte sintaxe:

((RequestAttributeName))

As mensagens podem incluir valores de slot, atributos de sessão e atributos de solicitação.

Por exemplo, suponha que você configure a seguinte mensagem na intenção OrderPizza de seu bot:

"Hey [FirstName], your {PizzaTopping} pizza will arrive in [DeliveryTime] minutes."

Essa mensagem refere-se tanto ao slot (PizzaTopping) quanto aos atributos de sessão (FirstName e DeliveryTime). Em runtime, o Amazon Lex substitui estes espaços reservados por valores e retorna a seguinte mensagem para o cliente:

"Hey John, your cheese pizza will arrive in 30 minutes."

Para incluir colchetes ([]) ou chaves ({}) em uma mensagem, use o caractere de escape de barra invertida (\). Por exemplo, a seguinte mensagem inclui chaves e colchetes:

\{Text\} \[Text\]

O texto retornado ao aplicativo cliente é semelhante a este:

{Text} [Text]

Para obter mais informações sobre atributos de sessão, consulte as operações de API PostText e PostContent. Para ver um exemplo, consulte Reservar uma viagem.

As funções do Lambda também podem gerar mensagens e retorná-las ao Amazon Lex para envio ao usuário. Se você adicionar funções do Lambda ao configurar sua intenção, poderá criar mensagens dinamicamente. Se fornecer as mensagens ao configurar o bot, você poderá eliminar a necessidade de criar uma solicitação na função do Lambda.

Contextos para a configuração de mensagens

Ao criar um bot, você pode criar mensagens em contextos diferentes, como solicitações de esclarecimento no bot, prompts de valores de slot e mensagens de intenções. O Amazon Lex escolhe uma mensagem apropriada em cada contexto para retornar ao usuário. Você pode fornecer um grupo de mensagens para cada contexto. Se você fizer isso, o Amazon Lex selecionará aleatoriamente uma mensagem no grupo. Você pode também especificar o formato da mensagem ou agrupar as mensagens. Para obter mais informações, consulte Formatos de mensagem suportados.

Se tiver uma função do Lambda associada a uma intenção, você poderá substituir qualquer uma das mensagens configuradas no momento da compilação. No entanto, para usar qualquer uma dessas mensagens, não é preciso ter uma função do Lambda.

Mensagens de bot

Você pode configurar seu bot com prompts de esclarecimento e mensagens de encerramento. Em runtime, o Amazon Lex usa o prompt de esclarecimento quando não compreende a intenção do usuário. Você pode configurar o número de vezes que o Amazon Lex solicita esclarecimentos antes de enviar a mensagem de fim da sessão. Você configura as mensagens em nível de bot na seção Tratamento de erros do console do Amazon Lex, da seguinte forma:

Seção Tratamento de erros na guia do editor do console. Prompts de esclarecimento e uma frase de encerramento podem ser especificadas.

Com a API, você configura mensagens definindo os campos clarificationPrompt e abortStatement na operação PutBot.

Se você usar uma função do Lambda com uma intenção, a função do Lambda pode retornar uma resposta direcionando o Amazon Lex a solicitar uma intenção do usuário. Se a função do Lambda; não fornecer essa mensagem, o Amazon Lex usará o prompt de esclarecimento.

Prompts de slot

É necessário especificar pelo menos uma mensagem de prompt para os slots necessários em uma intenção. Em runtime, o Amazon Lex usa uma dessas mensagens para solicitar que o usuário forneça um valor para o slot. Por exemplo, para um slot cityName, o seguinte é um prompt válido:

Which city would you like to fly to?

Você pode definir uma ou mais solicitações para cada slot usando o console. Você pode também criar grupos de solicitações usando a operação PutIntent. Para obter mais informações, consulte Grupos de mensagens.

Respostas

No console, use a seção Respostas para criar conversas dinâmicas e envolventes para seu bot. Você pode criar um ou mais grupos de mensagens para uma resposta. Em runtime, o Amazon Lex cria uma resposta selecionando uma mensagem de cada grupo de mensagens. Para obter mais informações sobre grupos de mensagens, consulte Grupos de mensagens.

Por exemplo, o primeiro grupo de mensagens pode conter diferentes saudações: "OIá", "Oi" e "Saudações". O segundo grupo de mensagens pode conter diferentes formas de introdução: "Sou o bot de reserva" e "Este é o bot de reserva". Um terceiro grupo de mensagens pode informar os recursos do bot: "Posso ajudar com aluguel de carro e reservas de hotéis", "Você pode alugar carros e fazer reservas de hotel" e "Eu posso ajudar você a alugar um carro e reservar um hotel".

O Lex usa uma mensagem de cada um dos grupos de mensagens para criar as respostas dinamicamente em uma conversa. Por exemplo, uma interação pode ser:

Uma possível conversa com um bot.

Outro poderia ser o seguinte:

Outra possível conversa com um bot.

Em qualquer um dos casos, o usuário pode responder com uma nova intenção, como a intenção BookCar ou BookHotel.

Você pode configurar o bot para fazer uma pergunta complementar na resposta. Por exemplo, para a interação anterior, você pode criar um quarto grupo de mensagens com as seguintes perguntas: "Posso ajudar com um carro ou um hotel?", "Você gostaria de fazer uma reserva agora?" e "Há algo que possa fazer para você?". Para mensagens que incluam "Não" como resposta, você pode criar um prompt de acompanhamento. A imagem seguir fornece um exemplo:

Prompt de acompanhamento em uma conversa com um bot.

Para criar um prompt de acompanhamento, escolha Aguardar resposta do usuário. Em seguida, digite a mensagem ou as mensagens que você deseja enviar quando o usuário disser "Não". Ao criar uma resposta para usar como prompt de acompanhamento, você devem especificar também uma instrução apropriada quando a resposta para a instrução for "Não". Para obter um exemplo, veja a imagem a seguir.

Configuração de mensagem para quando um usuário diz "não".

Para adicionar respostas a uma intenção com a API, use a operação PutIntent. Para especificar uma resposta, defina o campo conclusionStatement na solicitação PutIntent. Para definir uma solicitação de acompanhamento, defina o campo followUpPrompt e inclua a instrução a ser enviada quando o usuário disser "Não". Você não pode definir o campo conclusionStatement e o campo followUpPrompt na mesma intenção.

Formatos de mensagem suportados

Quando você a operação PostText ou a operação PostContent com o cabeçalho Accept definido como text/plain;charset=utf8, o Amazon Lex oferece suporte a mensagens nos seguintes formatos:

  • PlainText—A mensagem contém texto sem formatação UTF-8.

  • SSML—A mensagem contém texto formatado para saída de voz.

  • CustomPayload—A mensagem contém um formato personalizado que você criou para seu cliente. Você pode definir a carga útil para atender às necessidades de seu aplicativo.

  • Composite—A mensagem é uma coleção de mensagens, uma de cada grupo de mensagens. Para obter mais informações sobre grupos de mensagens, consulte Grupos de mensagens.

Por padrão, o Amazon Lex retorna qualquer uma das mensagens definidas para determinada solicitação. Por exemplo, se você definir cinco mensagens para obter um valor de slot, o Amazon Lex escolherá uma das mensagens aleatoriamente e a retornará para o cliente.

Se quiser que o Amazon Lex retorne um tipo específico de mensagem para o cliente em uma solicitação de runtime, defina o parâmetro de solicitação x-amzn-lex:accept-content-types. A resposta é limitada pelo tipo ou pelos tipos solicitados. Se houver mais de uma mensagem do tipo especificado, o Amazon Lex retornará uma aleatoriamente. Para obter mais informações sobre o cabeçalho x-amz-lex:accept-content-types, consulte Como configurar o tipo de resposta.

Grupos de mensagens

Um grupo de mensagens é um conjunto de respostas adequadas para determinada solicitação. Use grupos de mensagens quando desejar que seu bot crie respostas dinamicamente em uma conversa. Quando o Amazon Lex retorna uma resposta ao aplicativo cliente, ele escolhe aleatoriamente uma mensagem de cada grupo. Você pode criar no máximo cinco grupos de mensagens para cada resposta. Cada grupo pode conter no máximo cinco mensagens. Para obter exemplos de como criar grupos de mensagens no console, consulte Respostas.

Para criar um grupo de mensagens, você pode usar o console ou as operações PutBot, PutIntent ou PutSlotType para atribuir um número de grupo a uma mensagem. Se você não criar um grupo de mensagens ou se criar apenas um grupo, o Amazon Lex enviará uma única mensagem no campo Message. Os aplicativos cliente recebem várias mensagens em uma resposta somente quando você cria mais de um grupo de mensagens no console ou mais de um grupo de mensagens ao criar ou atualizar uma intenção com a operação PutIntent.

Quando o Amazon Lex envia uma mensagem de um grupo, o campo Message da resposta contém um objeto JSON de escape que contém as mensagens. O exemplo a seguir mostra o conteúdo do campo Message quando ele contém várias mensagens.

nota

O exemplo é formatado por motivo de legibilidade. Uma resposta não contém retornos de carro (CR).

{\"messages\":[ {\"type\":\"PlainText\",\"group\":0,\"value\":\"Plain text\"}, {\"type\":\"SSML\",\"group\":1,\"value\":\"SSML text\"}, {\"type\":\"CustomPayload\",\"group\":2,\"value\":\"Custom payload\"} ]}

Você pode definir o formato das mensagens. O formato pode ser um dos seguintes:

  • PlainText – O formato da mensagem é texto sem formatação UTF-8.

  • SSML – O formato da mensagem é Speech Synthesis Markup Language (SSML).

  • CustomPayload – O formato da mensagem é um formato personalizado que você especificou.

Para controlar o formato das mensagens que as operações PostContent e PostText retornam no campo Message, defina o atributo de solicitação x-amz-lex:accept-content-types. Por exemplo, se você definir o cabeçalho como a seguir, você receberá apenas texto sem formatação e mensagens SSML na resposta:

x-amz-lex:accept-content-types: PlainText,SSML

Se solicitar um formato específico de mensagem e um grupo de mensagens não contiver uma mensagem com esse formato, você obterá uma exceção NoUsableMessageException. Quando usar um grupo de mensagens para agrupar mensagens por tipo, não use o cabeçalho x-amz-lex:accept-content-types.

Para obter mais informações sobre o cabeçalho x-amz-lex:accept-content-types, consulte Como configurar o tipo de resposta.

Cartões de resposta

nota

Os cartões de resposta não funcionam com o chat do Amazon Connect. No entanto, consulte Adicionar mensagens interativas ao chat para obter uma funcionalidade semelhante.

Um cartão de resposta contém um conjunto de respostas adequadas a um prompt. Use cartões de resposta para simplificar interações para seus usuários e aumentar a precisão de seu bot ao reduzir erros tipográficos nas interações de texto. Você pode enviar um cartão de resposta para cada solicitação que o Amazon Lex envia a seu aplicativo cliente. Você pode usar cartões de resposta com o Facebook Messenger, Slack e Twilio e com seus próprios aplicativos clientes.

Por exemplo, em um aplicativo de táxi, você pode configurar uma opção no cartão de resposta para "Casa" e defina o valor para o endereço residencial do usuário. Quando o usuário seleciona essa opção, o Amazon Lex recebe o endereço inteiro como o texto de entrada. Veja a imagem a seguir:

Um cartão de resposta de exemplo.

Você pode definir um cartão de resposta para os seguintes prompts:

  • Declaração de conclusão

  • Prompt de confirmação

  • Prompt de acompanhamento

  • Declaração de rejeição

  • Enunciados de tipo de slot

Você pode definir apenas um cartão de resposta para cada prompt.

Você configura cartões de resposta ao criar uma intenção. Você pode definir um cartão de resposta estático no momento da criação usando o console ou a operação PutIntent. Ou você pode definir um cartão de resposta dinâmica em runtime em uma função do Lambda. Se você definir cartões de resposta estática e dinâmica, a o cartão de resposta dinâmica terá precedência.

O Amazon Lex envia cartões de resposta no formato que o cliente compreende. Ele transforma cartões de resposta para Facebook Messenger, Slack e Twilio. Para outros clientes, o Amazon Lex envia uma estrutura JSON na resposta PostText. Por exemplo, se o cliente for o Facebook Messenger, o Amazon Lex transformará o cartão de resposta para um modelo genérico. Para obter mais informações sobre os modelos genéricos do Facebook Messenger, consulte Modelo genérico no site do Facebook. Para ver um exemplo de estrutura JSON, consulte Geração dinâmica de cartões de resposta.

Você pode usar cartões de resposta somente com a operação PostText. Você não pode usar cartões de resposta com a operação PostContent.

Definição de cartões de resposta estática

Defina cartões de resposta estática com a operação PutBot ou o console do Amazon Lex ao criar uma intenção. Um cartão de resposta estática é definido ao mesmo tempo que a intenção. Use um cartão de resposta estática quando as respostas são fixas. Suponha que você está criando um bot com uma intenção que tem um slot para sabor. Ao definir o slot de sabor, você especifica prompts, como mostrado na seguinte captura de tela do console:

O editor da intenção no console.

Ao definir prompts, você tem a opção de associar um cartão de resposta e definir detalhes na operação PutBot ou no console do Amazon Lex, conforme mostrado no exemplo a seguir:

O console mostrando o editor de cartão de resposta.

Agora, suponha que você integrou o bot ao Facebook Messenger. O usuário pode clicar nos botões para escolher uma sabor, como mostrado na ilustração a seguir:

Um cartão de resposta no Facebook Messenger.

Para personalizar o conteúdo de um cartão de resposta, você pode consultar atributos da sessão. Em runtime, o Amazon Lex substitui essas referências pelos valores adequados dos atributos de sessão. Para obter mais informações, consulte Definição dos atributos da sessão. Para ver um exemplo, consulte Exemplo: uso de um cartão de resposta.

Geração dinâmica de cartões de resposta

Para gerar cartões de resposta dinamicamente em runtime, use a função do Lambda de inicialização e validação para a intenção. Use um cartão de resposta dinâmica quando as respostas forem determinadas em runtime na função do Lambda. Em resposta à entrada do usuário, a função do Lambda gera um cartão de resposta e o retorna na seção dialogAction da resposta. Para obter mais informações, consulte Formato de resposta.

A seguir, veja uma resposta de uma função do Lambda; parcial que mostra o elemento responseCard. Ele gera uma experiência do usuário semelhante à mostrada na seção anterior.

responseCard: { "version": 1, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title": "What Flavor?", "subtitle": "What flavor do you want?", "imageUrl": "Link to image", "attachmentLinkUrl": "Link to attachment", "buttons": [ { "text": "Lemon", "value": "lemon" }, { "text": "Raspberry", "value": "raspberry" }, { "text": "Plain", "value": "plain" } ] } ] }

Para ver um exemplo, consulte Agendar uma consulta.