PostText - Amazon Lex V1

Si utiliza Amazon Lex V2, consulte la guía de Amazon Lex V2.

 

Si utiliza Amazon Lex V1, le recomendamos que actualice los bots a Amazon Lex V2. Hemos dejado de agregar nuevas características a V1, por lo que recomendamos encarecidamente utilizar V2 para todos los nuevos bots.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

PostText

Envía entradas de usuarios a Amazon Lex. Las aplicaciones cliente pueden utilizar esta API para enviar solicitudes a Amazon Lex en tiempo de ejecución. A continuación, Amazon Lex interpreta la entrada del usuario con el modelo de machine learning que ha compilado para el bot.

Como respuesta, Amazon Lex devuelve el siguiente valor message al usuario para transmitir al usuario un valor responseCard opcional que se muestra. Considere los siguientes ejemplos de mensaje:

  • Si un usuario escribe «Me gustaría una pizza», Amazon Lex podría devolver una respuesta con un mensaje con datos de espacio (por ejemplo, PizzaSize): «¿Qué tamaño de pizza quieres?»

  • Una vez que el usuario haya proporcionado toda la información necesaria para pedir la pizza, Amazon Lex puede devolver una respuesta con un mensaje para obtener la confirmación del usuario: “¿Desea continuar con el pedido?”.

  • Si el usuario responde “sí” a una pregunta de confirmación, es posible que Amazon Lex devuelva una afirmación de cierre: “Muchas gracias. Se ha realizado el pedido de su pizza de quesos”.

No todos los mensajes de Amazon Lex requieren una respuesta del usuario. Por ejemplo, las afirmaciones de cierre no requieren respuesta. Algunos mensajes solo requieren una respuesta afirmativa o negativa. Además de message, Amazon Lex proporciona contexto adicional sobre el mensaje de la respuesta para que pueda mejorar el comportamiento del cliente, como mostrar la interfaz de usuario adecuada al cliente. Se trata de los campos slotToElicit, dialogState, intentName y slots en la respuesta. Considere los siguientes ejemplos:

  • Si el mensaje tiene como objetivo obtener datos de ranuras, Amazon Lex devuelve la siguiente información de contexto:

    • dialogStateestablecido en ElicitSlot

    • intentName establecido en el nombre de la intención en el contexto actual

    • slotToElicit establecido en el nombre de la ranura para el que message obtiene información

    • slots establecido en una asignación de ranuras configurada para la intención con sus valores conocidos

  • Si el mensaje es una solicitud de confirmación, dialogState se establece en ConfirmIntent y SlotToElicit se establece en nulo.

  • Si el mensaje es una solicitud de aclaración (configurada para la intención) que indica que el usuario no entiende la intención, dialogState se establece en ElicitIntent y slotToElicit se establece en nulo.

Además, Amazon Lex también devuelve los valores sessionAttributes específicos de la aplicación. Para obtener más información, consulte Administración del contexto de la conversación.

Sintaxis de la solicitud

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 de solicitud del URI

La solicitud utiliza los siguientes parámetros URI.

botAlias

El alias del bot de Amazon Lex.

Obligatorio: sí

botName

El nombre del bot de Amazon Lex.

Obligatorio: sí

userId

El ID del usuario de la aplicación cliente. Amazon Lex lo utiliza para identificar una conversación del usuario con el bot. En tiempo de ejecución, cada solicitud debe contener el campo userID.

Para decidir qué ID de usuario utilizará en la aplicación, tenga en cuenta lo siguiente.

  • El campo userID no debe contener información de identificación personal del usuario como, por ejemplo, nombre, número de identificación personal u otro tipo de datos personales del usuario final.

  • Si desea que un usuario inicie una conversación en un dispositivo y esta continúe en otro dispositivo, utilice un identificador específico del usuario.

  • Si desea que el mismo usuario pueda mantener dos conversaciones independientes en dos dispositivos distintos, elija un identificador específico del dispositivo.

  • Un usuario no puede mantener dos conversaciones independientes con dos versiones distintas del mismo bot. Por ejemplo, un usuario no puede mantener una conversación con las versiones PROD y BETA del mismo bot. Si piensa que un usuario podría necesitar dos versiones distintas para mantener conversaciones (por ejemplo, para realizar pruebas), incluya el alias del bot en el ID del usuario para separar las dos conversaciones.

Limitaciones de longitud: longitud mínima de 2. La longitud máxima es de 100 caracteres.

Patrón: [0-9a-zA-Z._:-]+

Obligatorio: sí

Cuerpo de la solicitud

La solicitud acepta los siguientes datos en formato JSON.

activeContexts

Una lista de los contextos activos para la solicitud. Un contexto se puede activar cuando se cumple una intención anterior o al incluir el contexto en la solicitud,

Si no especifica una lista de contextos, Amazon Lex utilizará la lista de contextos actual en la sesión. Si especifica una lista vacía, se borran todos los contextos de la sesión.

Tipo: matriz de objetos ActiveContext

Miembros de la matriz: número mínimo de 0 artículos. Número máximo de 20 artículos.

Obligatorio: no

inputText

El texto que ha introducido el usuario (Amazon Lex interpreta este texto).

Cuando utiliza la CLI de AWS, no puede pasar una URL en el parámetro --input-text. En su lugar, pase la URL con el parámetro --cli-input-json.

Tipo: string

Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 1024 caracteres.

Obligatorio: sí

requestAttributes

La información específica de la solicitud que se pasa entre Amazon Lex y una aplicación cliente.

El espacio de nombres x-amz-lex: está reservado para atributos especiales. No cree atributos de solicitud con el prefijo x-amz-lex:.

Para obtener más información, consulte Configuración de atributos de solicitud.

Tipo: mapa de cadena a cadena

Obligatorio: no

sessionAttributes

La información específica de la aplicación que se pasa entre Amazon Lex y una aplicación cliente.

Para obtener más información, consulte Configuración de atributos de sesión.

Tipo: mapa de cadena a cadena

Obligatorio: no

Sintaxis de la respuesta

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 respuesta

Si la acción se realiza correctamente, el servicio devuelve una respuesta HTTP 200.

El servicio devuelve los datos siguientes en formato JSON.

activeContexts

Una lista de los contextos activos para la sesión. Se puede establecer un contexto cuando se cumple una intención o mediante una llamada a la operación PostContent, PostText o PutSession.

Puede utilizar un contexto para controlar las intenciones que pueden acompañar una intención o para modificar la operación de la aplicación.

Tipo: matriz de objetos ActiveContext

Miembros de la matriz: número mínimo de 0 artículos. Número máximo de 20 artículos.

alternativeIntents

Entre una y cuatro intenciones alternativas que pueden ser aplicables a la intención del usuario.

Cada alternativa incluye una puntuación que indica la confianza de Amazon Lex en que la intención coincide con la intención del usuario. Las intenciones se ordenan por puntuación de confianza.

Tipo: matriz de objetos PredictedIntent

Miembros de la matriz: número máximo de 4 elementos.

botVersion

La versión del bot que ha respondido a la conversación. Puede utilizar esta información para determinar si una versión de un bot rinde mejor que otra versión.

Tipo: string

Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 64.

Patrón: [0-9]+|\$LATEST

dialogState

Identifica el estado actual de la interacción del usuario. Amazon Lex devuelve uno de los siguientes valores como dialogState. Si lo desea, el cliente puede utilizar esta información para personalizar la interfaz de usuario.

  • ElicitIntent: Amazon Lex quiere obtener la intención del usuario.

    Por ejemplo, un usuario puede expresar una intención (“Quiero pedir una pizza”). Si Amazon Lex no puede deducir la intención del usuario a partir de esta expresión, devolverá este dialogState.

  • ConfirmIntent: Amazon Lex espera “sí” o “no” como respuesta.

    Por ejemplo, Amazon Lex solicita la confirmación del usuario antes de cumplir con una intención.

    El usuario, en lugar de responder “sí” o “no”, puede responder con información adicional. Por ejemplo, “sí, pero quiero una pizza con masa gruesa” o “no, quiero pedir bebida”. Amazon Lex puede procesar dicha información adicional (en estos ejemplos, actualizar el valor de la ranura tipo masa o cambiar la intención de OrderPizza a OrderDrink).

  • ElicitSlot: Amazon Lex espera el valor de una ranura para la intención actual.

    Por ejemplo, supongamos que, en la respuesta, Amazon Lex envía el mensaje “¿De qué tamaño quiere la pizza?”. Un usuario puede responder con el valor de ranura (p. ej., “mediana”). El usuario también puede proporcionar información adicional en la respuesta (p. ej., “una pizza mediana con masa gruesa”). Amazon Lex puede procesar esta información adicional de forma adecuada.

  • Fulfilled: indica que la función de Lambda configurada para la intención ha cumplido con la intención correctamente.

  • ReadyForFulfillment: indica que el cliente tiene que cumplir la intención.

  • Failed: indica que la conversación con el usuario ha fallado.

    Esto puede ocurrir porque el usuario no ha proporcionado una respuesta adecuada a las preguntas del servicio (puede configurar el número de veces que Amazon Lex puede solicitar cierta información al usuario), porque la función de Lambda no ha podido cumplir con la intención o por otros motivos.

Tipo: cadena

Valores válidos: ElicitIntent | ConfirmIntent | ElicitSlot | Fulfilled | ReadyForFulfillment | Failed

intentName

La intención del usuario actual de la que Amazon Lex está pendiente.

Tipo: cadena

message

El mensaje que se va a transmitir al usuario. El mensaje puede provenir de la configuración del bot o de una función de Lambda.

Si la intención no está configurada con una función de Lambda o si la función de Lambda ha devuelto Delegate como dialogAction.type en su respuesta, Amazon Lex decide el siguiente procedimiento y selecciona un mensaje adecuado de la configuración del bot en función del contexto de la interacción actual. Por ejemplo, si Amazon Lex no puede entender las entradas del usuario, utiliza una pregunta aclaratoria.

