Formato de evento de entrada do AWS Lambda para Lex V2
A primeira etapa na integração de uma função do Lambda em seu bot do Amazon Lex V2 é entender os campos no evento Amazon Lex V2 e determinar as informações desses campos que você deseja usar ao escrever seu script. O objeto JSON a seguir mostra o formato geral de um evento do Amazon Lex V2 passado para uma função do Lambda:
nota
O formato de entrada pode mudar sem uma alteração correspondente para a messageVersion. Seu código não deve gerar um erro, se novos campos estiverem presentes.
{ "messageVersion": "1.0", "invocationSource": "DialogCodeHook | FulfillmentCodeHook", "inputMode": "DTMF | Speech | Text", "responseContentType": "audio/mpeg | audio/ogg | audio/pcm | text/plain; charset=utf-8", "sessionId":string, "inputTranscript":string, "invocationLabel":string, "bot": { "id":string, "name":string, "localeId":string, "version":string, "aliasId":string, "aliasName":string}, "interpretations": [ { "interpretationSource": "Bedrock | Lex", "intent": { // see Intenção for details about the structure }, "nluConfidence":number, "sentimentResponse": { "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE", "sentimentScore": { "mixed":number, "negative":number, "neutral":number, "positive":number} } }, ... ], "proposedNextState": { "dialogAction": { "slotToElicit":string, "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot" }, "intent": { // see Intenção for details about the structure }, "prompt": { "attempt":string} }, "requestAttributes": {string:string, ... }, "sessionState": { // see Estado da sessão for details about the structure }, "transcriptions": [ { "transcription":string, "transcriptionConfidence":number, "resolvedContext": { "intent":string}, "resolvedSlots": {slot name: { // see Slots for details about the structure }, ... } }, ... ] }
Cada campo no evento de entrada é descrito a seguir:
A versão da mensagem que identifica o formato dos dados de evento que estão indo para a função do Lambda e o formato esperado da resposta de uma função do Lambda.
nota
Você configura esse valor ao definir uma intenção. Na implementação atual, apenas o Amazon Lex V2 oferece suporte à versão 1.0 da mensagem. Portanto, o console assume o valor padrão de 1.0 e não mostra a versão da mensagem.
O hook de código que o chamou da função do Lambda. Os seguintes valores são possíveis:
DialogCodeHook: o Amazon Lex V2 chamou a função do Lambda após a entrada do usuário.
FulfillmentCodeHook: o Amazon Lex V2 chamou a função do Lambda depois de preencher todos os slots necessários e a intenção estar pronta para ser cumprida.
O modo do enunciado do usuário. Os valores possíveis são:
DTMF: o usuário insere o enunciado usando um teclado de tom sensível ao toque (multifrequência de tons duplos).
Speech: o usuário falou o enunciado.
Text: o usuário digitou o enunciado.
O modo de resposta do bot ao usuário. text/plain; charset=utf-8 indica que o último enunciado foi escrito, enquanto um valor que começa com audio indica que o último enunciado foi falado.
O identificador de sessão alfanumérico usado para a conversa.
Uma transcrição da entrada do usuário.
-
Para entrada de texto, esse é o texto que o usuário digitou. Para entrada DTMF, essa é a chave que o usuário insere.
-
Para entrada de voz, esse é o texto no qual o Amazon Lex V2 converte o enunciado do usuário para invocar uma intenção ou preencher um slot.
Um valor que indica a resposta que invocou a função do Lambda. Você pode definir rótulos de invocação para a resposta inicial, os slots e a resposta de confirmação.
Informações sobre o bot que processou a solicitação, consistindo nos seguintes campos:
-
id: o identificador atribuído ao bot quando você o criou. Você pode ver o ID do bot no console do Amazon Lex V2 na página Configurações do bot.
-
name: o nome que você deu ao bot ao criá-lo.
-
localeId – O identificador da localidade que você usou para o bot. Para obter uma lista de localidades, consulte Idiomas e locais aceitos pelo Amazon Lex V2.
-
version: a versão do bot que processou a solicitação.
-
aliasId: o identificador atribuído ao alias do bot quando você o criou. Você pode ver o ID do alias do bot no console do Amazon Lex V2 na página Aliases. Se você não conseguir ver o ID do alias na lista, escolha o ícone de engrenagem no canto superior direito e ative o ID do alias.
-
aliasName: o nome que você deu ao alias do bot.
Uma lista de informações sobre intenções que o Amazon Lex V2 considera possíveis coincidências com o enunciado do usuário. Cada item é uma estrutura que fornece informações sobre a correspondência do enunciado com uma intenção, com o seguinte formato:
{ "intent": { // see Intenção for details about the structure }, "interpretationSource": "Bedrock | Lex", "nluConfidence":number, "sentimentResponse": { "sentiment": "MIXED | NEGATIVE | NEUTRAL | POSITIVE", "sentimentScore": { "mixed":number, "negative":number, "neutral":number, "positive":number} } }
Os campos dentro da estrutura são os seguintes:
-
intent: uma estrutura que contém informações sobre a intenção. Consulte Intenção para obter detalhes sobre a estrutura.
-
nluConfidence: uma pontuação que indica o grau de confiança do Amazon Lex V2 de que a intenção corresponde à intenção do usuário.
-
sentimentResponse: uma análise do sentimento da resposta, que contém os seguintes campos:
-
sentiment: indica se o sentimento do enunciado é
POSITIVE,NEGATIVE,NEUTRAL, ouMIXED. -
sentimentScore: uma estrutura que mapeia cada sentimento em um número que indica o quanto o Amazon Lex V2 está confiante de que o enunciado transmite esse sentimento.
-
-
interpretationSource: indica se um slot é resolvido pelo Amazon Bedrock.
Se a função do Lambda definir o dialogAction do sessionState para Delegate, esse campo aparecerá e mostrará a proposta do Amazon Lex V2 para a próxima etapa da conversa. Caso contrário, o próximo estado dependerá das configurações que você retorna na resposta da sua função do Lambda. Essa estrutura só estará presente se as duas afirmações abaixo forem verdadeiras:
-
O valor de
invocationSourceéDialogCodeHook -
O
typeprevisto dedialogActionéElicitSlot.
Você pode usar essas informações para adicionar runtimeHints no ponto certo da conversa. Consulte Como melhorar o reconhecimento de valores de slots com dicas de runtime na conversa Para mais informações. proposedNextState é uma estrutura que contém os seguintes campos:
A estrutura dos dados de proposedNextState é a seguinte:
"proposedNextState": { "dialogAction": { "slotToElicit":string, "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot" }, "intent": { // see Intenção for details about the structure }, "prompt": { "attempt":string} }
-
dialogAction: contém informações sobre a próxima etapa proposta pelo Amazon Lex V2. Os campos da estrutura são os seguintes:
-
slotToElicit: o slot obtido a seguir, conforme proposto pelo Amazon Lex V2. Esse campo aparecerá somente se o valor de
typeforElicitSlot. -
tipo: a próxima etapa da conversa, conforme proposto pelo Amazon Lex V2. Os seguintes valores são possíveis:
Delegate: o Amazon Lex V2 determina a próxima ação.ElicitIntent: a próxima ação é extrair uma intenção do usuário.ElicitSlot: a próxima ação é extrair um valor de slot do usuário.Close: encerra o processo de cumprimento da intenção e indica que não haverá uma resposta do usuário.ConfirmIntent: a próxima ação é perguntar ao usuário se os slots estão corretos e se a intenção está pronta para ser cumprida.
-
-
intent: a intenção que o bot determinou que o usuário está tentando cumprir. Consulte Intenção para obter detalhes sobre a estrutura.
-
prompt: uma estrutura que contém o campo
attempt, que é mapeado para um valor que especifica quantas vezes o Amazon Lex V2 solicitou ao usuário o próximo slot. Os valores possíveis sãoInitialpara a primeira tentativa eRetry1,Retry2,Retry3,Retry4eRetry5para as tentativas subsequentes.
Uma estrutura que contém os atributos de sessão específicos à solicitação que o cliente envia na solicitação. Use atributos de solicitação para passar informações que não precisam ser mantidas durante toda a sessão. Se não houver atributos de solicitação, o valor será nulo. Para obter mais informações, consulte Definição de atributos de solicitação para seu bot do Lex V2.
O estado atual da conversa entre o usuário e seu bot do Amazon Lex V2. Consulte Estado da sessão para obter detalhes sobre a estrutura.
Uma lista de transcrições que o Amazon Lex V2 considera possíveis coincidências com o enunciado do usuário. Para obter mais informações, consulte Uso de pontuações de confiança na transcrição de voz para melhorar as conversas com seu bot do Lex V2. Cada item é um objeto com o seguinte formato que contém informações sobre uma possível transcrição:
{ "transcription":string, "transcriptionConfidence":number, "resolvedContext": { "intent":string}, "resolvedSlots": {slot name: { // see Slots for details about the structure }, ... } }
Os campos são descritos abaixo:
-
transcription: uma transcrição que o Amazon Lex V2 considera uma possível correspondência com o enunciado de áudio do usuário.
-
transcriptionConfidence: uma pontuação que indica o grau de confiança do Amazon Lex V2 de que a intenção corresponde à intenção do usuário.
-
resolvedContext: uma estrutura que contém o campo
intentque mapeia a intenção à qual o enunciado pertence. -
resolvedSlots: uma estrutura cujas chaves são os nomes de cada slot que é resolvido pelo enunciado. Cada nome de slot é mapeado para uma estrutura que contém informações sobre esse slot. Consulte Slots para obter detalhes sobre a estrutura.