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á.
PostText
Envia a entrada do usuário ao Amazon Lex. Os aplicativos clientes podem usar essa API para enviar solicitações ao Amazon Lex em runtime. Em seguida, o Amazon Lex interpreta a entrada do usuário usando o modelo de machine learning criado para o bot.
Em resposta, o Amazon Lex retorna a próxima message
para transmitir um responseCard
opcional ao usuário para exibir. Considere as seguintes mensagens de exemplo:
-
Para uma entrada do usuário “Eu gostaria de uma pizza”, o Amazon Lex pode retornar uma resposta com uma mensagem gerando dados do slot (por exemplo, PizzaSize): “Qual tamanho de pizza você gostaria?”
-
Depois que o usuário fornece todas as informações do pedido de pizza, o Amazon Lex pode retornar uma resposta com uma mensagem para obter a confirmação do usuário: “Continuar com o pedido de pizza?”.
-
Depois que o usuário responder o prompt de confirmação com “Sim”, o Amazon Lex poderá retornar uma declaração de conclusão: “Obrigado, sua pizza de queijo foi pedida.”.
Nem todas as mensagens do Amazon Lex exigem uma resposta do usuário. Por exemplo, uma declaração de conclusão não exige uma resposta. Algumas mensagens exigem apenas uma resposta “sim” ou “não” do usuário. Além do message
, o Amazon Lex fornece contexto adicional sobre a mensagem na resposta que você pode usar para aprimorar o comportamento do cliente, por exemplo, para exibir a interface de usuário apropriada do cliente. Esses são os campos slotToElicit
, dialogState
, intentName
e slots
na resposta. Considere os seguintes exemplos:
-
Se a mensagem for para obter dados de slots, o Amazon Lex retornará as seguintes informações de contexto:
-
dialogState
definido como ElicitSlot -
intentName
definido como o nome da intenção no contexto atual -
slotToElicit
definido como o nome do slot para o qualmessage
está obtendo informações -
slots
definido como um mapa de slots configurados para a intenção com valores atuais conhecidos
-
-
Se a mensagem for um prompt de confirmação, o
dialogState
será definido como ConfirmIntent eSlotToElicit
definido como nulo. -
Se a mensagem for um prompt de esclarecimento (configurado para a intenção) que indica que a intenção do usuário não foi compreendida, a
dialogState
é definida como ElicitIntent e definida comoslotToElicit
nula.
Além disso, o Amazon Lex também retorna seu aplicativo específicosessionAttributes
. Para obter mais informações, consulte Gerenciar o contexto de conversação.
Sintaxe da Solicitação
POST /bot/botName
/alias/botAlias
/user/userId
/text HTTP/1.1
Content-type: application/json
{
"activeContexts": [
{
"name": "string
",
"parameters": {
"string
" : "string
"
},
"timeToLive": {
"timeToLiveInSeconds": number
,
"turnsToLive": number
}
}
],
"inputText": "string
",
"requestAttributes": {
"string
" : "string
"
},
"sessionAttributes": {
"string
" : "string
"
}
}
Parâmetros da Solicitação de URI
A solicitação usa os seguintes parâmetros de URI:
- botAlias
-
O alias do bot do Amazon Lex.
Obrigatório: Sim
- botName
-
O nome do bot do Amazon Lex.
Obrigatório: Sim
- userId
-
O ID do usuário do aplicativo cliente. O Amazon Lex usa isso para identificar a conversa de um usuário com seu bot. No runtime, cada solicitação deve conter o campo
userID
.Para decidir o ID de usuário a ser usado em seu aplicativo, considere os seguintes fatores.
-
O campo
userID
não deve conter nenhuma informação de identificação pessoal do usuário, por exemplo, nome, números de identificação pessoal ou outras informações pessoais do usuário final. -
Se você quiser que um usuário inicie uma conversa em um dispositivo e continue em outro, use um identificador específico do usuário.
-
Se você quiser que o mesmo usuário possa ter duas conversas independentes em dois dispositivos diferentes, escolha um identificador específico do dispositivo.
-
Um usuário não pode ter duas conversas independentes com duas versões diferentes do mesmo bot. Por exemplo, um usuário não pode conversar com as versões PROD e BETA do mesmo bot. Se você prevê que um usuário precisará conversar com duas versões diferentes, por exemplo, durante o teste, inclua o alias do bot no ID do usuário para separar as duas conversas.
Restrições de tamanho: tamanho mínimo 2. Comprimento máximo de 100.
Padrão:
[0-9a-zA-Z._:-]+
Exigido: Sim
-
Corpo da Solicitação
A solicitação aceita os dados a seguir no formato JSON.
- activeContexts
-
Uma lista de contextos ativos para a solicitação. Um contexto pode ser ativado quando uma intenção anterior é atendida ou incluindo o contexto na solicitação,
Se você não especificar uma lista de contextos, o Amazon Lex usará a lista atual de contextos para a sessão. Se você especificar uma lista vazia, todos os contextos da sessão serão apagados.
Tipo: matriz de objetos ActiveContext
Membros da Matriz: número mínimo de 0 itens. Número máximo de 20 itens.
Obrigatório: não
- inputText
-
O texto que o usuário inseriu (o Amazon Lex interpreta esse texto).
Ao usar a AWS CLI, você não pode passar uma URL no parâmetro
--input-text
. Em vez disso, passe o URL usando o parâmetro--cli-input-json
.Tipo: String
Restrições de tamanho: tamanho mínimo 1. Tamanho máximo de 1.024.
Obrigatório: Sim
- requestAttributes
-
Informações específicas da solicitação passadas entre o Amazon Lex e um aplicativo cliente.
O namespace
x-amz-lex:
é reservado para atributos especiais. Não crie atributos de solicitação com o prefixox-amz-lex:
.Para obter mais informações, consulte Definição de atributos de solicitação.
Tipo: mapa de string para string
Obrigatório: não
- sessionAttributes
-
Informações específicas do aplicativo passadas entre o Amazon Lex e um aplicativo cliente.
Para obter mais informações, consulte Definição de atributos de sessão.
Tipo: mapa de string para string
Obrigatório: Não
Sintaxe da Resposta
HTTP/1.1 200
Content-type: application/json
{
"activeContexts": [
{
"name": "string",
"parameters": {
"string" : "string"
},
"timeToLive": {
"timeToLiveInSeconds": number,
"turnsToLive": number
}
}
],
"alternativeIntents": [
{
"intentName": "string",
"nluIntentConfidence": {
"score": number
},
"slots": {
"string" : "string"
}
}
],
"botVersion": "string",
"dialogState": "string",
"intentName": "string",
"message": "string",
"messageFormat": "string",
"nluIntentConfidence": {
"score": number
},
"responseCard": {
"contentType": "string",
"genericAttachments": [
{
"attachmentLinkUrl": "string",
"buttons": [
{
"text": "string",
"value": "string"
}
],
"imageUrl": "string",
"subTitle": "string",
"title": "string"
}
],
"version": "string"
},
"sentimentResponse": {
"sentimentLabel": "string",
"sentimentScore": "string"
},
"sessionAttributes": {
"string" : "string"
},
"sessionId": "string",
"slots": {
"string" : "string"
},
"slotToElicit": "string"
}
Elementos de Resposta
Se a ação tiver êxito, o serviço enviará de volta uma resposta HTTP 200.
Os dados a seguir são retornados no formato JSON pelo serviço.
- activeContexts
-
Uma lista de contextos ativos para a sessão. Um contexto pode ser definido quando uma intenção é cumprida ou chamando a operação
PostContent
,PostText
ouPutSession
.Você pode usar um contexto para controlar as intenções que podem acompanhar uma intenção ou para modificar a operação do seu aplicativo.
Tipo: matriz de objetos ActiveContext
Membros da Matriz: número mínimo de 0 itens. Número máximo de 20 itens.
- alternativeIntents
-
Uma a quatro intenções alternativas que podem ser aplicáveis à intenção do usuário.
Cada alternativa inclui uma pontuação que indica o grau de confiança do Amazon Lex de que a intenção corresponde à intenção do usuário. As intenções são classificadas pela pontuação de confiança.
Tipo: matriz de objetos PredictedIntent
Membros da matriz: número máximo de seis itens.
- botVersion
-
A versão do bot que respondeu à conversa. Você pode usar essas informações para ajudar a determinar se uma versão de um bot tem um desempenho melhor do que outra versão.
Tipo: String
Restrições de tamanho: tamanho mínimo 1. Comprimento máximo de 64.
Padrão:
[0-9]+|\$LATEST
- dialogState
-
Identifica o estado atual da interação do usuário. O Amazon Lex retorna um dos seguintes valores como
dialogState
. Opcionalmente, o cliente pode usar essas informações para personalizar a interface do usuário.-
ElicitIntent
- O Amazon Lex quer obter a intenção do usuário.Por exemplo, um usuário pode expressar uma intenção (“Quero pedir uma pizza”). Se o Amazon Lex não puder deduzir a intenção do usuário a partir desse enunciado, ele retornará esse dialogState.
-
ConfirmIntent
- O Amazon Lex espera uma resposta “sim” ou “não”.Por exemplo, o Amazon Lex quer a confirmação do usuário antes de atender uma intenção.
Em vez de um “sim” ou “não”, um usuário pode responder com informações adicionais. Por exemplo, “sim, mas peça uma pizza de massa grossa” ou “não, quero pedir uma bebida”. O Amazon Lex pode processar essas informações adicionais (nesses exemplos, atualizar o valor do slot do tipo de crosta ou alterar a intenção de OrderPizza para OrderDrink).
-
ElicitSlot
- O Amazon Lex espera um valor de slot para a intenção atual.Por exemplo, suponha que, na resposta, o Amazon Lex envie esta mensagem: “Qual tamanho de pizza você gostaria?”. Um usuário pode responder com o valor do slot (por exemplo, “média”). O usuário também pode fornecer informações adicionais na resposta (por exemplo, “pizza média de massa grossa”). O Amazon Lex pode processar essas informações adicionais de forma adequada.
-
Fulfilled
- Transmite que a função do Lambda configurada para a intenção atendeu com sucesso a intenção. -
ReadyForFulfillment
- Transmite que o cliente deve atender à solicitação. -
Failed
- Transmite que a conversa com o usuário falhou.Isso pode acontecer por vários motivos, incluindo o fato de o usuário não ter fornecido uma resposta adequada aos prompts do serviço (você pode configurar quantas vezes o Amazon Lex pode solicitar informações específicas a um usuário) ou se a função do Lambda não atendeu à intenção.
Tipo: String
Valores Válidos:
ElicitIntent | ConfirmIntent | ElicitSlot | Fulfilled | ReadyForFulfillment | Failed
-
- intentName
-
A intenção atual do usuário que o Amazon Lex conhece.
Tipo: String
- message
-
A mensagem a ser transmitida ao usuário. A mensagem pode vir da configuração do bot ou de uma função do Lambda.
Se a intenção não estiver configurada com uma função do Lambda, ou se a função do Lambda tiver retornado
Delegate
comodialogAction.type
em sua resposta, o Amazon Lex decide o próximo curso de ação e seleciona uma mensagem apropriada da configuração do bot com base no contexto de interação atual. Por exemplo, se o Amazon Lex não conseguir entender a entrada do usuário, ele usa uma mensagem de prompt de esclarecimento.Ao criar uma intenção, você pode atribuir mensagens a grupos. Quando as mensagens são atribuídas a grupos, o Amazon Lex retorna uma mensagem de cada grupo na resposta. O campo de mensagem é uma string JSON de escape que contém as mensagens. Para obter mais informações sobre a estrutura da string JSON retornada, consulte Formatos de mensagem suportados.
Se a função do Lambda retornar uma mensagem, o Amazon Lex a enviará para o cliente em sua resposta.
Tipo: String
Restrições de tamanho: tamanho mínimo 1. Tamanho máximo de 1.024.
- messageFormat
-
O formato da mensagem de resposta. Um dos seguintes valores:
-
PlainText
- A mensagem contém texto sem formatação UTF-8. -
CustomPayload
- A mensagem é um formato personalizado definido pela função do Lambda. -
SSML
- A mensagem contém texto formatado para saída de voz. -
Composite
- A mensagem contém um objeto JSON de escape que contém uma ou mais mensagens dos grupos aos quais as mensagens foram atribuídas quando a intenção foi criada.
Tipo: String
Valores Válidos:
PlainText | CustomPayload | SSML | Composite
-
- nluIntentConfidence
-
Fornece uma pontuação que indica o quanto o Amazon Lex tem certeza de que a intenção retornada é aquela que corresponde à intenção do usuário. A pontuação está entre 0,0 e 1,0. Para obter mais informações, consulte Pontuações de confiança.
A pontuação é relativa, não absoluta. A pontuação pode mudar com base nas melhorias no Amazon Lex.
Tipo: objeto IntentConfidence
- responseCard
-
Representa as opções que o usuário tem para responder ao prompt atual. O cartão de resposta pode vir da configuração do bot (no console Amazon Lex, escolha o botão de configurações ao lado de um slot) ou de um hook de código (função do Lambda).
Tipo: objeto ResponseCard
- sentimentResponse
-
O sentimento expresso em um enunciado.
Quando o bot está configurado para enviar declarações ao Amazon Comprehend para análise de sentimentos, esse campo contém o resultado da análise.
Tipo: objeto SentimentResponse
- sessionAttributes
-
Um mapa de pares de chaves/valores que representam as informações de contexto específicas da sessão.
Tipo: mapa de string para string
- sessionId
-
Um identificador exclusivo da sessão.
Tipo: String
- slots
-
Os slots de intenção que o Amazon Lex detectou a partir da entrada do usuário na conversa.
O Amazon Lex cria uma lista de resolução que contém valores prováveis para um slot. O valor que ele retorna é determinado pelo
valueSelectionStrategy
selecionado quando o tipo de slot foi criado ou atualizado. SevalueSelectionStrategy
for definido comoORIGINAL_VALUE
, o valor fornecido pelo usuário será retornado, se o valor do usuário for semelhante ao valor do slot. SevalueSelectionStrategy
estiver definido comoTOP_RESOLUTION
, o Amazon Lex retornará o primeiro valor na lista de resolução ou, se não houver lista de resolução, nulo. SevalueSelectionStrategy
não for especificado, o padrão seráORIGINAL_VALUE
.Tipo: mapa de string para string
- slotToElicit
-
Se o valor
dialogState
forElicitSlot
, retornará o nome do slot para o qual o Amazon Lex está obtendo um valor.Tipo: string
Erros
- BadGatewayException
-
Ou o bot do Amazon Lex ainda está sendo construído ou um dos serviços dependentes (Amazon Polly, AWS Lambda) falhou com um erro interno de serviço.
Código de status HTTP: 502
- BadRequestException
-
A validação da solicitação falhou, não há mensagem utilizável no contexto ou a compilação do bot falhou, ainda está em andamento ou contém alterações não criadas.
Código de Status HTTP: 400
- ConflictException
-
Dois clientes estão usando a mesma conta da AWS, o bot do Amazon Lex e o mesmo ID de usuário.
Código de Status HTTP: 409
- DependencyFailedException
-
Uma das dependências, como AWS Lambda ou Amazon Polly, gerou uma exceção. Por exemplo,
-
Se o Amazon Lex não tiver permissões suficientes para chamar uma função do Lambda.
-
Se uma função do Lambda levar mais de 30 segundos para ser executada.
-
Se uma função do Lambda de atendimento retornar uma ação
Delegate
de diálogo sem remover nenhum valor de slot.
Código de status HTTP: 424
-
- InternalFailureException
-
Erro de serviço interno. Tente a chamada novamente.
Código de Status HTTP: 500
- LimitExceededException
-
Excedeu um limite.
Código de Status HTTP: 429
- LoopDetectedException
-
Essa exceção não é usada.
Código de status HTTP: 508
- NotFoundException
-
O atributo (como o bot Amazon Lex ou um alias) mencionado não foi encontrado.
Código de Status HTTP: 404
Consulte Também
Para obter mais informações sobre como usar essa API em um dos AWS SDKs específicos da linguagem, consulte o seguinte: