Estruturas comuns em uma função do AWS Lambda para
Na resposta do Lambda, há várias estruturas que se repetem. Detalhes sobre essas estruturas comuns são fornecidos nesta seção.
Intenção
"intent": { "confirmationState": "Confirmed | Denied | None", "name":string, "slots": { // see Slots for details about the structure }, "state": "Failed | Fulfilled | FulfillmentInProgress | InProgress | ReadyForFulfillment | Waiting", "kendraResponse": { // Only present when intent is KendraSearchIntent. For details, see // https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax } }
O campo intent é mapeado para um objeto com os seguintes campos:
Indica se o usuário confirmou os slots da intenção e se a intenção está pronta para ser atendida. Os seguintes valores são possíveis:
Confirmed: o usuário confirma que os valores do slot estão corretos.
Denied: o usuário indica que os valores do slot estão incorretos.
None: o usuário ainda não chegou ao estágio de confirmação.
O nome da intenção.
Informações sobre os slots necessários para cumprir a intenção. Consulte Slots para obter detalhes sobre a estrutura.
Indica o estado de cumprimento da intenção. Os seguintes valores são possíveis:
Failed: o bot falhou em cumprir a intenção.
Fulfilled: o bot concluiu o cumprimento da intenção.
FulfillmentInProgress: o bot está no meio do cumprimento da intenção.
InProgress: o bot está no meio da obtenção dos valores de slot necessários para cumprir a intenção.
ReadyForFulfillment: o bot obteve todos os valores do slot para a intenção e está pronto para cumpri-la.
Waiting: o bot está aguardando uma resposta do usuário (limitado a conversas de streaming).
Contém informações sobre os resultados da consulta de pesquisa do Kendra. Esse campo aparecerá somente se a intenção for KendraSearchIntent. Consulte a sintaxe de resposta na chamada de API de Consulta para Kendra Para mais informações.
Slots
O campo slots existe dentro de uma estrutura intent e é mapeado para uma estrutura cujas chaves são os nomes dos slots para essa intenção. Se o slot não for um slot de vários valores (consulte Usar vários valores em um slot para obter mais detalhes), ele será mapeado para uma estrutura com o formato a seguir. Observe que o shape é Scalar.
{slot name: { "shape": "Scalar", "value": { "originalValue":string, "interpretedValue":string, "resolvedValues": [string, ... ] } } }
Se o slot for um slot de vários valores, o objeto para o qual ele é mapeado contém outro campo chamado values, que é mapeado para uma lista de estruturas, cada uma contendo informações sobre um slot que compõe o slot de vários valores. O formato de cada objeto na lista corresponde ao do objeto para o qual um slot normal é mapeado. Observe que o shape é List, mas o shape dos slots de componentes abaixo values é Scalar.
{slot name: { "shape": "List", "value": { "originalValue":string, "interpretedValue":string, "resolvedValues": [string, ... ] }, "values": [ { "shape": "Scalar", "value": { "originalValue":string, "interpretedValue":string, "resolvedValues": [string, ... ] } }, { "shape": "Scalar", "value": { "originalValue":string, "interpretedValue":string, "resolvedValues": [string, ... ] } }, ... ] }
Os campos no objeto do slot estão descritos abaixo:
O formato do slot. Esse valor é List válido se houver vários valores no slot (consulte Usar vários valores em um slot para obter mais detalhes) e, caso contrário, é Scalar.
Um objeto contendo informações sobre o valor fornecido pelo usuário para um slot e a interpretação, no seguinte formato:
{ "originalValue":string, "interpretedValue":string, "resolvedValues": [string, ... ] }
Os campos são descritos abaixo:
-
originalValue: a parte da resposta do usuário à elicitação do slot determinado como sendo relevante para o valor do slot.
-
interpretedValue: o valor determinado para o slot, de acordo com a entrada do usuário.
-
resolvedValues: uma lista de valores determinados como resoluções possíveis para a entrada do usuário.
Uma lista de objetos contendo informações sobre os slots que compõem o slot de vários valores. O formato de cada objeto corresponde ao de um slot normal, com os campos shape e value descritos acima. values só aparece se o slot consistir em vários valores (consulte Usar vários valores em um slot para obter mais detalhes). O objeto JSON a seguir mostra dois slots de componentes:
"values": [ { "shape": "Scalar", "value": { "originalValue": string, "interpretedValue":string, "resolvedValues": [string, ... ] } }, { "shape": "Scalar", "value": { "originalValue": string, "interpretedValue":string, "resolvedValues": [string, ... ] } }, ... ]
Estado da sessão
O campo sessionState é mapeado para um objeto contendo informações sobre o estado da conversa com o usuário. Os campos reais que aparecem no objeto dependem do tipo de ação da caixa de diálogo. Consulte Campos necessários na resposta para obter os campos obrigatórios em uma resposta do Lambda. O formato do objeto sessionState é o seguinte:
"sessionState": { "activeContexts": [ { "name":string, "contextAttributes": {string:string}, "timeToLive": { "timeToLiveInSeconds":number, "turnsToLive":number} }, ... ], "sessionAttributes": {string:string, ... }, "runtimeHints": { "slotHints": {intent name: {slot name: { "runtimeHintValues": [ { "phrase":string}, ... ] }, ... }, ... } }, "dialogAction": { "slotElicitationStyle": "Default | SpellByLetter | SpellByWord", "slotToElicit":string, "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot" }, "intent": { // see Intenção for details about the structure }, "originatingRequestId":string}
Os campos são descritos abaixo:
Uma lista de objetos que contém informações sobre um contexto que um usuário está usando em uma sessão. Use contextos para facilitar e controlar o reconhecimento de intenções. Para mais informações sobre contextos, consulte Definição do contexto de intenção para seu bot do Lex V2. Cada objeto é formatado como segue:
{ "name":string, "contextAttributes": {string:string}, "timeToLive": { "timeToLiveInSeconds":number, "turnsToLive":number} }
Os campos são descritos abaixo:
-
name: o nome do contexto.
-
contextAttributes: um objeto que contém os nomes dos atributos do contexto e os valores para os quais eles são mapeados.
-
timeToLive: um objeto que especifica por quanto tempo o contexto permanece ativo. Esse objeto pode conter um ou ambos os seguintes campos:
-
timeToLiveInSeconds: o número de segundos que o contexto permanece ativo.
-
turnsToLive: o número de turnos em que o contexto permanece ativo.
-
Mapa de pares de chaves/valores que representam as informações de contexto específicas da sessão. Para obter mais informações, consulte Definição de atributos de sessão para seu bot do Lex V2. O objeto é formatado da seguinte forma:
{string:string, ... }
Fornece dicas sobre as frases que um cliente provavelmente usará em um slot para melhorar o reconhecimento de áudio. Os valores que você fornece nas dicas aumentam o reconhecimento de áudio desses valores em relação a palavras com sons semelhantes. O formato do objeto runtimeHints é o seguinte:
{ "slotHints": {intent name: {slot name: { "runtimeHintValues": [ { "phrase":string}, ... ] }, ... }, ... } }
O campo slotHints é mapeado para um objeto cujos campos são os nomes das intenções no bot. Cada nome de intenção é mapeado para um objeto cujos campos são os nomes dos slots dessa intenção. Cada nome de slot é mapeado para uma estrutura com um único campo runtimeHintValues, que é uma lista de objetos. Cada objeto contém um campo phrase que é mapeado para uma dica.
Determina a próxima ação a ser tomada pelo Amazon Lex V2. O formato do objeto é o seguinte:
{ "slotElicitationStyle": "Default | SpellByLetter | SpellByWord", "slotToElicit":string, "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot" }
Os campos são descritos abaixo:
-
slotElicitationStyle: determina como o Amazon Lex V2 interpreta a entrada de áudio do usuário se o
typedadialogActionforElicitSlot. Para obter mais informações, consulte Captura de valores de slots com estilos ortográficos durante a conversa. Os seguintes valores são possíveis:Default: o Amazon Lex V2 interpreta a entrada de áudio da maneira padrão para preencher um slot.SpellByLetter: o Amazon Lex V2 escuta a ortografia do valor do slot pelo usuário.SpellByWord: o Amazon Lex V2 escuta a ortografia do valor do slot pelo usuário usando palavras associadas a cada letra (por exemplo, “a como em avião”). -
slotToElicit: define o slot a ser obtido do usuário, se
typedadialogActionforElicitSlot. -
type: define a ação que o bot deve executar. Os seguintes valores são possíveis:
Delegate: permite que o Amazon Lex V2 determine a próxima etapa.ElicitIntent: solicita que o cliente expresse uma intenção.ConfirmIntent: confirma os valores dos slots do cliente e se a intenção está pronta para ser cumprida.ElicitSlot: solicita que o cliente forneça um valor de slot para uma intenção.Close: encerra o processo de cumprimento da intenção.
Consulte Intenção para obter a estrutura do campo intent.
Um identificador exclusivo da solicitação. Esse campo é opcional para a resposta do Lambda.