Al crear una intención, puede asignar mensajes a grupos. Si los mensajes están asignados a grupos, Amazon Lex devuelve un mensaje de cada grupo en la respuesta. El campo del mensaje es una cadena JSON con secuencias de escape que contiene los mensajes. Para obtener más información acerca de la estructura de la cadena JSON devuelta, consulte Formatos de mensajes admitidos.

Si la función de Lambda devuelve un mensaje, Amazon Lex lo envía al cliente en su respuesta.

Tipo: string

Limitaciones de longitud: longitud mínima de 1. La longitud máxima es de 1024 caracteres.

messageFormat

El formato del mensaje de respuesta. Uno de los valores siguientes:

  • PlainText: el mensaje contiene texto UTF-8 sin formato.

  • CustomPayload: el mensaje tiene el formato personalizado que define la función de Lambda.

  • SSML: el mensaje contiene texto con formato para salida de voz.

  • Composite: el mensaje contiene un objeto JSON con secuencias de escape que contiene uno o más mensajes de los grupos a los que se asignaron cuando se creó la intención.

Tipo: cadena

Valores válidos: PlainText | CustomPayload | SSML | Composite

nluIntentConfidence

Proporciona una puntuación que indica el grado de confianza de Amazon Lex en lo que respecta a la capacidad de una intención devuelta para satisfacer las expectativas del usuario. La puntuación es un valor entre 0,0 y 1,0. Para obtener más información, consulte Puntuaciones de confianza.

La puntuación es relativa, no absoluta. La puntuación puede cambiar en función de las mejoras de Amazon Lex.

Tipo: objeto IntentConfidence

responseCard

Representa las opciones con las que el usuario puede responder a la pregunta actual. La tarjeta de respuesta puede proceder de la configuración del bot (en la consola de Amazon Lex, seleccione el botón de configuración situado junto a una ranura) o de un enlace de código (función de Lambda).

Tipo: objeto ResponseCard

sentimentResponse

La opinión expresada en un enunciado.

Cuando el bot está configurado para enviar enunciados a Amazon Comprehend con el fin de analizar opiniones, este campo contiene el resultado del análisis.

Tipo: objeto SentimentResponse

sessionAttributes

Una asignación de pares clave-valor que representa la información de contexto específica de la sesión.

Tipo: mapa de cadena a cadena

sessionId

Un identificador único de la sesión.

Tipo: cadena

slots

Las ranuras de intención que Amazon Lex ha detectado a partir de la entrada del usuario en la conversación.

Amazon Lex crea una lista de resoluciones que contiene posibles valores para una ranura. El valor que devuelve viene determinado por el valor valueSelectionStrategy seleccionado cuando se creó o actualizó el tipo de ranura. Si valueSelectionStrategy se establece en ORIGINAL_VALUE, se devuelve el valor que proporciona el usuario, en caso de que el valor del usuario sea similar a los valores de la ranura. Si valueSelectionStrategy se establece en TOP_RESOLUTION, Amazon Lex devuelve el primer valor de la lista de resoluciones o, si no hay ninguna lista de resoluciones, un valor nulo. Si no especifica un valor valueSelectionStrategy, el valor predeterminado es ORIGINAL_VALUE.

Tipo: mapa de cadena a cadena

slotToElicit

Si el valor dialogState es ElicitSlot, devuelve el nombre de la ranura para que Amazon Lex quiere obtener un valor.

Tipo: cadena

Errores

BadGatewayException

El bot de Amazon Lex aún se está compilando o uno de los servicios dependientes (Amazon Polly o AWS Lambda) ha fallado debido a un error de servicio interno.

Código de estado HTTP: 502

BadRequestException

Se ha producido un error al validar la solicitud, no hay mensajes útiles en el contexto o la compilación del bot ha fallado, está en curso o contiene cambios sin compilar.

Código de estado HTTP: 400

ConflictException

Dos clientes utilizan la misma cuenta de AWS, el mismo bot de Amazon Lex y el mismo ID de usuario.

Código de estado HTTP: 409

DependencyFailedException

Una de las dependencias, como AWS Lambda o Amazon Polly, ha generado una excepción. Por ejemplo:

  • Si Amazon Lex no tiene permisos suficientes para llamar a una función de Lambda

  • Si una función de Lambda tarda más de 30 segundos en ejecutarse

  • Si una función de Lambda de cumplimiento devuelve una acción de diálogo Delegate sin eliminar ningún valor de ranura.

Código de estado HTTP: 424

InternalFailureException

Error de servicio interno. Vuelva a intentar la llamada.

Código de estado HTTP: 500

LimitExceededException

Se ha superado un límite.

Código de estado HTTP: 429

LoopDetectedException

Esta excepción no se utiliza.

Código de estado HTTP: 508

NotFoundException

No se ha encontrado el recurso (como el bot o un alias de Amazon Lex) al que se hace referencia.

Código de estado HTTP: 404

Véase también

Para obtener más información sobre el uso de esta API en uno de los AWS SDK específicos del idioma, consulte lo siguiente: