

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.

# Adición de intenciones
<a name="add-intents"></a>

Las intenciones son los objetivos que los usuarios quieren conseguir, como pedir flores o reservar un hotel. Su bot debe tener, como mínimo, una intención.

De forma predeterminada, todos los bots contienen una única intención integrada, la intención alternativa. Esta intención se utiliza cuando Amazon Lex V2 no reconoce ninguna otra intención. Por ejemplo, si un usuario dice «Quiero pedir flores» a una intención de reserva de hotel, se activa la intención alternativa.

**Agregar una intención**

1. Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Lex en [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. En la lista de bots, seleccione el bot al que quiere añadir la intención y, en **Añadir idiomas**, seleccione **Ver idiomas**.

1. Seleccione el idioma al que quiere añadir la intención y, a continuación, seleccione **Intenciones.**

1. Seleccione **Agregar intención**, dele un nombre a la intención y, a continuación, seleccione **Agregar**.

1. En el editor de intenciones, añada los detalles de su intención.
   + **Flujo de conversación**: use el diagrama de flujo de conversación para ver cómo se vería un diálogo con su bot. Puede elegir diferentes secciones de la conversación para ir a esa sección del editor de intenciones.
   + **Detalles de la intención**: dele un nombre y una descripción a la intención para ayudar a identificar el propósito de la intención. También puede ver el identificador único que Amazon Lex V2 asignó a la intención.
   + **Contextos**: defina los contextos de entrada y salida de la intención. Un contexto es una variable de estado asociada a una intención. Un contexto de salida se establece cuando se cumple una intención. Una intención con un contexto de entrada solo se puede reconocer si el contexto está activo. Siempre se puede reconocer una intención sin contextos de entrada.
   + **Ejemplos de enunciados**: debe proporcionar 10 o más frases que espere que sus usuarios utilicen para iniciar una intención. Amazon Lex V2 generaliza a partir de estas frases para reconocer que el usuario quiere iniciar la intención.
   + **Respuesta inicial**: el mensaje inicial que se envía al usuario después de invocar la intención. Puede proporcionar respuestas, inicializar valores y definir el siguiente paso que debe dar Amazon Lex V2 para responder al usuario al principio de la intención.
   + **Slots**: defina los slots, o los parámetros, necesarios para cumplir la intención. Cada slot tiene un tipo que define los valores que se pueden introducir en el slot. Puede elegir entre sus tipos de slot personalizados o puede elegir un tipo de slot integrado.
   + **Confirmación**: estas indicaciones y respuestas se utilizan para confirmar o rechazar el cumplimiento de la intención. El mensaje de confirmación pide al usuario que revise los valores del slot. Por ejemplo, «He reservado una habitación de hotel para el viernes. ¿Es correcto?». La respuesta negativa se envía al usuario cuando rechaza la confirmación. Puede proporcionar respuestas, establecer valores y definir el siguiente paso que realizará Amazon Lex V2 correspondiente a una respuesta de confirmación o rechazo del usuario.
   + **Cumplimiento**: respuesta que se envía al usuario durante el transcurso del cumplimiento. Puede configurar las actualizaciones del progreso de cumplimiento al inicio de esta y periódicamente mientras esté en curso. Por ejemplo, «Estoy cambiando la contraseña, esto puede tardar unos minutos» y «Todavía estoy trabajando en tu solicitud». Las actualizaciones de cumplimiento solo se pueden usar para conversaciones en streaming. También puede configurar un mensaje de confirmación, de error y de tiempo de espera agotado posterior al cumplimiento. Puede enviar mensajes posteriores al cumplimiento tanto para conversaciones en streaming como conversaciones habituales. Por ejemplo, si el cumplimiento se realiza correctamente, puede enviar el mensaje «He cambiado tu contraseña». Si el cumplimiento no se realiza correctamente, puede enviar una respuesta con más información, como «No he podido cambiar tu contraseña, ponte en contacto con el servicio de asistencia para obtener ayuda». Si el proceso de cumplimiento supera el tiempo de espera configurado, puede enviar un mensaje informando al usuario, por ejemplo: «Nuestros servidores están muy ocupados en este momento. Intenta volver a realizar la solicitud más tarde». Puede proporcionar respuestas, establecer valores y definir el siguiente paso que debe dar Amazon Lex V2 para responder al usuario. 
   + **Respuestas finales**: respuesta que se envía al usuario una vez que se ha cumplido la intención y se han reproducido todos los demás mensajes. Por ejemplo, un agradecimiento por reservar una habitación de hotel. O bien, puede hacer que el usuario inicie una intención diferente, como: «Gracias por reservar una habitación. ¿Desea reservar un coche de alquiler?». Puede proporcionar respuestas y configurar las próximas acciones de seguimiento después de que se cumpla la intención y se responda con la respuesta final.
   + **Enlaces de códigos**: indican si está utilizando una función de AWS Lambda para inicializar la intención y validar las entradas del usuario. La función de Lambda se especifica en el alias que se utiliza para ejecutar el bot.

1. Seleccione **Guardar intención** para guardar la intención.

**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

## Configurar las indicaciones en un orden específico
<a name="configuring-prompts"></a>

Puede configurar el bot para que reproduzca los mensajes en un orden predefinido marcando la casilla **Reproducir los mensajes en orden**. De lo contrario, el bot reproduce el mensaje y las variaciones en orden aleatorio. 

Las indicaciones ordenadas permiten que el mensaje y las variantes de un grupo de mensajes se reproduzcan en orden entre reintentos. Puede utilizar una reformulación alternativa de un mensaje cuando el usuario dé una respuesta no válida a la solicitud o para confirmar la intención. Se pueden configurar hasta dos variantes del mensaje original en cada slot. Puede elegir si quiere reproducir los mensajes en orden o de forma aleatoria.

El mensaje ordenado admite los cuatro tipos de mensajes: texto, respuesta de carga personalizada, SSML y grupo de tarjetas. Las respuestas se ordenan dentro del mismo grupo de mensajes. Los distintos grupos de mensajes son independientes.

**Topics**
+ [Configurar las indicaciones en un orden específico](#configuring-prompts)
+ [Enunciados de muestra](sample-utterances.md)
+ [Estructura de intenciones](intent-structure.md)
+ [Crear rutas de conversación](building-paths.md)
+ [Uso del generador visual de conversaciones](visual-conversation-builder.md)
+ [Intenciones integradas](built-in-intents.md)

# Enunciados de muestra
<a name="sample-utterances"></a>

Cree ejemplos de enunciados que son variaciones de frases que espera que los usuarios utilicen para iniciar una intención. Por ejemplo, para la intención **BookFlight**, puede incluir enunciados como los siguientes:

1. Quiero reservar un vuelo

1. ayúdame a conseguir un vuelo.

1. billetes de avión, ¡por favor\$1

1. vuelo desde \$1*DepartureCity*\$1 a \$1*DestinationCity*\$1

Debería proporcionar 10 o más enunciados de muestra. Proporcione ejemplos que representen una amplia gama de estructuras de oraciones y palabras que los usuarios puedan pronunciar. Considere también las oraciones incompletas, como las de los ejemplos 3 y 4 anteriores. También puede usar slots que haya definido para la intención en un ejemplo de enunciado poniendo el nombre del slot entre corchetes, como en \$1*DepartureCity*\$1 en el ejemplo 4. Si incluye nombres de slots en un enunciado de muestra, Amazon Lex V2 rellena los slots de la intención con los valores que el usuario proporciona en el enunciado.

Una variedad de ejemplos de enunciados ayuda a Amazon Lex V2 a generalizar para reconocer de manera efectiva que el usuario quiere iniciar la intención.

Puede añadir ejemplos de enunciados en el editor de intenciones, en el generador visual de conversaciones o mediante las operaciones de la API [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) o [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html). También puede generar enunciados de ejemplo automáticamente aprovechando las capacidades de la IA generativa de Amazon Bedrock. Para obtener más información, consulte [Uso de la generación de enunciados para generar ejemplos de enunciados para el reconocimiento de intenciones](utterance-generation.md).

**Use el editor de intenciones o el generador visual de conversaciones**

1. En el editor de intenciones, navegue hasta la sección **Ejemplos de enunciados**. En el generador visual de conversaciones, busque la sección **Ejemplos de enunciados** en el bloque **Inicio**.

1. En el cuadro con el texto transparente **I want to book a flight**, escriba un ejemplo de enunciado. Seleccione **Añadir enunciado** para añadir el enunciado.

1. Vea los ejemplos de enunciados que ha agregado en el modo **Vista previa** o **Texto sin formato**. En **Texto sin formato**, cada línea es un enunciado independiente. En el **modo Vista previa**, coloque el cursor sobre un enunciado para ver las siguientes opciones:
   + Seleccione el cuadro de texto para editar el enunciado.
   + Seleccione el botón x situado a la derecha del cuadro de texto para eliminar el enunciado.
   + Arrastre el botón situado a la izquierda del cuadro de texto para cambiar el orden de los ejemplos de enunciados.

1. Use la barra de búsqueda situada en la parte superior para buscar entre los ejemplos de enunciados y el menú desplegable situado junto a ella para ordenarlos por el orden en que los añadió o por orden alfabético.

**Usar una operación de la API**

1. Cree una nueva intención con la operación [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) o actualice una existente con la operación [UpdateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateIntent.html).

1. La solicitud de API incluye un campo `sampleUtterances` que se asigna a una matriz de objetos [SampleUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SampleUtterance.html).

1. Para cada enunciado de ejemplo que desee añadir, añada un objeto `SampleUtterance` a la matriz. Añada el enunciado de muestra como valor del campo `utterance`.

1. Para editar y eliminar ejemplos de enunciados, envíe una solicitud de `UpdateIntent`. La lista de enunciados que proporciona en el campo `sampleUtterances` reemplaza a los enunciados existentes.
**importante**  
Cualquier campo que deje en blanco en la solicitud de `UpdateIntent` provocará que se eliminen las configuraciones existentes en su intención. Utilice la operación [DescribeIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DescribeIntent.html) para devolver la configuración del bot y copie en la solicitud de `UpdateIntent` las configuraciones que no desee que se eliminen.

# Estructura de intenciones
<a name="intent-structure"></a>

Las intenciones son los objetivos que los usuarios quieren conseguir, como pedir flores o reservar un hotel. Su bot debe tener, como mínimo, una intención. Una intención consta de los siguientes componentes
+ **Respuesta inicial**: el mensaje inicial que se envía al usuario después de invocar la intención. Puede proporcionar respuestas, inicializar valores y definir el siguiente paso que debe dar su bot para responder al usuario al principio de la intención.
+ **Ranuras**: los parámetros necesarios para cumplir una intención. Cada slot tiene un tipo que define los valores que se pueden introducir en el slot. Puede elegir entre sus tipos de ranura personalizados o puede elegir un tipo de ranura integrado.
+ **Confirmación**: una vez finalizada la conversación con el usuario y rellenados los valores de las ranuras correspondientes a la intención, puede configurar un mensaje de confirmación para preguntar al usuario si los valores de las ranuras son correctos.
+ **Cumplimiento**: respuesta que se envía al usuario durante el transcurso del cumplimiento. Puede configurar las actualizaciones del progreso de cumplimiento al inicio de esta y periódicamente mientras esté en curso. También puede configurar un mensaje de confirmación, de error y de tiempo de espera agotado posterior al cumplimiento.
+ **Respuesta de cierre**: la respuesta de cierre se envía al usuario una vez que se ha cumplido su intención. Puede usar la respuesta de cierre para finalizar la conversación o para indicarle al usuario que puede continuar con otra intención.

**Topics**
+ [Respuesta inicial](intent-initial.md)
+ [Ranuras](intent-slots.md)
+ [Confirmación](intent-confirm.md)
+ [Cumplimiento](intent-fulfillment.md)
+ [Respuesta de cierre](intent-closing.md)

# Respuesta inicial
<a name="intent-initial"></a>

La respuesta inicial se envía al usuario después de que Amazon Lex V2 determine la intención y antes de que comience a obtener valores de slots. Puede usar esta respuesta para informar al usuario de la intención que ha reconocido y prepararlo para que la información que recopile pueda cumplir con esa intención.

Por ejemplo, si la intención es programar una cita de servicio para un automóvil, la respuesta inicial podría ser:


|  | 
| --- |
| Puedo ayudarte a programar una cita. Deberá proporcionar la marca, el modelo y el año del automóvil. | 

No es obligatorio tener un mensaje de respuesta inicial. Si no lo proporciona, Amazon Lex V2 seguirá con el siguiente paso de la respuesta inicial.

Puede configurar las siguientes opciones en la respuesta inicial: 
+ **Configurar el siguiente paso**: puede indicar el siguiente paso de la conversación, como pasar a una acción de diálogo específica, seleccionar un slot concreto o pasar a una intención diferente. Para obtener más información, consulte [Configurar los siguientes pasos de la conversación](paths-nextstep.md).
+ **Establecer valores**: puede establecer valores para los slots y los atributos de sesión. Para obtener más información, consulte [Establecer valores durante la conversación](paths-setting-values.md)
+ **Añadir ramificación condicional**: puede aplicar condiciones después de reproducir la respuesta inicial. Cuando una condición se evalúa como «verdadero», se llevan a cabo las acciones que usted defina. Para obtener más información, consulte [Añadir condiciones a las conversaciones ramificadas](paths-branching.md).
+ **Ejecutar enlace de código de diálogo**: puede definir un enlace de código Lambda para inicializar los datos y ejecutar la lógica empresarial. Para obtener más información, consulte [Invocar el enlace de código de diálogo](paths-code-hook.md). Si la opción de ejecutar la función de Lambda está habilitada para la intención, el enlace de código del cuadro de diálogo se ejecuta de forma predeterminada. Puede desactivar el enlace de código del cuadro de diálogo pulsando el botón **Activo**.

En ausencia de una condición o de un siguiente paso explícito, Amazon Lex V2 pasa a la siguiente ranura en orden de prioridad.

![\[Las opciones avanzadas para la respuesta inicial a la solicitud de un usuario.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/response-initial.png)


**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Ranuras
<a name="intent-slots"></a>

Los slots son valores que proporciona el usuario para cumplir con la intención. Existen dos tipos de slots:
+ **Tipo de slot integrado**: puede utilizar los tipos de slot integrados para capturar valores estándar como el número, el nombre y la ciudad. Para obtener una lista de los tipos compatibles, consulte [Tipos de slot integrados](built-in-slots.md).
+ **Tipo de slot personalizado**: puede utilizar tipos de slot personalizados para obtener valores personalizados específicos de la intención. Por ejemplo, puede utilizar un tipo de slot personalizado para obtener el tipo de cuenta como «Cuenta corriente» o «Ahorros». Para obtener más información, consulte [Tipos de ranura personalizados](custom-slot-types.md).

Para definir un slot en una intención, debe configurar lo siguiente:
+ **Información sobre el slot**: este campo contiene un nombre y una descripción opcional para el slot. Por ejemplo, puede proporcionar el nombre de la ranura como «AccountNumber» para capturar los números de cuenta. Si el slot es obligatorio como parte del flujo de la conversación para cumplir con la intención, debe marcarse como obligatorio.
+ **Tipo de slot**: un tipo de slot define la lista de valores que puede aceptar una slot. Puede crear un tipo de slot personalizado o utilizar un tipo de slot predefinido.
+ **Solicitud de slot**: una solicitud de slot es una pregunta que se hace al usuario para recopilar información. Puede configurar el número de reintentos que se utilizan para recopilar información y la variación de la solicitud utilizada para cada reintento. También puede habilitar la invocación de una función de Lambda después de cada reintento para procesar la entrada recopilada e intentar convertirla en una entrada válida.
+ **Esperar y continuar (opcional)**: al habilitar este comportamiento, los usuarios pueden decir frases como «espera un segundo» para que el bot espere a que encuentren la información y la proporcionen. Esto solo está habilitado para la transmisión de conversaciones. Para obtener más información, consulte [Cómo permitir que el bot Amazon Lex V2 espere a que el usuario proporcione más información durante una pausa](wait-and-continue.md).
+ **Respuestas de captura de slots**: puede configurar una respuesta correcta y una respuesta de error en función del resultado de capturar el valor del slot a partir de las entradas del usuario.
+ **Ramificación condicional**: puede aplicar condiciones después de reproducir la respuesta inicial. Cuando una condición se evalúa como «verdadero», se llevan a cabo las acciones que usted defina. Para obtener más información, consulte [Añadir condiciones a las conversaciones ramificadas](paths-branching.md).
+ **Enlace de código de diálogo**: también puede utilizar un enlace de código Lambda para validar los valores de los slots y ejecutar la lógica empresarial. Para obtener más información, consulte [Invocar el enlace de código de diálogo](paths-code-hook.md).
+ **Tipo de entrada de usuario**: puede configurar el tipo de entrada para que el bot pueda aceptar una modalidad específica. De forma predeterminada, se aceptan las modalidades de audio y DTMF. Puede configurarlo de forma selectiva como solo audio o solo DTMF.
+ **Tiempos de espera y duraciones de entrada de audio**: puede configurar los tiempos de espera de audio, incluidos los tiempos de espera de voz y tiempo de espera de silencio. Además, puede establecer la duración máxima del audio.
+ **Tiempo de espera de entrada DTMF, caracteres y longitudes**: puede configurar el tiempo de espera de DTMF junto con el carácter de eliminación y el carácter final. Además, puede establecer la duración máxima del DTMF. 
+ **Longitud del texto**: puede establecer la longitud máxima para la modalidad del texto.

Una vez reproducido el mensaje del slot, el usuario proporciona el valor del slot como entrada. Si Amazon Lex V2 no entiende el valor de un slot proporcionado por el usuario, volverá a intentar obtener el slot hasta que comprenda un valor o hasta que supere el número máximo de reintentos que configuró para el slot. Con la configuración avanzada de reintentos, puede configurar los tiempos de espera, restringir el tipo de entrada y activar o desactivar la interrupción durante el mensaje inicial y los reintentos. Tras cada intento de captura de la entrada, Amazon Lex V2 puede llamar a la función de Lambda configurada para el bot con una etiqueta de invocación incluida para los reintentos. Puede usar la función de Lambda, por ejemplo, para aplicar su lógica empresarial e intentar resolverla en un valor válido. Esta función de Lambda se puede activar en las **Opciones avanzadas** para las indicaciones de slots.

![\[Configure las indicaciones de slots para que su bot obtenga información.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/response-slot-prompt.png)


Puede definir las respuestas que el bot debe enviar al usuario una vez introducido el valor del slot o si se supera el número máximo de reintentos. Por ejemplo, si se trata de un bot para programar el servicio de un coche, puede enviar un mensaje al usuario cuando introduzca el número de identificación del vehículo (VIN):


|  | 
| --- |
| Gracias por proporcionarnos el número VIN de tu coche. Ahora procederé a programar una cita. | 

Puede crear dos respuestas:
+ **Respuesta correcta**: se envía cuando Amazon Lex V2 entiende el valor de un slot.
+ **Respuesta de error**: se envía cuando Amazon Lex V2 no entiende el valor de un slot del usuario tras el número máximo de reintentos.

Puede establecer valores, configurar los siguientes pasos y aplicar las condiciones correspondientes a cada respuesta para diseñar el flujo de la conversación.

En ausencia de una condición o de un siguiente paso explícito, Amazon Lex V2 pasa al siguiente slot en orden de prioridad.

![\[Las opciones avanzadas para las respuestas de slots.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/response-slot.png)


Puede utilizar una función de Lambda para validar un valor de slot que haya introducido un usuario y determinar cuál debe ser la siguiente acción. Por ejemplo, puede usar la función de validación para asegurarse de que el valor introducido se encuentra en el rango correcto o que tiene el formato correcto. Para activar la función de Lambda, seleccione la casilla de verificación **Invocar la función de Lambda** y el botón **Activo** en la sección **Enlace del código de diálogo**. Puede especificar una etiqueta de invocación para el enlace de código del diálogo. Esta etiqueta de invocación se puede utilizar en la función de Lambda para escribir la lógica empresarial correspondiente a la obtención de slots.

![\[Las opciones para el enlace del código de diálogo.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/response-dialog-code-hook.png)


Los slots que no son necesarios para la intención no forman parte del flujo principal de la conversación. Sin embargo, si el enunciado de un usuario contiene un valor que su bot identifica como correspondiente a un slot opcional, puede rellenar el slot con ese valor. Por ejemplo, si configura un bot de inteligencia empresarial para que tenga un slot `City` opcional y el enunciado del usuario **What is the sales for April in San Diego?**, el bot rellenará el slot opcional con **San Diego**. Puede configurar la lógica empresarial para que utilice el valor de slot opcional, si está presente.

Los slots que no sean necesarios para la intención no se pueden obtener mediante los siguientes pasos. Estos pasos solo se pueden completar durante la obtención de intenciones (como en el ejemplo anterior) o se pueden obtener configurando el estado del diálogo en la función de Lambda. Si el slot se obtiene mediante la función de Lambda, debe usar la función de Lambda para decidir el siguiente paso de la conversación una vez que se complete la obtención del slot. Para permitir el siguiente paso a la hora de compilar el bot, debe marcar el slot como obligatorio para esa intención.

**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

En los siguientes temas, se describe cómo configurar un bot para que vuelva a obtener un valor de slot que ya se ha ocupado y cómo crear un slot compuesto por varios valores:

**Topics**
+ [Obtención de slots de nuevo](reelicit-slots.md)
+ [Uso de valores múltiples en un slot](multi-valued-slots.md)

# Obtención de slots de nuevo
<a name="reelicit-slots"></a>

 Puede configurar su bot para que vuelva a obtener un slot que ya se ha ocupado fijando el valor de ese slot en **null** y configurando el siguiente paso de la conversación para volver a obtener este slot. Por ejemplo, tal vez quiera volver a obtener un slot después de que su cliente rechace la confirmación del mismo basándose en información adicional, como en la siguiente conversación: 

![\[Una conversación para conocer las preferencias de carne de un cliente para un pedido de comida.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/slots/order-food.png)


Puede configurar un bucle a partir de la respuesta de confirmación para volver a obtener el slot con el editor de intenciones o con el [Uso del generador visual de conversaciones](visual-conversation-builder.md).

**nota**  
Puede retroceder para volver a obtener un slot en cualquier momento de la conversación, siempre que haya establecido ese valor de antemano en **null**.

**Reproducir el ejemplo anterior con el editor de intenciones**

1. En la sección **Confirmación** del editor de intenciones, seleccione la flecha derecha situada junto a **Instrucciones para confirmar la intención** para expandir la sección.

1. Seleccione **Opciones avanzadas** en la parte inferior.

1. En la sección **Rechazar respuesta**, seleccione la flecha derecha situada junto a **Establecer valores** para expandir la sección. Complete esta sección con los siguientes pasos, como se muestra en la siguiente imagen:

   1. Establezca el valor del slot que desea volver a obtener en **null**. En este ejemplo, queremos volver a obtener el slot `Meat`, por lo que introducimos **\$1Meat\$1 = null** en la sección de **Valores del slot**.

   1. En el menú desplegable de **Siguiente paso de la conversación**, seleccione **Obtener un slot**.

   1. Aparecerá una sección de **Slot**. En el menú desplegable que hay debajo, seleccione el slot que quiere volver a obtener.

   1. Seleccione **Opciones de actualización** para confirmar los cambios.  
![\[Una conversación para conocer las preferencias de carne de un cliente para un pedido de comida.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/slots/decline-food.png)

**Reproducir el ejemplo anterior con el generador visual de conversaciones**

1. Cree una conexión desde el puerto **No** del bloque de **Confirmación** hasta el puerto entrante del bloque **Obtener valor de slot: carne**.  
![\[Una conexión entre la declinación del mensaje de confirmación y el bloque de elicitación de slot Carne.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/slots/vcb-reelicit-slot-loop.png)

1. Seleccione el icono de **Editar** en la esquina superior derecha del bloque de **Confirmación**.  
![\[Icono de Editar en la esquina superior derecha del bloque de Confirmación.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/slots/vcb-reelicit-slot-confirmation-edit.png)

1. Seleccione el icono con forma de engranaje situado junto a la respuesta del bot en la sección **Rechazar respuesta**.  
![\[Icono con forma junto a la respuesta del bot en la sección Rechazar respuesta\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/slots/vcb-reelicit-slot-confirmation.png)

1. En la sección **Establecer valores**, añada «\$1Meat\$1 = null» en el cuadro de **Valores del slot**.  
![\[Defina el valor de slot que se volverá a obtener como nulo en el cuadro de valores del slot de la sección de valores establecidos.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/slots/vcb-reelicit-slot-set-slot-null.png)

1. Seleccione **Guardar intención**.

# Uso de valores múltiples en un slot
<a name="multi-valued-slots"></a>

**nota**  
Los slots de valores múltiples solo se admiten en inglés (EE. UU.).

Para algunas intenciones, es posible que desee capturar varios valores para un solo slot. Por ejemplo, un bot de pedidos de pizza podría tener una intención con el siguiente enunciado:

```
I want a pizza with {toppings}
```

La intención espera que el slot `{toppings}` contenga una lista de los ingredientes que el cliente quiere incluir en su pizza, por ejemplo, «pepperoni y piña».

Para configurar un slot de modo que capture varios valores, debe establecer el campo `allowMultipleValues` del slot en «verdadero». Puede configurar el campo mediante la consola o con la [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html)operación [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html)o.

Solo puede marcar los slots con tipos de slots personalizados como slots con valores múltiples.

Para una ranura con varios valores, Amazon Lex V2 devuelve una lista de valores de ranura en respuesta a la [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html)operación [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html)o. La siguiente es la información sobre las ranuras que devuelve el bot para la expresión «Quiero una pizza con pepperoni y piña». OrderPizza 

```
    "slots": {
        "toppings": {
            "shape": "List",
            "value": {
                "interpretedValue": "pepperoni and pineapple",
                "originalValue": "pepperoni and pineapple",
                "resolvedValues": [
                    "pepperoni and pineapple"
                ]
            },
            "values": [
                {
                    "shape": "Scalar",
                    "value": {
                        "interpretedValue": "pepperoni",
                        "originalValue": "pepperoni",
                        "resolvedValues": [
                            "pepperoni"
                        ]
                    }
                },
                {
                    "shape": "Scalar",
                    "value:": {
                        "interpretedValue": "pineapple",
                        "originalValue": "pineapple",
                        "resolvedValues": [
                            "pineapple"
                        ]
                    }
                }
            ]
        }
    }
```

Los slots con varios valores siempre devuelven una lista de valores. Cuando el enunciado solo contiene un valor, la lista de valores devuelta solo contiene una respuesta. 

Amazon Lex V2 reconoce varios valores separados por espacios, comas (,) y la conjunción «y». Los slots con varios valores funcionan tanto con la entrada de texto como con la de voz.

Puede utilizar slots con varios valores en las indicaciones. Por ejemplo, puede establecer que el mensaje de confirmación de una intención sea

```
Would you like me to order your {toppings} pizza?
```

Cuando Amazon Lex V2 envía el mensaje al usuario, dice: «¿Quieres que pida tu pizza de pepperoni y piña?»

Los slots con varios valores admiten valores predeterminados únicos. Si se proporcionan varios valores predeterminados, Amazon Lex V2 rellena el slot solo con el primer valor disponible. Para obtener más información, consulte [Uso de los valores de ranura predeterminados en las intenciones de su bot Lex V2](context-mgmt-default.md).

Puede utilizar la ofuscación de slots para enmascarar los valores de un slot con varios valores en los registros de conversaciones. Cuando elige ofuscar los valores de slot, el valor de cada valor de slot se reemplaza con el nombre del slot. Para obtener más información, consulte [Cómo ocultar valores de ranura en registros de conversación de Lex V2](monitoring-obfuscate.md).

# Confirmación
<a name="intent-confirm"></a>

Una vez finalizada la conversación con el usuario y rellenados los valores de los slots correspondientes a la intención, puede configurar un mensaje de confirmación para preguntar al usuario si los valores de los slots son correctos. Por ejemplo, un bot que programe citas de servicio para automóviles podría preguntar al usuario lo siguiente:


|  | 
| --- |
| Tengo programado el servicio para tu Honda Civic 2017 para el 25 de marzo a las 15:00 h. ¿Es correcto? | 

Puede definir 3 tipos de respuestas a la solicitud de confirmación:
+ **Respuesta de confirmación**: esta respuesta se envía al usuario cuando este confirma su intención. Por ejemplo, después de que el usuario responda «sí» a la pregunta «¿deseas realizar el pedido?».
+ **Respuesta de negación**: esta respuesta se envía al usuario cuando este rechaza la intención. Por ejemplo, después de que el usuario responda «no» a la pregunta «¿deseas realizar el pedido?».
+ **Respuesta de error**: esta respuesta se envía al usuario cuando no se puede procesar el mensaje de confirmación. Por ejemplo, si la respuesta del usuario no se pudo entender o no se pudo resolver con un sí o un no. 

![\[Un diagrama de flujo que muestra los tres tipos de respuestas para confirmar y rechazar.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/conditional-confirmation-flow.png)


Si no especifica un mensaje de confirmación, Amazon Lex V2 pasa al paso de cumplimiento o a la respuesta de cierre. 

Puede establecer valores, configurar los pasos siguientes y aplicar las condiciones correspondientes a cada respuesta para diseñar el flujo de la conversación. En ausencia de una condición o de un siguiente paso explícito, Amazon Lex V2 pasa al paso de cumplimiento. 

También puede activar el enlace de códigos del cuadro de diálogo para validar la información recopilada en la intención antes de enviarla para su cumplimiento. Para usar un enlace de códigos, habilite el enlace de códigos del cuadro de diálogo en las opciones avanzadas del mensaje de confirmación. Además, configure el siguiente paso del estado anterior para ejecutar el enlace de código del diálogo. Para obtener más información, consulte [Invocar el enlace de código de diálogo](paths-code-hook.md). 

**nota**  
 Si utiliza un enlace de código para activar el paso de confirmación en tiempo de ejecución, debe marcar el paso de confirmación como **Activo** en el momento de la compilación. 

![\[La consola de Amazon Lex V2 muestra las opciones avanzadas para las solicitudes de confirmación.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/response-confirm.png)


**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

## Usar una función de Lambda para validar una intención.
<a name="intent-confirm-codehook"></a>

Puede definir un enlace de código Lambda para validar la intención antes de enviarla para su cumplimiento. Para usar un enlace de códigos, habilite el enlace de códigos del cuadro de diálogo en las opciones avanzadas del mensaje de confirmación.

Cuando utiliza un enlace de código, puede definir las acciones que Amazon Lex V2 lleva a cabo una vez ejecutado el enlace de código. Puede crear tres tipos de respuestas:
+ **Respuesta correcta**: se envía al usuario cuando el enlace de código se completa correctamente.
+ **Respuesta de error**: se envía al usuario cuando el enlace de código no se ejecuta correctamente o cuando el enlace de código devuelve `Failure` en la respuesta.
+ **Respuesta de tiempo de espera agotado**: se envía al usuario cuando el enlace de código no se completa en el período de tiempo de espera configurado.

# Cumplimiento
<a name="intent-fulfillment"></a>

Una vez que el usuario haya proporcionado todos los valores de los slots para la intención, Amazon Lex V2 cumplirá con la solicitud del usuario. Puede configurar las siguientes opciones para el cumplimiento:
+ **Enlace de código de cumplimiento**: puede usar esta opción para controlar la invocación de Lambda de cumplimiento. Si la opción está desactivada, el cumplimiento se realiza correctamente sin invocar la función de Lambda.
+ **Actualizaciones de cumplimiento**: puede habilitar las actualizaciones de cumplimiento para las funciones de Lambda que tardan más de unos segundos en completarse, de modo que el usuario sepa que el proceso está en curso. Para obtener más información, consulte [Configuración de las actualizaciones del progreso de cumplimiento para su bot Lex V2](streaming-progress.md). Esta funcionalidad solo está disponible para conversaciones en streaming.
+ **Respuestas de cumplimiento**: puede configurar una respuesta de éxito, una respuesta de error y una respuesta de tiempo de espera agotado. La respuesta adecuada se devuelve al usuario en función del estado de la invocación de Lambda de cumplimiento.

Hay tres posibles respuestas de cumplimiento:
+ **Respuesta correcta**: mensaje que se envía cuando el cumplimiento Lambda se completa correctamente.
+ **Respuesta fallida**: mensaje que se envía si se ha producido un error en el cumplimiento o si Lambda no se puede completar por algún motivo.
+ **Respuesta de tiempo de espera agotado**: mensaje que se envía si la función de Lambda de cumplimiento no finaliza dentro del tiempo de espera configurado.

Puede establecer valores, configurar los pasos siguientes y aplicar las condiciones correspondientes a cada respuesta para diseñar el flujo de la conversación. En ausencia de una condición o de un siguiente paso explícito, Amazon Lex V2 pasa a la respuesta de cierre. 

![\[La consola de Amazon Lex V2 muestra las opciones de respuesta para un enlace de códigos de cumplimiento.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/response-fulfillment.png)


**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Respuesta de cierre
<a name="intent-closing"></a>

La respuesta de cierre se envía al usuario una vez que se ha cumplido su intención. Puede usar la respuesta de cierre para finalizar la conversación o puede usarla para hacerle saber al usuario que puede continuar con otra intención. Por ejemplo, en un bot de reservas de viajes, puede configurar la respuesta de cierre para la intención de reservar una habitación de hotel de la siguiente manera:


|  | 
| --- |
| Muy bien, he reservado tu habitación de hotel. ¿Puedo ayudarte con algo más?  | 

Puede establecer valores, configurar los pasos siguientes y aplicar las condiciones después de cada respuesta final al diseño de la ruta de la conversación. En ausencia de una condición o de un siguiente paso explícito, Amazon Lex V2 finaliza la conversación. 

Si no proporciona una respuesta final o si ninguna de las condiciones resulta ser verdadera, Amazon Lex V2 finaliza la conversación con su bot.

![\[La consola de Amazon Lex V2 muestra las opciones de respuesta de cierre.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/response-closing.png)


**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Crear rutas de conversación
<a name="building-paths"></a>

Normalmente, Amazon Lex V2 gestiona el flujo de las conversaciones con los usuarios. En el caso de los bots simples, el flujo predeterminado puede ser suficiente para crear una buena experiencia para los usuarios. Sin embargo, en el caso de los bots más complejos, es posible que desee tomar el control de la conversación y dirigir el flujo hacia rutas más complejas.

Por ejemplo, en el caso de un bot para reservar coches de alquiler, es posible que no quiera alquilarlos a conductores más jóvenes. En este caso, puede crear una condición que compruebe si un conductor tiene menos de cierta edad y, de ser así, pasar directamente a la respuesta de cierre. 

![\[Un diagrama de flujo que muestra el flujo de conversación de un bot para alquiler de coches que no alquila a conductores menores de 24 años.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/conditional-flowchart.png)


Para diseñar estas interacciones, puede configurar el siguiente paso en cada punto de la conversación, evaluar las condiciones, establecer valores e invocar enlaces de código.

La ramificación condicional le ayuda a crear rutas para sus usuarios a través de interacciones complejas. Puede usar una ramificación condicional en cualquier momento en el que pase el control de la conversación a su bot. Por ejemplo, puede crear una condición antes de que el bot obtenga el primer valor del slot, puede crear una condición entre la obtención de cada valor de slot o puede crear una condición antes de que el bot finalice la conversación. Para ver una lista de los puntos en los que puede añadir condiciones, consulte [Adición de intenciones](add-intents.md).

Al crear un bot, Amazon Lex V2 crea una ruta predeterminada a través de la conversación en función del orden de prioridad de los slots. Para personalizar la ruta de la conversación, puede modificar el siguiente paso en cualquier momento de la conversación. Para obtener más información, consulte [Configurar los siguientes pasos de la conversación](paths-nextstep.md). 

Para crear rutas alternativas en función de las condiciones, puede usar una rama condicional en cualquier punto de la conversación. Por ejemplo, puede crear una condición antes de que el bot obtenga el primer valor del slot. Puede crear una condición entre la obtención de cada valor de slot o puede crear una condición antes de que el bot finalice la conversación. Para ver una lista de los puntos en los que puede añadir condiciones, consulte [Añadir condiciones a las conversaciones ramificadas](paths-branching.md).

Puede establecer condiciones en función de los valores de los slots, los atributos de sesión, el modo de entrada y la transcripción de entrada o una respuesta de Amazon Kendra. 

Puede configurar los valores de los atributos y los slots de la sesión en cualquier momento de la conversación. Para obtener más información, consulte [Establecer valores durante la conversación](paths-setting-values.md).

También puede configurar la siguiente acción en un enlace de código de diálogo para ejecutar una función de Lambda. Para obtener más información, consulte [Invocar el enlace de código de diálogo](paths-code-hook.md). 

En la imagen siguiente, se muestra la creación de una ruta para un slot en la consola. En este ejemplo, Amazon Lex V2 obtendrá el slot «edad». Si el valor de la ranura es inferior a 24, Amazon Lex V2 pasa a la respuesta de cierre; de lo contrario, Amazon Lex V2 seguirá la ruta predeterminada.

![\[La consola Amazon Lex V2 muestra el editor de estado de una ranura.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/conditional-slot.png)


**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Configurar los siguientes pasos de la conversación
<a name="paths-nextstep"></a>

Puede configurar el siguiente paso en cada etapa de la conversación para diseñar las conversaciones. Normalmente, Amazon Lex V2 configura automáticamente los siguientes pasos predeterminados para cada etapa de la conversación según el siguiente orden.

 Respuesta inicial → Obtención de slot → Confirmación (si está activa) → Cumplimiento (si está activo) → Respuesta de cierre (si está activa) → Fin de la conversación

Puede modificar los siguientes pasos predeterminados y diseñar la conversación en función de la experiencia del usuario esperada. Los siguientes pasos se pueden configurar en cada etapa de la conversación:

**Saltar a**
+ **Respuesta inicial**: la conversación se reinicia desde el principio de la intención. Puede optar por omitir la respuesta inicial al configurar el siguiente paso.
+ **Obtener un slot**: puede obtener cualquier slot en la intención.
+ **Evaluar las condiciones**: puede evaluar las condiciones y diversificar la conversación en cualquier etapa de la conversación.
+ **Invocar el enlace de código de diálogo**: puede invocar la lógica empresarial en cualquier momento.
+ **Confirmar la intención**: se le pedirá al usuario que confirme la intención.
+ **Cumplir la intención**: el cumplimiento de la intención comenzará como el siguiente paso.
+ **Respuesta de cierre**: la respuesta de cierre se devolverá al usuario.

**Cambiar a**
+ **Intención**: puede cambiar a una intención diferente y continuar la conversación con esa intención. Si lo desea, puede omitir la respuesta inicial de la intención mientras realiza la transición.
+ **Intención: slot específico:** puede obtener directamente un slot específico con una intención diferente si ya ha capturado algunos valores de slot en la intención actual.

**Espera a la entrada del usuario**: el bot espera a que el usuario introduzca información para reconocer cualquier nueva intención. Puede configurar mensajes como «¿Puedo ayudarte con algo más?» antes de configurar el siguiente paso. El bot tendrá el estado `ElicitIntent` de diálogo.

**Finalizar conversación**: se cierra la conversación con el bot.

**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Establecer valores durante la conversación
<a name="paths-setting-values"></a>

Amazon Lex V2 ofrece la posibilidad de establecer valores de slot y valores de atributos de sesión en cada paso de la conversación. A continuación, puede utilizar estos valores durante la conversación para evaluar las condiciones o utilizarlos para cumplir la intención.

Puede establecer valores de slot para la intención actual. Si el siguiente paso de la conversación es invocar otra intención, puede establecer los valores de slot de la nueva intención.

Si el slot asignado no está ocupado o si no se puede analizar la ruta JSON, el atributo se establecerá en `null`.

Utilice la siguiente sintaxis cuando utilice valores de slot y atributos de sesión:
+ **Valores de slot**: escriba el nombre del slot entre corchetes («\$1 \$1»). Para los valores de slot con la intención actual, solo necesita usar el nombre del slot. Por ejemplo, `{slot}`. Si va a establecer un valor en la siguiente intención, debe utilizar tanto el nombre de la intención como el nombre del slot para identificarlo. Por ejemplo, `{intent.slot}`.

  Ejemplos:
  +  `{PhoneNumber} = "1234567890"` 
  +  `{CheckBalance.AccountNumber} = "99999999"` 
  +  `{BookingID} = "ABC123"` 
  +  `{FirstName} = "John"` 

  El valor de un slot puede ser cualquiera de los siguientes:
  + una cadena constante
  + una ruta JSON que hace referencia al bloque de transcripciones de la respuesta de Amazon Lex (para en-US y en-GB)
  + un atributo de sesión

  Ejemplos:
  +  `{username} = "john.doe" ` 
  +  `{username_confidence} = $.transcriptions[0].transcriptionConfidence ` 
  +  `{username_slot_value} = [username] ` 
**nota**  
Los valores de slot también se pueden configurar como `null`. Si necesita volver a obtener el valor de un slot que ya se ha ocupado, debe establecer el valor en `null` antes de volver a solicitar al cliente el valor del slot. Si el slot asignado no está ocupado o si no se puede analizar la ruta JSON, el atributo se establecerá en `null`.
+ **Atributos de sesión**: escriba el nombre del atributo entre corchetes («[ ]»). Por ejemplo, `[sessionAttribute]`.

  Ejemplos:
  +  ` [username] = "john.doe" ` 
  +  ` [username_confidence] = $.transcriptions[0].transcriptionConfidence ` 
  +  ` [username_slot_value] = {username} ` 

  El valor del atributo de sesión puede ser uno de los siguientes valores:
  + una cadena constante
  + una ruta JSON que hace referencia al bloque de transcripciones de la respuesta de Amazon Lex (para en-US y en-GB)
  + una referencia de valor de slot
**nota**  
Si el slot asignado no está ocupado o si no se puede analizar la ruta JSON, el atributo se establecerá en `null`.

**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Añadir condiciones a las conversaciones ramificadas
<a name="paths-branching"></a>

Puede usar la *ramificación condicional* para controlar la ruta que sigue su cliente durante la conversación con su bot. Puede ramificar la conversación en función de los valores de los slots, los atributos de sesión, los contenidos del modo de entrada y los campos de transcripción de entrada o una respuesta de Amazon Kendra.

Puede definir hasta cuatro ramas. Cada rama tiene una condición que debe cumplirse para que Amazon Lex V2 siga esa rama. Si ninguna de las ramas cumple su condición, se sigue una rama predeterminada.

Cuando define una rama, define la acción que Amazon Lex V2 debe realizar si las condiciones correspondientes a esa rama resultan verdaderas. Puede definir cualquiera de las siguientes acciones:
+ Una respuesta enviada al usuario.
+ Valores de slots para aplicarlos a los slots.
+ Valores de los atributos de sesión para la sesión actual.
+ El siguiente paso de la conversación. Para obtener más información, consulte [Crear rutas de conversación](building-paths.md).

![\[Puede elegir diferentes opciones para la ramificación condicional.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/conditional-choose.png)


Cada rama condicional tiene una expresión booleana que debe cumplirse para que Amazon Lex V2 siga esa rama. Existen operadores de comparación y booleanos, funciones y operadores cuantificadores que puede utilizar para sus condiciones. Por ejemplo, la siguiente condición se vuelve verdadera si el slot \$1edad\$1 es inferior a 24.

```
{age} < 24
```

La siguiente condición se cumple si el slot multivalor \$1ingredientes\$1 contiene la palabra «piña».

```
{toppings} CONTAINS "pineapple"
```

Puede combinar varios operadores de comparación con un operador booleano para condiciones más complejas. Por ejemplo, la siguiente condición se cumple si el valor del slot \$1marca\$1 es «Honda» y el valor del slot \$1modelo\$1 es «Civic». Use paréntesis para establecer el orden de evaluación.

```
({make} = "Honda") AND ({model} = "Civic")
```

En los siguientes temas se proporcionan detalles sobre los operadores y las funciones de las ramas condicionales.

**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

**Topics**
+ [Operadores de comparación](#branching-comparison)
+ [Operadores booleanos](#branching-boolean)
+ [Operadores cuantificadores](#branching-quentifier)
+ [Funciones](#branching-function)
+ [Ejemplos de expresiones condicionales](#sample-conditional-expressions)

## Operadores de comparación
<a name="branching-comparison"></a>

Amazon Lex V2 admite los siguientes operadores de comparación para las condiciones:
+ Igual (=)
+ Distinto de (\$1=)
+ Menor que (<)
+ Menor que o igual a (<=)
+ Mayor que (>)
+ Mayor que o igual a (>=)

Cuando se utiliza un operador de comparación, se utilizan las siguientes reglas.
+ El lado izquierdo debe ser una referencia. Por ejemplo, para hacer referencia a un valor del slot, utilice `{slotName}`. Para hacer referencia a un valor de atributo de sesión, utilice `[attribute]`. Para el modo de entrada y la transcripción de entrada, se utiliza `$.inputMode` y `$.inputTranscript`.
+ El lado derecho debe ser constante y del mismo tipo que el lado izquierdo.
+ Cualquier expresión que haga referencia a un atributo que no se haya establecido se considera inválida y no se evalúa.
+ Al comparar un slot con varios valores, el valor utilizado es una lista separada por comas de todos los valores interpretados.

Las comparaciones se basan en el tipo de slot de la referencia. Se resuelven de la siguiente manera:
+ **Cadenas**: las cadenas se comparan en función de su representación en ASCII. Esta comparación no distingue entre mayúsculas y minúsculas.
+ **Números**: los slots basados en números se convierten de la representación de cadena a un número y, a continuación, se comparan.
+ **Fecha/hora**: los slots basados en el tiempo se comparan en función de la serie temporal. La fecha u hora anterior se considera más pequeña. En cuanto a la duración, los períodos más cortos se consideran más pequeños. 

## Operadores booleanos
<a name="branching-boolean"></a>

Amazon Lex V2 admite operadores booleanos para combinar operadores de comparación. Permiten crear declaraciones similares a las siguientes:

```
({number} >= 5) AND ({number} <= 10)
```

También puede utilizar las siguientes operaciones:
+ Y (&&)
+ O (\$1\$1)
+ NO (\$1)

## Operadores cuantificadores
<a name="branching-quentifier"></a>

Los operadores cuantificadores evalúan los elementos de una secuencia y determinan si uno o más elementos cumplen la condición.
+ **CONTIENE**: determina si el valor especificado está contenido en un slot con varios valores y devuelve el valor verdadero si lo es. Por ejemplo, `{toppings} CONTAINS "pineapple"` devuelve el valor verdadero si el usuario pidió piña para su pizza.

## Funciones
<a name="branching-function"></a>

Las funciones deben ir precedidas de la cadena `fn.`. El argumento de la función es una referencia a un slot, un atributo de sesión o un atributo de solicitud. Amazon Lex V2 proporciona dos funciones para obtener información de los valores de los slots: SessionAttribute o RequestAttribute.
+ **fn.COUNT ()**: cuenta el número de valores de un slot con varios valores. 

  Por ejemplo, si el slot `{toppings}` contiene el valor «pepperoni, piña»:

  `fn.COUNT({toppings}) = 2`
+ **fn.IS\$1SET ()**: el valor es verdadero si se establece un slot, un atributo de sesión o un atributo de solicitud en la sesión actual.

  Basado en el ejemplo anterior:

  `fn.IS_SET({toppings})`
+ **fn.LENGTH()**: el valor es la longitud del valor del atributo de sesión, el valor de ranura o el atributo de ranura que se establece en la sesión actual. Esta función no admite ranuras de valores múltiples ni ranuras compuestas.

  Ejemplo:

  Si la ranura `{credit-card-number}` contiene el valor “123456781234”:

  `fn.LENGTH({credit-card-number}) = 12`

## Ejemplos de expresiones condicionales
<a name="sample-conditional-expressions"></a>

Estos son algunos ejemplos de expresiones condicionales. NOTA: `$.` representa el punto de entrada a la respuesta JSON de Amazon Lex V2. El siguiente valor se `$.` analizará en la respuesta de Amazon Lex V2 para recuperar el valor. Las expresiones condicionales que utilicen la referencia de ruta JSON al bloque de transcripciones en la respuesta de Amazon Lex V2 solo se admitirán en las mismas configuraciones regionales que admiten las puntuaciones de transcripción de ASR.


| Tipo de valor | Caso de uso | Expresión condicional | 
| --- | --- | --- | 
| Slot personalizado | El valor del slot pizzaSize es igual a grande | \$1pizzaSize\$1 = "large" | 
| Slot personalizado | pizzaSize es igual a grande o mediana | \$1pizzaSize\$1 = "large" O \$1pizzaSize\$1 = "medium"  | 
| Slot personalizado | Expresiones con () y AND/OR | \$1pizzaType\$1 = "pepperoni" O \$1pizzaSize\$1 = "medium" O \$1pizzaSize\$1 = "small"  | 
| Slot personalizado (slot con varios valores) | Compruebe si uno de los ingredientes es cebolla | \$1toppings\$1 CONTAINS "Onion" | 
| Slot personalizado (slot con varios valores) | El número de ingredientes es superior a 3 | fn.COUNT(\$1topping\$1) > 2 | 
| AMAZON.AlphaNumeric | bookingIDes ABC123 | \$1bookingID\$1 = "ABC123" | 
| AMAZON.Number | el valor del slot de edad es superior a 30 | \$1age\$1 > 30 | 
| AMAZON.Number | el valor del slot de edad es igual a 10 | \$1age\$1 = 10 | 
| AMAZON.Date | valor del slot dateOfBirth antes de 1990 | \$1dateOfBirth\$1 < "1990-10-01" | 
| AMAZON.State | el valor del slot destinationState es igual a Washington | \$1destinationState\$1 = "washington" | 
| AMAZON.Country | el valor del slot destinationCountry es no Estados Unidos | \$1destinationCountry\$1 \$1= "united states" | 
| AMAZON.FirstName | el valor del slot firstName es John | \$1firstName\$1 = "John" | 
| AMAZON.PhoneNumber | el valor del slot phoneNumber es 716767891932 | \$1phoneNumer\$1 = 716767891932 | 
| AMAZON.Percentage | Compruebe si el valor del slot porcentual es mayor o igual a 78 | \$1percentage\$1 >= 78 | 
| AMAZON.EmailAddress | el valor del slot emailAddress es userA@hmail.com | \$1emailAddress\$1 = "userA@hmail.com" | 
| AMAZON.LastName | el valor del slot lastName es Doe | \$1lastName\$1 = "Doe" | 
| AMAZON.City | El valor del slot de la ciudad es igual a Seattle | \$1city\$1 = "Seattle" | 
| AMAZON.Time | La hora es después de las 8 p. m. | \$1time\$1 > "20:00" | 
| AMAZON.StreetName | el valor del slot streetName es Boren Avenue | \$1streetName\$1 = "boren avenue" | 
| AMAZON.Duration | el valor del slot travelDuration es inferior a 2 horas | \$1travelDuration\$1 < P2H | 
| Modo de entrada | El modo de entrada es voz | \$1.inputMode = "Speech" | 
| Transcripción de entrada | La transcripción de entrada equivale a «Quiero una pizza grande» | \$1.inputTranscript = "I want a large pizza" | 
| Atributos de sesión | compruebe el atributo customer\$1subscription\$1type | [customer\$1subcription\$1type] = "yearly" | 
| Atributo de solicitud | compruebe el indicador retry\$1enabled | ((retry\$1enabled)) = "TRUE" | 
| Respuesta de Kendra | La respuesta de Kendra contiene preguntas frecuentes | fn.IS\$1SET(((x-amz-lex:kendra-search-response-question\$1answer-question-1))) | 
| Expresión condicional con transcripciones | Expresiones condicionales que utilizan la ruta JSON de transcripciones | \$1.transcriptions[0].transcriptionConfidence < 0.8 AND \$1.transcriptions[1].transcriptionConfidence > 0.5 | 
| Establecer atributos de sesión | Establezca los atributos de sesión mediante la ruta JSON de las transcripciones y los valores de los slots. | [sessionAttribute] = "\$1.transcriptions..." AND [sessionAttribute] = "\$1<slotName>\$1" | 
| Establecer valores de slot | Establezca los valores de slot utilizando atributos de sesión y la ruta JSON de las transcripciones. | \$1slotName\$1 = [<sessionAttribute>] AND \$1slotName\$1 = "\$1.transcriptions..." | 

**nota**  
`slotName`hace referencia al nombre de una ranura en el bot Amazon Lex V2. Si el slot no está resuelto (nulo) o si no existe, las asignaciones se ignoran durante el tiempo de ejecución. `sessionAttribute` hace referencia al nombre del atributo de sesión que establece el cliente en el momento de la compilación.

# Invocar el enlace de código de diálogo
<a name="paths-code-hook"></a>

En cada paso de la conversación, cuando Amazon Lex V2 envíe un mensaje al usuario, podrá utilizar una función Lambda como siguiente paso de la conversación. Puede utilizar la función para implementar la lógica empresarial en función del estado actual de la conversación.

La función de Lambda que se ejecuta está asociada al alias del bot que está utilizando. Para invocar la función de Lambda en todos los enlaces de código de diálogo en su intención, debe seleccionar **Utilizar una función de Lambda para inicializar y validar** la intención. Para obtener más información sobre elegir una función de Lambda, consulte [Creación de una AWS Lambda función para su bot Amazon Lex V2](lambda-attach.md).

Para utilizar una función de Lambda, se deben realizar dos pasos. En primer lugar, debe activar el enlace de código de diálogo en cualquier momento de la conversación. En segundo lugar, debe configurar el siguiente paso de la conversación para utilizar el enlace de código de diálogo.

En la imagen siguiente, se muestra el enlace de código de diálogo activado.

![\[Muestra que el enlace de código de respuesta condicional está activo.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/code-hook-active.png)


A continuación, establezca el enlace de código como la siguiente acción del paso de la conversación. Para ello, configure el siguiente paso de la conversación para invocar el enlace de código de diálogo. La siguiente imagen muestra una rama condicional en la que el siguiente paso para la ruta predeterminada de la conversación es invocar el enlace de código de diálogo.

![\[Una ramificación condicional que muestra un enlace de código como siguiente paso de la conversación.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/code-hook-choose.png)


Cuando los enlaces de código están activos, puede configurar tres respuestas para devolverlas al usuario:
+ **Éxito**: se envía cuando la función de Lambda se completó correctamente.
+ **Error**: se envía si ocurrió un problema al ejecutar la función de Lambda o si la función de Lambda devolvió un valor `intent.state` de `Failed`.
+ **Tiempo de espera agotado**: se envía si la función de Lambda no se completó en el período de tiempo de espera configurado.

![\[Diagrama de flujo que muestra las opciones disponibles para los mensajes después de ejecutar una función de Lambda.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/conditional-code-hook.png)


Seleccione el **enlace de código de diálogo Lambda** y, a continuación, seleccione **Opciones avanzadas** para ver las tres opciones de respuestas que corresponden a la invocación de la función de Lambda. Puede establecer valores, configurar los siguientes pasos y aplicar las condiciones correspondientes a cada respuesta para diseñar el flujo de la conversación. En ausencia de una condición o de un siguiente paso explícito, Amazon Lex V2 decide el siguiente paso en función del estado actual de la conversación. 

En la página **Opciones avanzadas**, también puede optar por habilitar o deshabilitar la invocación de la función de Lambda. Cuando la función está habilitada, el enlace de código de diálogo se invoca con una invocación a Lambda, seguida del mensaje de éxito, error o tiempo de espera agotado basado en los resultados de la invocación a Lambda. Cuando la función está deshabilitada, Amazon Lex V2 no ejecuta la función de Lambda y continúa como si el enlace de código de diálogo se hubiera realizado correctamente.

También puede establecer una etiqueta de invocación que se envíe a la función de Lambda cuando se invoque mediante este mensaje. Puede usar esto para ayudar a identificar la sección de la función de Lambda que debe ejecutarse.

**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Uso del generador visual de conversaciones
<a name="visual-conversation-builder"></a>

El generador visual de conversaciones es un generador de conversaciones de arrastrar y soltar para diseñar y visualizar fácilmente las rutas de conversación mediante el uso de intenciones en un entorno visual enriquecido.

**Acceder al generador visual de conversaciones**

1. En la consola de Amazon Lex V2, seleccione un bot y seleccione **Intenciones** en el panel de navegación izquierdo.

1. Vaya al editor de intenciones de una de las siguientes formas:
   + Seleccione **Añadir intención** en la esquina superior derecha de la sección **Intenciones** y, a continuación, seleccione añadir una intención vacía o una intención integrada.
   + Seleccione el nombre de una intención en la sección **Intenciones**.

1. En el editor de intenciones, seleccione **Generador visual** en el panel de la parte inferior de la pantalla para acceder al generador de conversaciones visual.

1. Para volver a la interfaz del editor de intenciones del menú, seleccione **Editor**.

![\[Un ejemplo de flujo de conversación con el generador visual de conversaciones.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-sample.png)


El generador visual de conversaciones ofrece una interfaz de usuario más intuitiva con la capacidad de visualizar y modificar el flujo de la conversación. Al arrastrar y soltar los bloques, puede ampliar un flujo existente o reordenar los pasos de la conversación. Puede desarrollar un flujo de conversación con ramificaciones complejas sin necesidad de escribir ningún código Lambda.

Este cambio ayuda a disociar el diseño del flujo de conversación de otras lógicas empresariales en Lambda. El generador visual de conversaciones se puede usar junto con el editor de intenciones existente y se puede usar para crear flujos de conversación. Sin embargo, se recomienda utilizar la vista del editor visual para flujos de conversación más complejos.

Cuando guarda una intención, Amazon Lex V2 puede conectar automáticamente las intenciones cuando determina que hay conexiones perdidas, Amazon Lex V2 sugiere una conexión o puede seleccionar su propia conexión para el bloqueo.


| Acción | Ejemplo | 
| --- | --- | 
|  Añadir un bloque al espacio de trabajo  |  ![\[Añadir un bloque al espacio de trabajo\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-addblock.gif)  | 
|  Hacer una conexión entre bloques  |  ![\[Hacer una conexión entre bloques\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-connectionblock.gif)  | 
|  Abrir el panel de configuración en un bloque  |  ![\[Abrir el panel de configuración en un bloque\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-openpanelblock.gif)  | 
|  Zoom para ajustar  |  ![\[Zoom para ajustar\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-zoomtofit.gif)  | 
|  Eliminar un bloque del flujo de conversación  |  ![\[Eliminar un bloque del flujo de conversación\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-deleteblock.gif)  | 
|  Limpiar automáticamente el espacio de trabajo  |  ![\[Limpiar automáticamente el espacio de trabajo\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-autoclean.gif)  | 

**Terminología:**

**Bloque**: la unidad básica de creación de un flujo de conversación. Cada bloque tiene una funcionalidad específica para gestionar diferentes casos de uso de una conversación.

**Puerto**: cada bloque contiene puertos, que se pueden usar para conectar un bloque a otro. Los bloques pueden contener puertos de entrada y puertos de salida. Cada puerto de salida representa una variación funcional particular de un bloque (como errores, tiempos de espera agotados o éxitos).

**Periferia**: una periferia es una conexión entre el puerto de salida de un bloque y el puerto de entrada de otro bloque. Forma parte de una rama del flujo de una conversación.

**Flujo de conversación**: conjunto de bloques conectados por periferias que describe las interacciones a nivel de intención con un cliente. 

**Bloques**

Los bloques son los bloques de creación de un diseño de flujo de conversación. Representan diferentes estados dentro de la intención, que van desde el inicio de la intención hasta la entrada del usuario y su cierre.

Cada bloque tiene un punto de entrada y uno o varios puntos de salida según el tipo de bloque. Cada punto de salida se puede configurar con el mensaje correspondiente a medida que la conversación avanza por los puntos de salida. En el caso de los bloques con varios puntos de salida, los puntos de salida se refieren al estado correspondiente al nodo. Para un nodo de condición, los puntos de salida representan las diferentes condiciones.

Cada bloque tiene un panel de configuración, que se abre haciendo clic en el icono de **Edición** situado en la esquina superior derecha del bloque. El panel de configuración contiene campos detallados que se pueden configurar para que se correspondan con cada bloque.

Las indicaciones y los mensajes del bot se pueden configurar directamente en el nodo arrastrando un nuevo bloque, o se pueden modificar en el panel derecho, junto con otros atributos del bloque.

**Tipos de bloques**: estos son los tipos de bloques que puede usar con el generador visual de conversaciones.


| Tipo de block | Bloque | 
| --- | --- | 
|  **Inicio**: el bloque raíz o el primer bloque del flujo de la conversación. Este bloque también se puede configurar de manera que el bot pueda enviar una respuesta inicial (mensaje en el que se indique que se ha reconocido la intención). Para obtener más información, consulte [Respuesta inicial](intent-initial.md).  |  ![\[Un bloque de inicio en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-start.png)  | 
|  **Obtener el valor de un slot**: este bloque intenta obtener el valor de un solo slot. Este bloque está configurado para esperar a que el cliente responda a la solicitud de obtención de slot. Para obtener más información, consulte [Ranuras](intent-slots.md).  |  ![\[Un bloque de valor de slot en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-getslotvalue.png)  | 
|  **Condición**: este bloque contiene condicionales. Contiene hasta 4 ramas personalizadas (con condiciones) y una rama predeterminada. Para obtener más información, consulte [Añadir condiciones a las conversaciones ramificadas](paths-branching.md).  |  ![\[Un bloque de condiciones en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-condition.png)  | 
|  **Enlace de código de diálogo**: este bloque gestiona la invocación de la función de Lambda de diálogo. Este bloque contiene las respuestas de los bots basadas en el éxito, el fallo o la caducidad de la función de Lambda de diálogo. Para obtener más información, consulte [Invocar el enlace de código de diálogo](paths-code-hook.md).  |  ![\[Un bloque de enlace de código en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-codehook.png)  | 
|  **Confirmación**: este bloque consulta al cliente antes de cumplir la intención. Contiene respuestas de bots basadas en las respuestas del cliente que dicen sí o no a la solicitud de confirmación. Para obtener más información, consulte [Confirmación](intent-confirm.md).  |  ![\[Un bloque de confirmación en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-confirmation.png)  | 
|  **Cumplimiento**: este bloque gestiona el cumplimiento de la intención, normalmente después de la obtención de slots. Se puede configurar para invocar funciones de Lambda, así como para responder con mensajes, si el cumplimiento se realiza correctamente o no. Para obtener más información, consulte [Cumplimiento](intent-fulfillment.md).  |  ![\[Un bloque de cumplimiento en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-fulfillment.png)  | 
|  **Respuesta de cierre**: este bloque permite al bot responder con un mensaje antes de finalizar la conversación. Para obtener más información, consulte [Respuesta de cierre](intent-closing.md).  |  ![\[Un bloque de cierre en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-closing.png)  | 
|  **Finalizar la conversación**: este bloque indica el final del flujo de la conversación.  |  ![\[Un bloque de finalización en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-end.png)  | 
|  **Espera a la entrada del usuario**: este bloque se puede usar para capturar las opiniones del cliente y cambiar a otra intención en función del enunciado.  |  ![\[Un bloque de espera en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-wait.png)  | 
|  **Ir a la intención**: este bloque se puede usar para ir a una nueva intención o para obtener directamente un slot específico de esa intención.  |  ![\[Un bloque de intención en el generador visual de conversaciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/vcb-gotointent.png)  | 

**Tipos de puertos**

Todos los bloques contienen un puerto de entrada, que se utiliza para conectar sus bloques principales. La conversación solo puede fluir al puerto de entrada de un bloque en particular desde el puerto de salida de su bloque principal. Sin embargo, los bloques pueden no tener, tener uno o muchos puertos de salida. Los bloques sin ningún puerto de salida significan el final del flujo de conversación en la intención actual (`GoToIntent`, `EndConversation`, `WaitForUserInput`). 

**Reglas de diseño de intenciones:**
+ Todos los flujos de una intención comienzan con el bloque de inicio.
+ Los mensajes correspondientes a cada punto de salida son opcionales.
+ Puede configurar los bloques para establecer los valores correspondientes a cada punto de salida en el panel de configuración.
+ Solo puede existir un único bloque de inicio, confirmación, cumplimiento y cierre en un mismo flujo dentro de una intención. Es posible que existan varios bloques de condiciones, como el enlace de códigos de diálogo, la obtención de valores de los slots, la finalización de la conversación, la transferencia y la espera a que el usuario introduzca los valores.
+ Un bloque de condiciones no puede tener una conexión directa con un bloque de condiciones. Lo mismo se aplica al enlace de código de diálogo.
+ Se permiten flujos circulares de tres bloques, pero no se permite un conector entrante a Iniciar intención.
+ Un slot opcional no tiene un conector de entrada ni una conexión de salida y se utiliza principalmente para capturar los datos presentes durante la obtención de la intención. Todas los demás slots que formen parte de la ruta de conversación deben ser obligatorios.

Bloques:
+ El bloque de inicio debe tener una periferia saliente.
+ Cada bloque para obtener el valor del slot debe tener una periferia de salida desde el puerto de éxito, si se requiere el slot.
+ Cada bloque de condiciones debe tener una periferia de salida desde cada rama si el bloque está activo.
+ Un bloque de condiciones no puede tener más de un elemento principal.
+ Un bloque de condiciones activo debe tener una periferia entrante.
+ Cada bloque de enlace de código activo debe tener una periferia de salida de cada puerto: éxito, error y tiempo de espera agotado.
+ Un bloque de enlace de código activo debe tener una periferia entrante.
+ Un bloque de confirmación activo debe tener una periferia entrante.
+ Un bloque de cumplimiento activo debe tener una periferia entrante.
+ Un bloque de cierre activo debe tener una periferia entrante.
+ Un bloque de condiciones debe tener al menos una rama no predeterminada.
+ Un bloque de intención debe tener una intención especificada.

Periferias:
+ Un bloque de condiciones no puede tener una conexión directa con otro bloque de condiciones.
+ Un bloque de enlace de códigos no se puede conectar a otro bloque de enlace de códigos.
+ Un bloque de condiciones solo se puede conectar a cero o a un bloque de enlace de código.
+ La conexión (enlace de código -> condición -> enlace de código) no es válida.
+ Un bloque de cumplimiento no puede tener un bloque de enlace de códigos como elemento secundario.
+ Un bloque de condiciones, que es un elemento secundario del bloque de cumplimiento, no puede tener un bloque de enlace de códigos secundario.
+ Un bloque de cierre no puede tener un bloque de enlace de códigos como elemento secundario.
+ Un bloque de condiciones que es un elemento secundario del bloque de cierre no puede tener un bloque de enlace de códigos secundario.
+ Un bloque de inicio, confirmación u obtención de valores de slots no puede tener más de un bloque de enlace de códigos en su cadena de dependencias.

**nota**  
El 17 de agosto de 2022, Amazon Lex V2 publicó un cambio en la forma en que se gestionan las conversaciones con el usuario. Este cambio le da más control sobre la ruta que sigue el usuario a lo largo de la conversación. Para obtener más información, consulte [Cambios en los flujos de conversación en Amazon Lex V2](understanding-new-flows.md). Los bots creados antes del 17 de agosto de 2022 no admiten mensajes de enlace de código de diálogo, ni permiten establecer valores, configurar los pasos siguientes ni añadir condiciones.

# Intenciones integradas
<a name="built-in-intents"></a>

Para las acciones comunes, puede utilizar la biblioteca de intenciones integrada estándar. Para crear una intención a partir de una intención integrada, elíjala en la consola y asígnele otro nombre. La nueva intención tiene la misma configuración que la intención base, como los enunciados de ejemplo. 

En la implementación actual, no puede hacer lo siguiente: 
+ Añadir ni eliminar enunciados de ejemplo de la intención base
+ Configurar slots para intenciones integradas

**Añadir una intención integrada a un bot**

1. Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Lex en [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Seleccione el bot al cual se debe agregar la intención integrada.

1. En el menú de la izquierda, seleccione el idioma y, a continuación, seleccione **Intenciones**.

1. Seleccione **Añadir intención** y, a continuación, seleccione **Usar intención integrada**.

1. En **Intención integrada**, seleccione la intención que quiere usar.

1. Asigne un nombre a la intención y, a continuación, seleccione **Añadir**.

1. Use el editor de intenciones para configurar la intención según sea necesario para su bot.

**Topics**
+ [AMAZON.BedrockAgentIntent](built-in-intent-bedrockagent.md)
+ [AMAZON.CancelIntent](built-in-intent-cancel.md)
+ [AMAZON.FallbackIntent](built-in-intent-fallback.md)
+ [AMAZON.HelpIntent](built-in-intent-help.md)
+ [AMAZON.KendraSearchIntent](built-in-intent-kendra-search.md)
+ [AMAZON.PauseIntent](built-in-intent-pause.md)
+ [AMAZON.QnAIntent](built-in-intent-qna.md)
+ [AMAZON.QnAIntent (multiple use support)](built-in-intent-qna-multi.md)
+ [AMAZON.QinConnectIntent](built-in-intent-qinconnect.md)
+ [AMAZON.RepeatIntent](built-in-intent-repeat.md)
+ [AMAZON.ResumeIntent](built-in-intent-resume.md)
+ [AMAZON.StartOverIntent](built-in-intent-start-over.md)
+ [AMAZON.StopIntent](built-in-intent-stop.md)

# AMAZON.BedrockAgentIntent
<a name="built-in-intent-bedrockagent"></a>

**nota**  
Para aprovechar las características de la IA generativa debe cumplir los siguientes requisitos previos  
Para obtener información sobre el precio de uso de Amazon Bedrock, consulte [Precios de Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/).
Active las capacidades de IA generativa para la configuración regional de su bot. Para ello, siga los pasos que se indican en [Optimización de la creación y el rendimiento de bots Lex V2 con IA generativa](generative-features.md). 

Activa los agentes de Amazon Bedrock que se definen con la intención de responder a las solicitudes de los clientes y activa los flujos de trabajo agénticos para realizar la tarea definida. Esta característica está disponible en todas las configuraciones regionales compatibles con Amazon Lex V2 y en todas las regiones comerciales en las que estén presentes Amazon Lex V2 y agentes de Amazon Bedrock. 

Si esta intención prevalece`FallbackIntent`, la intención se activa cuando un enunciado no está clasificado en ninguna de las demás intenciones presentes en el bot; de lo contrario, solo se activa cuando un enunciado se clasifica en esta intención. Es importante tener en cuenta que esta intención no se activará en el caso de expresiones omitidas cuando se obtenga un valor de espacio. 

Cuando su bot de Amazon Lex V2 la reconozca, la `AMAZON.BedrockAgentIntent` activa el `BedrockAgent` o la `BedrockKnowledgeBase` definidos para responder al cliente. Si utiliza agentes para Amazon Bedrock, la conversación permanece en la `BedrockAgentIntent` y las solicitudes de los usuarios se transmiten a los agentes hasta que el agente para Amazon Bedrock determine que la conversación haya `FINISH`. Solo entonces, Amazon Lex V2 asumirá el control de la conversación y seguirá los siguientes pasos definidos en la `AMAZON.BedrockAgentIntent`.

Responde a las preguntas de los clientes usando los agentes y bases de conocimiento de Amazon Bedrock para responder a las preguntas de los clientes y proporcionar respuestas detalladas.

**aviso**  
No puedes usar expresiones sin muestras, `AMAZON.BedrockAgentIntent` `AMAZON.QnAIntent` sin expresiones de muestra y `AMAZON.KendraSearchIntent` en la misma configuración regional del bot.

Si selecciona esta intención, configure los siguientes campos y, a continuación, seleccione Agregar para agregar la intención.
+ ID del agente de Amazon Bedrock: es el identificador del agente de Amazon Bedrock. Elija el agente de Bedrock que desea usar. 
+ ID del alias del agente de Amazon Bedrock: es el identificador del alias del agente de Amazon Bedrock.

**importante**  
Al crear el agente de Amazon Bedrock para usarlo con Amazon Lex V2, compruebe que la **Entrada del usuario** en **Configuración adicional** sea `ENABLED`. Esta configuración es fundamental para que los agentes puedan hacer preguntas aclaratorias o de seguimiento, y permite a Amazon Lex V2 delegar en los agentes la tarea correspondiente.

(Opcional) También puedes añadir un BedrockAgentIntent con estas opciones:
+ Modelo Amazon Bedrock: elija el modelo de proveedor y base que se utilizará para este propósito. Actualmente, se admiten algunos modelos Anthropic Claude. 
+ Base de conocimiento de Amazon Bedrock: si elige esta opción, especifique el ID de la base de conocimiento de Amazon Bedrock. Puede buscar el ID en la página de detalles de la base de conocimiento de Amazon Bedrock en la consola o enviando una solicitud `GetKnowledgeBase`.

Las respuestas del se BedrockAgentIntent almacenarán en los atributos de sesión y solicitud, tal y como se muestra a continuación:
+ `x-amz-lex:bedrock-agent-search-response`: respuesta del agente de Amazon Bedrock a la pregunta o al enunciado.
+ `x-amz-lex:bedrock-knowledge-base-search-response-source`: señala al documento o la lista de documentos utilizados para generar la respuesta si se utiliza la configuración de la base de conocimiento de Amazon Bedrock.
+ `x-amz-lex:bedrock-agent-action-group-invocation-input`: objeto que contiene los valores de entrada recopilados por el grupo de acciones de los agentes. Para obtener más información sobre los grupos de acción de los agentes, consulte ActionGroupInvocationInput.
+ `x-amz-lex:bedrock-agent-knowledge-base-lookup-input`: objeto que contiene los detalles relacionados con la búsqueda en la base de conocimiento de Amazon Bedrock.
+ `x-amz-lex:bedrock-agent-agent-collaborator-details`: objeto que contiene detalles de las entradas y salidas de los subagentes que se han invocado como parte de las invocaciones de colaboración entre múltiples agentes.

Para obtener más información, consulte [Uso BedrockAgentIntent de un agente Bedrock en Amazon Lex](https://docs.aws.amazon.com/lexv2/latest/dg/bedrock-agent-intent.html).

# AMAZON.CancelIntent
<a name="built-in-intent-cancel"></a>

Responda a las palabras y frases que indican que el usuario quiere cancelar la interacción actual. Su aplicación puede utilizar esta intención para eliminar los valores de los tipos de slot y otros atributos antes de finalizar la interacción con el usuario.

Enunciados comunes:
+ cancelar
+ no importa
+ olvidar

# AMAZON.FallbackIntent
<a name="built-in-intent-fallback"></a>

Cuando la entrada de un usuario a una intención no es lo que espera un bot, puede configurar Amazon Lex V2 para que invoque una *intención alternativa*. Por ejemplo, si la entrada del usuario «Quiero pedir caramelos» no coincide con una intención del bot `OrderFlowers`, Amazon Lex V2 invoca la intención alternativa para gestionar la respuesta.

El tipo de `AMAZON.FallbackIntent` intención integrado se añade al bot automáticamente cuando se crea un bot mediante la consola o cuando se añade una configuración regional a un bot mediante esta operación. [CreateBotLocale](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotLocale.html) 

La invocación de una intención alternativa se realiza en dos pasos. En el primer paso, la intención alternativa coincide según la entrada del usuario. Cuando la intención alternativa coincide, la forma en que se comporta el bot depende del número de reintentos configurados para una pregunta. 

Amazon Lex V2 hace coincidir la intención alternativa en estas situaciones: 
+ La entrada del usuario a una intención no coincide con la entrada que espera el bot
+ La entrada de audio es ruido o la entrada de texto no se reconoce como palabras.
+ La entrada del usuario es ambigua y Amazon Lex V2 no puede determinar qué intención debe invocar.

La intención alternativa se invoca cuando:
+ Una intención no reconoce la entrada del usuario como un valor de slot después del número de intentos configurado.
+ Una intención no reconoce la entrada del usuario como respuesta a una pregunta de confirmación después del número de intentos configurado.

No puede añadir lo siguiente a una intención alternativa:
+ Enunciados
+ Ranuras
+ Una solicitud de confirmación

## Uso de una función de Lambda con una intención alternativa
<a name="invoke-fallback"></a>

Cuando se invoca una intención alternativa, la respuesta depende de la configuración del parámetro `fulfillmentCodeHook` para la operación [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html). El bot realiza una de las siguientes operaciones:
+ Devuelve la información de la intención a la aplicación cliente.
+ Llama a la función Lambda de validación y cumplimiento del alias. Llama a la función con las variables de sesión que se establecen para la sesión.

Para obtener más información acerca de cómo configurar la respuesta cuando se invoca una intención alternativa, consulte el parámetro `fulfillmentCodeHook` de la operación [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html). 

Si utiliza la función de Lambda con su intención alternativa, puede utilizar esta función para llamar a otra intención o para realizar algún tipo de comunicación con el usuario, como recopilar un número de devolución de llamada o abrir una sesión con un representante del servicio de atención al cliente.

Una intención alternativa se puede invocar varias veces en la misma sesión. Por ejemplo, suponga que la función de Lambda utiliza la acción de diálogo `ElicitIntent` para solicitar al usuario una intención diferente. Si Amazon Lex V2 no puede inferir la intención del usuario después del número de intentos configurado, invoca de nuevo la intención alternativa. También invoca la intención alternativa cuando el usuario no responde con un valor de slot válido después del número de intentos configurados.

Puede configurar su función de Lambda para realizar un seguimiento del número de veces que se llama a la intención alternativa mediante una variable de sesión. La función de Lambda puede realizar una acción diferente si se llama más veces que el umbral establecido en la función de Lambda. Para obtener más información acerca de las variables de sesión, consulte [Cómo establecer atributos de sesión para su bot Lex V2](context-mgmt-session-attribs.md).

# AMAZON.HelpIntent
<a name="built-in-intent-help"></a>

Responde a palabras o frases que indican que el usuario necesita ayuda para interactuar con el bot. Cuando se invoca esta intención, puede configurar la función o aplicación de Lambda para que proporcione información sobre las capacidades del bot, formule preguntas de seguimiento sobre áreas de ayuda o entregue la interacción a un agente humano. 

Enunciados comunes:
+ ayuda
+ ayúdame
+ ¿me puedes ayudar?

# AMAZON.KendraSearchIntent
<a name="built-in-intent-kendra-search"></a>

Para buscar documentos indexados con Amazon Kendra, utilice la intención `AMAZON.KendraSearchIntent`. Cuando Amazon Lex V2 no puede determinar la siguiente acción en una conversación con el usuario, desencadena la intención de búsqueda.

Solo `AMAZON.KendraSearchIntent` está disponible en la configuración regional en inglés (EE. UU.) (en-US) y en el Este de EE. UU. (Norte de Virginia), Oeste de EE. UU. (Oregón) y Europa (Irlanda).

Amazon Kendra es un servicio de machine-learning-based búsqueda que indexa documentos en lenguaje natural, como documentos PDF o archivos de Microsoft Word. Puede buscar documentos indexados y devolver los siguientes tipos de contestaciones a una pregunta:
+ Una respuesta 
+ Una entrada de una pregunta frecuente que podría dar respuesta a la pregunta
+ Un documento relacionado con la pregunta

Para ver un ejemplo del uso de `AMAZON.KendraSearchIntent`, consulte [Ejemplo: Creación de un bot de preguntas frecuentes sobre un índice de Amazon Kendra](faq-bot-kendra-search.md).

Si configura una intención `AMAZON.KendraSearchIntent` para su bot, Amazon Lex V2 la llamará siempre que no pueda determinar el enunciado del usuario en un slot o una intención. Si no hay respuesta de Amazon Kendra, la conversación continuará tal y como está configurada en el bot.

**nota**  
 Actualmente, Amazon Lex V2 no admite la `AMAZON.KendraSearchIntent` durante la obtención del slot. Si Amazon Lex V2 no puede determinar el enunciado del usuario para un slot, llama al `AMAZON.FallbackIntent`. 

Cuando use la `AMAZON.KendraSearchIntent` con la `AMAZON.FallbackIntent` en el mismo bot, Amazon Lex V2 utiliza las intenciones de la siguiente manera:

1. Amazon Lex V2 llama a la `AMAZON.KendraSearchIntent`. La intención llama a la operación `Query` de Amazon Kendra.

1. Si Amazon Kendra devuelve una respuesta, Amazon Lex V2 muestra el resultado al usuario.

1. Si no hay respuesta por parte de Amazon Kendra, Amazon Lex V2 vuelve a preguntar al usuario. La siguiente acción dependerá de la respuesta del usuario.
   + Si la respuesta del usuario contiene un enunciado que Amazon Lex V2 reconoce, como llenar un valor de slot o confirmar una intención, la conversación con el usuario continúa conforme a la configuración del bot.
   + Si la respuesta del usuario no contiene un enunciado que Amazon Lex V2 reconozca, Amazon Lex V2 hará otra llamada a la operación `Query`.

1. Si tras un número establecido de nuevos intentos no hay ninguna respuesta, Amazon Lex V2 llamará a `AMAZON.FallbackIntent` y finalizará la conversación con el usuario.

Hay tres formar de usar la `AMAZON.KendraSearchIntent` para hacer una solicitud a Amazon Kendra:
+ Deje que la intención de búsqueda haga la solicitud por usted. Amazon Lex V2 llama a Amazon Kendra con el enunciado del usuario como cadena de búsqueda. Cuando cree la intención, puede definir una cadena de filtro de consulta que limite el número de respuestas devueltas por Amazon Kendra. Amazon Lex V2 utiliza el filtro en la solicitud de consulta.
+ Agregue parámetros de consulta adicionales a la solicitud para acotar los resultados de la búsqueda mediante la función de Lambda. Puede agregar un campo `kendraQueryFilterString` que contenga parámetros de consulta de Amazon Kendra a la acción de diálogo `delegate`. Cuando se agregan parámetros de consulta a la solicitud con la función de Lambda, estos tienen prioridad sobre el filtro de consulta que se definió al crear la intención.
+ Crear una nueva consulta utilizando la función de Lambda. Puede crear una solicitud de consulta de Amazon Kendra completa para que Amazon Lex V2 la envíe. Especifique la consulta en el campo `kendraQueryRequestPayload` de la acción de diálogo `delegate`. El campo `kendraQueryRequestPayload` tiene prioridad sobre el campo `kendraQueryFilterString`.

Si desea especificar el parámetro `queryFilterString` al crear un bot o el campo `kendraQueryFilterString` al llamar a la acción `delegate` en una función de Lambda de diálogo, especifique una cadena que se utilice como filtro de atributos en la consulta de Amazon Kendra. Si la cadena no es un filtro de atributos válido, aparecerá una excepción `InvalidBotConfigException` en tiempo de ejecución. Para obtener más información sobre los filtros de atributos, consulte [Usar atributos de documentos para filtrar las consultas](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) en la *Guía para desarrolladores de Amazon Kendra*.

Para mantener el control sobre la consulta que Amazon Lex V2 envía a Amazon Kendra, puede especificar una consulta en el campo `kendraQueryRequestPayload` de la función de Lambda de diálogo. Si la consulta no es válida, Amazon Lex V2 devolverá una excepción `InvalidLambdaResponseException`. Para obtener más información, consulte la [Operación Query](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html) en la *Guía para desarrolladores de Amazon Kendra*.

Si desea ver un ejemplo de cómo se usa `AMAZON.KendraSearchIntent`, consulte [Ejemplo: Creación de un bot de preguntas frecuentes sobre un índice de Amazon Kendra](faq-bot-kendra-search.md).

## Política de IAM para Amazon Kendra Search
<a name="kendra-search-iam"></a>

Para utilizar la `AMAZON.KendraSearchIntent` intención, debe utilizar una función que proporcione políticas de AWS Identity and Access Management (IAM) que permitan a Amazon Lex V2 asumir una función en tiempo de ejecución que tenga permiso para denominar la intención de Amazon `Query` Kendra. La configuración de IAM que utilice dependerá de si la ha creado `AMAZON.KendraSearchIntent` con la consola Amazon Lex V2 o con un AWS SDK o la AWS Command Line Interface (AWS CLI). Si utiliza la consola, puede decidir si desea agregar permisos al rol vinculado al servicio de Amazon Lex V2 para que llame a Amazon Kendra o si prefiere utilizar un rol específico para llamar a la operación `Query` de Amazon Kendra. Cuando usa la AWS CLI o un SDK para crear la intención, debe usar un rol específico para llamar a la `Query` operación.

### Asociación de permisos
<a name="kendra-iam-attach"></a>

Puede utilizar la consola para asociar permisos que permitan al rol vinculado al servicio de Amazon Lex V2 predeterminado acceder a la operación `Query` de Amazon Kendra. Si asocia permisos al rol vinculado al servicio, no es necesario crear y administrar específicamente un rol en tiempo de ejecución para conectarse al índice de Amazon Kendra.

El usuario, el rol o el grupo que utilice para obtener acceso a la consola de Amazon Lex V2 debe tener permisos para administrar políticas de roles. Asocie la siguiente política de IAM al rol de acceso de la consola. Al conceder estos permisos, el rol podrá cambiar la política del rol vinculado al servicio existente. 

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iam:AttachRolePolicy",
            "iam:PutRolePolicy",
            "iam:GetRolePolicy"
        ],
        "Resource": "arn:aws:iam::*:role/aws-service-role/lexv2.amazonaws.com/AWSServiceRoleForLexBots*"
    },
    {
        "Effect": "Allow",
        "Action": "iam:ListRoles",
        "Resource": "*"
    }
]
}
```

------

### Especificación de un rol
<a name="kendra-iam-role"></a>

Puede usar la consola, la AWS CLI o la API para especificar un rol de tiempo de ejecución que se utilizará al llamar a la operación de Amazon Kendra`Query`. 

El usuario, rol o grupo que utilice para especificar el rol en tiempo de ejecución debe tener el permiso `iam:PassRole`. La siguiente política define el permiso. Puede utilizar las claves de contexto de condición `iam:AssociatedResourceArn` y `iam:PassedToService` para limitar aún más el alcance de los permisos. Para obtener más información, consulte [IAM y claves de contexto de AWS STS condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html) en la *Guía del usuario de AWS Identity and Access Management*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role"
        }
    ]
}
```

------

El rol en tiempo de ejecución que Amazon Lex V2 tiene que usar para llamar a Amazon Kendra debe tener permisos `kendra:Query`. Cuando se utiliza un rol de IAM existente para obtener permiso para llamar a la operación `Query` de Amazon Kendra, el rol debe tener asociada la siguiente política.

Puede usar la consola de IAM, la API de IAM o la AWS CLI para crear una política y asociarla a un rol. Estas instrucciones utilizan la CLI de AWS para crear el rol y las políticas.

**nota**  
El siguiente código tiene formato para Linux y MacOS. Para Windows, reemplace el carácter de continuación de línea de Linux (\$1) por un signo de intercalación (^).

**Para agregar permisos de la operación Query a un rol**

1. Cree un documento llamado **KendraQueryPolicy.json** en el directorio actual, agregue el código siguiente y guárdelo.

1. En la AWS CLI, ejecute el siguiente comando para crear la política de IAM para ejecutar la operación de Amazon `Query` Kendra.

   ```
   aws iam create-policy \
   --policy-name query-policy-name \
   --policy-document file://KendraQueryPolicy.json
   ```

1. Asocie la política al rol de IAM que esté utilizando para llamar a la operación `Query`.

   ```
   aws iam attach-role-policy \
   --policy-arn arn:aws:iam::account-id:policy/query-policy-name
   --role-name role-name
   ```

Puede optar por actualizar el rol vinculado al servicio de Amazon Lex V2 o utilizar el rol que creó al generar la `AMAZON.KendraSearchIntent` de su bot. En el siguiente procedimiento, se muestra cómo puede elegir el rol de IAM que se va a utilizar.

**Para especificar el rol de tiempo de ejecución para AMAZON.KendraSearchIntent**

1. Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Lex en [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. Seleccione el bot al que desee agregar la `AMAZON.KendraSearchIntent`.

1. Seleccione el signo más (\$1) situado junto a **Intenciones**.

1. En **Agregar intención**, seleccione **Buscar intenciones existentes**.

1. En **Intenciones de búsqueda**, escriba **AMAZON.KendraSearchIntent** y seleccione **Agregar**.

1. En **Copiar intención integrada**, escriba un nombre para la intención, como **KendraSearchIntent**, y seleccione **Agregar**.

1. Abra la sección de **consultas de Amazon Kendra**.

1. En **Rol de IAM**, seleccione una de las opciones siguientes:
   + Para actualizar el rol vinculado al servicio de Amazon Lex V2 y permitir que el bot consulte los índices de Amazon Kendra, seleccione **Agregar permisos de Amazon Kendra**.
   + Para utilizar un rol que tenga permiso para llamar a la operación `Query` de Amazon Kendra, seleccione **Usar un rol existente**.

## Uso de atributos de solicitud y sesión como filtros
<a name="kendra-search-filter"></a>

Para filtrar la respuesta de Amazon Kendra y obtener los elementos relacionados con la conversación actual, use los atributos de sesión y solicitud como filtros agregando el parámetro `queryFilterString` cuando cree el bot. Especifique un marcador de posición para el atributo cuando cree la intención. De ese modo, Amazon Lex V2 sustituirá el valor antes de llamar a Amazon Kendra. Para obtener más información sobre los atributos de solicitud, consulte [Cómo establecer atributos de solicitud para su bot Lex V2](context-mgmt-request-attribs.md). Para obtener más información acerca de los atributos de sesión, consulte [Cómo establecer atributos de sesión para su bot Lex V2](context-mgmt-session-attribs.md).

A continuación, se muestra un ejemplo de un parámetro `queryFilterString` que utiliza una cadena para filtrar la consulta de Amazon Kendra.

```
"{"equalsTo": {"key": "City", "value": {"stringValue": "Seattle"}}}"
```

A continuación, se muestra un ejemplo de un parámetro `queryFilterString` que utiliza un atributo de sesión llamado `"SourceURI"` para filtrar la consulta de Amazon Kendra.

```
"{"equalsTo": {"key": "SourceURI","value": {"stringValue": "[FileURL]"}}}"
```

A continuación, se muestra un ejemplo de un parámetro `queryFilterString` que utiliza un atributo de solicitud llamado `"DepartmentName"` para filtrar la consulta de Amazon Kendra.

```
"{"equalsTo": {"key": "Department","value": {"stringValue": "((DepartmentName))"}}}"
```

Los filtros `AMAZON.KendraSearchInteng` utilizan el mismo formato que los filtros de búsqueda de Amazon Kendra. Para obtener más información, consulte [Usar atributos de documentos para filtrar los resultados de búsqueda](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) en la *Guía para desarrolladores de Amazon Kendra*.

La cadena de filtro de consultas utilizada con la `AMAZON.KendraSearchIntent` debe incluir letras minúsculas para la primera letra de cada filtro. Por ejemplo, a continuación se muestra un filtro de consulta válido para la `AMAZON.KendraSearchIntent`.

```
{
"andAllFilters": [
    {
        "equalsTo": {
            "key": "City",
            "value": {
                "stringValue": "Seattle"
            }
        }
    },
    {
        "equalsTo": {
            "key": "State",
            "value": {
                "stringValue": "Washington"
            }
        }
    }
]
}
```

## Usar la respuesta de búsqueda
<a name="kendra-search-response"></a>

Amazon Kendra devuelve la respuesta a una búsqueda en una respuesta a la declaración `IntentClosingSetting` de intención. La intención debe tener una declaración `closingResponse`, a menos que una función de Lambda genere un mensaje de respuesta de conclusión.

Amazon Kendra tiene cinco tipos de respuestas. 
+ Las dos respuestas siguientes requieren que se configure una sección de preguntas frecuentes para su índice de Amazon Kendra. Para obtener más información, consulte [Agregar preguntas y respuestas directamente a un índice](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html).
  +  `x-amz-lex:kendra-search-response-question_answer-question-<N>`: la pregunta de una sección de preguntas frecuentes que coincide con la búsqueda. 
  +  `x-amz-lex:kendra-search-response-question_answer-answer-<N>`: la respuesta de una sección de preguntas frecuentes que coincide con la búsqueda. 
+ Las tres respuestas siguientes requieren que se configure un origen de datos para su índice de Amazon Kendra. Para obtener más información, consulte [Crear un origen de datos](https://docs.aws.amazon.com/kendra/latest/dg/data-source.html). 
  + `x-amz-lex:kendra-search-response-document-<N>`: un extracto de un documento del índice relacionado con el texto del enunciado.
  + `x-amz-lex:kendra-search-response-document-link-<N>`: la URL de un documento del índice relacionado con el texto del enunciado.
  + `x-amz-lex:kendra-search-response-answer-<N>`: un extracto de un documento del índice que responde a la pregunta.

Las respuestas se devuelven en atributos `request`. Puede haber hasta cinco respuestas para cada atributo, numeradas del 1 al 5. Para obtener más información sobre las respuestas, consulte [Tipos de respuesta](https://docs.aws.amazon.com/kendra/latest/dg/response-types.html) en la *Guía para desarrolladores de Amazon Kendra*. 

La declaración `closingResponse` debe tener uno o varios grupos de mensajes. Cada grupo contiene uno o varios mensajes. Cada mensaje puede contener una o varias variables de marcador de posición que se reemplazarán con los atributos de solicitud de la respuesta proporcionada por Amazon Kendra. En el grupo de mensajes debe haber al menos un mensaje en el que todas las variables se hayan sustituido por los valores de atributo de solicitud obtenidos de la respuesta en tiempo de ejecución o debe haber un mensaje sin variables de marcador de posición. Los atributos de solicitud se separan con paréntesis dobles («((« »))»). Los siguientes mensajes del grupo coinciden con cualquier respuesta de Amazon Kendra:
+ «He encontrado una pregunta de preguntas frecuentes para usted: ((x-amz-lex: kendra-search-response-question \$1answer-question-1)), y la respuesta es ((x-amz-lex: \$1answer-answer-1))» kendra-search-response-question
+ «He encontrado un extracto de un documento útil: ((: -1))» x-amz-lex kendra-search-response-document
+ «Creo que la respuesta a tus preguntas es ((x-amz-lex: kendra-search-response-answer -1))»

## Usar una función de Lambda para administrar la solicitud y la respuesta
<a name="kendra-search-lambda"></a>

La intención `AMAZON.KendraSearchIntent` puede utilizar el enlace de código de diálogo y el enlace de código de cumplimentación para administrar la solicitud enviada a Amazon Kendra y la respuesta. Utilice la función de Lambda del enlace de código de diálogo cuando desee modificar la consulta que envía a Amazon Kendra, y la función de Lambda de enlace de código de cumplimentación cuando desee modificar la respuesta.

### Crear una consulta con el enlace de código de diálogo
<a name="kendra-search-lambda-dialog"></a>

Puede utilizar el enlace de código de diálogo para crear una consulta y enviarla a Amazon Kendra. El uso del enlace de código de diálogo es opcional. Si no especifica ningún enlace de código de diálogo, Amazon Lex V2 creará una consulta a partir del enunciado del usuario y utilizará la `queryFilterString` que se proporcionó al configurar la intención, si se proporcionó alguna.

Puede utilizar dos campos en la respuesta del enlace de código de diálogo para modificar la solicitud que se envía a Amazon Kendra:
+ `kendraQueryFilterString`: utilice esta cadena para especificar los filtros de atributos para la solicitud de Amazon Kendra. Puede filtrar la consulta utilizando cualquiera de los campos definidos en el índice. Para obtener información sobre la estructura de la cadena de filtro, consulte [Usar atributos de documentos para filtrar consultas](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering) en la *Guía para desarrolladores de Amazon Kendra*. Si la cadena de filtro especificada no es válida, aparecerá una excepción `InvalidLambdaResponseException`. La cadena `kendraQueryFilterString` invalida cualquier otra cadena de consulta especificada en el campo `queryFilterString` configurado para la intención.
+ `kendraQueryRequestPayload`: utilice esta cadena para especificar una consulta de Amazon Kendra. La consulta puede utilizar cualquiera de las características de Amazon Kendra. Si no especifica una consulta válida, aparecerá una excepción `InvalidLambdaResponseException`. Para obtener más información, consulte [Consulta](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html) en la *Guía para desarrolladores de Amazon Kendra*.

Una vez que haya creado el filtro o la cadena de consulta, envíe la respuesta a Amazon Lex V2 con el campo `dialogAction` de la respuesta establecido en `delegate`. Amazon Lex V2 envía la consulta a Amazon Kendra y, a continuación, devuelve la respuesta a la consulta al enlace de código de cumplimentación.

### Usar el enlace de código de cumplimentación en la respuesta
<a name="kendra-search-lambda-fulfillment"></a>

Una vez que Amazon Lex V2 envía una consulta a Amazon Kendra, la respuesta se devuelve a la función de Lambda de cumplimentación `AMAZON.KendraSearchIntent`. El evento de entrada del enlace de código contiene la respuesta completa de Amazon Kendra. Los datos de consulta tienen la misma estructura que los datos devueltos por la operación `Query` de Amazon Kendra. Para obtener más información, consulte [Sintaxis de la respuesta a la consulta](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax) en la *Guía para desarrolladores de Amazon Kendra*.

El enlace de código de cumplimentación es opcional. Si no existe o si el enlace de código no devuelve un mensaje en la respuesta, Amazon Lex V2 utilizará la declaración `closingResponse` con las respuestas.

# Ejemplo: Creación de un bot de preguntas frecuentes sobre un índice de Amazon Kendra
<a name="faq-bot-kendra-search"></a>

En este ejemplo, se crea un bot de Amazon Lex V2 que utiliza un índice de Amazon Kendra para proporcionar respuestas a las preguntas de los usuarios. El bot de preguntas frecuentes (FAQ) se encarga de administrar el diálogo con el usuario. Este bot utiliza la intención `AMAZON.KendraSearchIntent` para consultar el índice y presentar la respuesta al usuario. Este es un resumen de cómo creará su bot de preguntas frecuentes utilizando un índice de Amazon Kendra:

1. Crear un bot con el que sus clientes puedan interactuar para obtener respuestas.

1. Crear una intención personalizada. Como las `AMAZON.KendraSearchIntent` y `AMAZON.FallbackIntent` son intenciones de respaldo, su bot necesita al menos otra intención que contenga al menos un enunciado. Esta intención permitirá compilar el bot, pero no se utilizará de ninguna otra manera. Por lo tanto, su bot de preguntas frecuentes contendrá al menos tres intenciones, como se muestra en la siguiente imagen:   
![\[Un bot de preguntas frecuentes de Kendra con tres intenciones\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/kendra-faqbot/kendra-intents.png)

1. Agregar la intención `AMAZON.KendraSearchIntent` al bot y configurarlo para que funcione con el [índice de Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html). 

1. Pruebe el bot realizando una consulta y verificando que los resultados de su índice de Amazon Kendra sean documentos que respondan a la consulta.

**Requisitos previos**

Para poder utilizar este ejemplo, primero debe crear un índice de Amazon Kendra. Para obtener más información, consulte [Introducción a la consola de Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/gs-console.html) en la *Guía para desarrolladores de Amazon Kendra*. Para este ejemplo, seleccione el conjunto de datos de muestra (**documentación de AWS de muestra**) como origen de datos.

**Para crear un bot de preguntas frecuentes**

1. Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Lex en [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/).

1. En el panel de navegación, seleccione **Bots**. 

1. Seleccione **Crear bot**.

   1.  Para el **Método de creación**, seleccione **Crear un bot en blanco**. 

   1.  En la sección **Configuración del bot**, asígnele un nombre que indique su finalidad, como **KendraTestBot**, y una descripción opcional. El nombre debe ser exclusivo en su cuenta. 

   1.  En la sección **Permisos de IAM**, seleccione **Crear un rol con permisos básicos de Amazon Lex**. Esto creará un rol de [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) con los permisos que Amazon Lex V2 necesita para ejecutar el bot. 

   1.  En la sección **Ley de Protección de la Privacidad en Línea para Niños (COPPA)**, seleccione **No**. 

   1.  En las secciones **Tiempo de espera de la sesión inactiva** y **Configuración avanzada**, deje la configuración predeterminada y seleccione **Siguiente**. 

   1.  Ahora se encuentra en la sección **Añadir idioma al bot**. En el menú de **Interacción por voz**, seleccione **Ninguna. Esta es solo una aplicación basada en texto**. No cambie la configuración predeterminada del resto de los campos. 

   1.  Seleccione **Listo**. Amazon Lex V2 crea su bot y una intención predeterminada llamada **NewIntent**, y lo lleva a la página para configurar esta intención. 

Para compilar un bot correctamente, debe crear al menos una intención independiente de la `AMAZON.FallbackIntent` y la `AMAZON.KendraSearchIntent`. Esta intención es necesaria para compilar el bot de Amazon Lex V2, pero no se usa para la respuesta de preguntas frecuentes. Esta intención debe contener al menos un ejemplo de enunciado y el enunciado no debe aplicarse a ninguna de las preguntas que haga el cliente.

**Para crear la intención necesaria:**

1.  En la sección **Detalles de la intención**, dele un nombre a la intención, como **RequiredIntent**. 

1.  En la sección **Ejemplos de enunciados**, escriba un enunciado en el cuadro situado junto a **Añadir enunciado**, como **Required utterance**. A continuación, seleccione **Añadir enunciado**. 

1. Seleccione **Guardar intención**.

Cree la intención para buscar un índice de Amazon Kendra y los mensajes de respuesta que debe devolver.

**Para crear un AMAZON. KendraSearchIntent mensaje de intención y respuesta:**

1.  Seleccione **Volver a la lista de intenciones** en el panel de navegación para volver a la página **Intenciones** de su bot. Seleccione **Añadir intención** y seleccione **Usar intención integrada** en el menú desplegable. 

1.  En el cuadro que aparece, seleccione el menú en **Intención integrada**. En la barra de búsqueda, escriba **AMAZON.KendraSearchIntent** y selecciónela de la lista. 

1.  Asigne a la entrada un nombre, como **KendraSearchIntent**. 

1.  En el menú desplegable **Índice de Amazon Kendra**, seleccione el índice donde desee buscar la intención. El índice que creó en la sección **Requisitos previos** debería estar disponible. 

1.  Seleccione **Agregar**. 

1. En el editor de intenciones, desplácese hacia abajo hasta la sección **Cumplimentación**, seleccione la flecha derecha para expandir la sección y añada el siguiente mensaje en el cuadro que aparece debajo de **En caso de cumplimentación exitoso**: 

   ```
   I found a link to a document that could help you: ((x-amz-lex:kendra-search-response-document-link-1)).
   ```  
![\[Añadir la respuesta de cumplimiento\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/kendra-faqbot/kendra-fulfillment-response.gif)

    Para obtener más información sobre la respuesta de búsqueda de Amazon Kendra, consulte [Usar la respuesta de búsqueda](https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html#kendra-search-response). 

1. Seleccione **Guardar intención** y, luego, **Compilar** para generar el bot. Cuando el bot esté listo, el banner de la parte superior de la pantalla se volverá verde y mostrará un mensaje de confirmación. 

Por último, utilice la ventana de prueba de la consola para probar las respuestas del bot.

**Para probar el bot de preguntas frecuentes:**

1.  Una vez que el bot se haya creado correctamente, seleccione **Probar**. 

1.  Introduzca **What is Amazon Kendra?** en la ventana de prueba de la consola. Compruebe que el bot responde con un enlace. 

1.  Para obtener más información sobre la configuración`AMAZON.KendraSearchIntent`, consulte [https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html](https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html)y [KendraConfiguration](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_KendraConfiguration.html). 

# AMAZON.PauseIntent
<a name="built-in-intent-pause"></a>

Responde a las palabras y frases que permiten al usuario pausar una interacción con un bot para poder volver a ella más adelante. La aplicación o función de Lambda necesita guardar los datos de intención en las variables de sesión, o bien, debe usar la operación [GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html) para recuperar los datos de intención cuando reanude la intención actual.

Enunciados comunes:
+ Pause
+ Pausar eso

# AMAZON.QnAIntent
<a name="built-in-intent-qna"></a>

**nota**  
Para aprovechar las características de la IA generativa debe cumplir los siguientes requisitos previos  
Para obtener información sobre el precio de uso de Amazon Bedrock, consulte [Precios de Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/).
Active las capacidades de IA generativa para la configuración regional de su bot. Para ello, siga los pasos que se indican en [Optimización de la creación y el rendimiento de bots Lex V2 con IA generativa](generative-features.md). 

Responde a las preguntas de los clientes mediante FM de Amazon Bedrock para buscar y resumir respuestas a preguntas frecuentes. Esta intención se activa cuando un enunciado no está clasificado en ninguna de las otras intenciones presentes en el bot. Tenga en cuenta que esta intención no se activará en el caso de enunciados omitidos cuando se obtenga un valor de slot. Una vez reconocida, la `AMAZON.QnAIntent` utiliza el modelo de Amazon Bedrock especificado para buscar en la base de conocimiento de Amazon Bedrock configurada y responder a la pregunta del cliente.

**aviso**  
No se puede utilizar la `AMAZON.QnAIntent` y la `AMAZON.KendraSearchIntent` en la misma configuración regional del bot.

Están disponibles las siguientes opciones de almacén de conocimientos. Debe haber creado ya el almacén de conocimientos e indexado los documentos que contiene.
+ OpenSearch Dominio de servicio: contiene documentos indexados. Para crear un dominio, sigue los pasos que se indican en [Creación y gestión de dominios OpenSearch de Amazon Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html).
+ Índice de Amazon Kendra: contiene documentos de preguntas frecuentes indexados. Para crear un índice de Amazon Kendra, siga los pasos que se indican en [Crear un índice](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html).
+ Base de conocimiento de Amazon Bedrock: contiene orígenes de datos indexados. Para configurar una base de conocimiento de Amazon Bedrock, siga los pasos que se indican en [Creación de una base de conocimiento](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html).

Si selecciona esta intención, configure los siguientes campos y, a continuación, seleccione **Agregar** para agregar la intención.
+ **Modelo de Bedrock**: elija el proveedor y el modelo fundacional que desea utilizar para esta intención. Asegúrese de comprobar los últimos modelos disponibles y el calendario de obsolescencia, y planifique las migraciones en consecuencia. Para obtener más información, consulte el ciclo de vida [del modelo](https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html#versions-for-eol). 
+ **Almacén de conocimientos**: elija el origen desde el que desea que el modelo extraiga información para responder a las preguntas de los clientes. Estos son los estados disponibles:
  + **OpenSearch**— Configure los siguientes campos.
    + **Punto de conexión del dominio**: proporciona el punto de conexión del dominio que creó para el dominio o que le proporcionaron después de crear el dominio.
    + **Nombre del índice**: proporcione el índice para realizar búsquedas. Para obtener más información, consulta [Indexación de datos en Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/indexing.html).
    + Elija cómo desea devolver la respuesta al cliente.
      + **Respuesta exacta**: cuando esta opción está habilitada, el valor del campo Respuesta se usa tal como está para la respuesta del bot. El modelo fundacional configurado de Amazon Bedrock se utiliza para seleccionar el contenido exacto de la respuesta tal como está, sin síntesis ni resumen del contenido. Especifique el nombre de los campos de pregunta y respuesta que se configuraron en la OpenSearch base de datos.
      + **Incluir campos**: devuelve una respuesta generada por el modelo mediante los campos que especifique. Especifique el nombre de un máximo de cinco campos que se configuraron en la OpenSearch base de datos. Utilice punto y coma (;) para separar campos.
  + **Amazon Kendra**: configure los siguientes campos.
    + **Índice de Amazon Kendra**: seleccione el índice de Amazon Kendra que desea que busque su bot.
    + **Filtro de Amazon Kendra**: para crear un filtro, selecciona esta casilla. Para obtener más información sobre el formato JSON del filtro de búsqueda de Amazon Kendra, consulte [Usar atributos de documentos para filtrar los resultados de búsqueda](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering).
    + **Respuesta exacta**: para permitir que el bot devuelva la respuesta exacta de Amazon Kendra, seleccione esta casilla. De lo contrario, el modelo de Amazon Bedrock que seleccione generará una respuesta en función de los resultados.
**nota**  
Para utilizar esta función, primero debe añadir las preguntas frecuentes a su índice siguiendo los pasos que se indican en [Añadir preguntas frecuentes (FAQs) a un índice](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html).
  + **Base de conocimiento de Amazon Bedrock**: si elige esta opción, especifique el ID de la base de conocimiento de Amazon Bedrock. Puede buscar el ID en la página de detalles de la base de conocimiento de Amazon Bedrock en la consola o enviando una solicitud [GetKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBase.html).
    + **Respuesta exacta**: cuando esta opción está habilitada, el valor del campo Respuesta se usa tal como está para la respuesta del bot. El modelo fundacional configurado de Amazon Bedrock se utiliza para seleccionar el contenido exacto de la respuesta tal como está, sin síntesis ni resumen del contenido. Para utilizar la respuesta exacta en la base de conocimientos de Amazon Bedrock, debe hacer lo siguiente:
      + Cree archivos JSON individuales y que cada archivo contenga un campo de respuesta con la respuesta exacta que debe devolverse al usuario final.
      + Al indexar estos documentos en la base de conocimientos de Bedrock, establezca la **Estrategia de fragmentación** en **No fragmentar**.
      + Defina el campo de respuesta en Amazon Lex V2 como el campo de respuesta en Bedrock Knowledge Base.

Las respuestas del Qn se AIntent almacenarán en los atributos de la solicitud, tal y como se muestra a continuación:
+ `x-amz-lex:qnA-search-response`— La respuesta del Qn AIntent a la pregunta o al enunciado.
+ `x-amz-lex:qnA-search-response-source`: señala el documento o la lista de documentos utilizados para generar la respuesta.
+ `x-amz-lex:qna-additional-context`— El contexto adicional utilizado por el Qn AIntent para generar la respuesta.

**Configuraciones del modelo adicionales**

Cuando AIntent se invoca Amazon.qn, utiliza una plantilla de mensaje predeterminada que combina las instrucciones y el contexto con la consulta del usuario para crear el mensaje que se envía al modelo para generar la respuesta. También puede proporcionar una petición personalizada o actualizar la predeterminada para que se ajuste a sus necesidades.

Puede diseñar la plantilla de petición con las siguientes herramientas:

**Marcadores de posición rápidos**: variables predefinidas en Amazon.qn AIntent para Amazon Bedrock que se rellenan dinámicamente en tiempo de ejecución durante la llamada a Bedrock. En la petición del sistema, puede ver estos marcadores de posición rodeados por el símbolo `$`. En la siguiente lista se describen los marcadores de posición que puede utilizar.


| Variable | Se sustituye por | Modelo | ¿Obligatorio? | 
| --- | --- | --- | --- | 
| \$1query\$1results\$1 | Los resultados recuperados para la consulta del usuario del almacén de conocimientos. | Modelo de roca madre seleccionado | Sí | 
| \$1output\$1instruction\$1 | Instrucciones subyacentes para formatear la generación de respuestas y las citas. Depende del modelo. Si define sus propias instrucciones de formato, le sugerimos que elimine este marcador de posición.  | Modelo de roca madre seleccionado | No | 
| \$1contexto\$1adicional\$1 | El contexto adicional utilizado por el Qn para generar la respuesta AIntent  | Modelo de roca madre seleccionado | No | 
| \$1locale\$1 | El idioma en el que el bot responderá a las consultas de los clientes | Modelo Bedrock seleccionado | No | 

La **petición predeterminada** que se utiliza es:

```
$query_results$

$additional_context$

Please only follow the instructions in <instruction> tags below.
<instruction>
Given the conversation history, <additional_context> and <Context>:
(1) first, identify the user query intent and classify it as one of the categories: FAQ_QUERY, OTHER_QUERY, GIBBERISH, GREETINGS, AFFIRMATION, CHITCHAT, or MISC;
(2) second, if the intent is FAQ_QUERY, predict the most relevant grounding passage(s) by providing the passage id(s) or output CANNOTANSWER;
(3) then, generate a concise, to-the-point FAQ-style response in $locale$ locale ONLY USING the grounding content in <Context> and <additional_context>; or output CANNOTANSWER if the user query/request cannot be directly answered with the grounding content. DO NOT mention about the grounding passages such as ids or other meta data; do not create new content not presented in <Context>. Do NOT respond to query that is ill-intented or off-topic;
(4) lastly, provide the confidence level of the above prediction as LOW, MID or HIGH.
</instruction>

$output_instruction$
```

**\$1output\$1instruction\$1** se sustituye por:

```
Give your final response in the following form:
<answer>
<intent>FAQ_QUERY or OTHER_QUERY or GIBBERISH or GREETINGS or AFFIRMATION or CHITCHAT or MISC</intent>
<text>a concise FAQ-style response or CANNOTANSWER</text>
<passage_id>passage_id or CANNOTANSWER</passage_id>
<confidence>LOW or MID or HIGH</confidence>
</answer>
```

**nota**  
Si decide no utilizar las instrucciones predeterminadas, cualquier resultado que proporcione el LLM se devolverá tal cual al usuario final.  
Las instrucciones de salida deben contener etiquetas <text></text> y <passageId></passageId> e instrucciones para que el LLM devuelva los passageIds a fin de proporcionar la respuesta y la atribución de la fuente.

**Soporte contextual adicional a través de los atributos de la sesión**

Puede transferir contexto adicional `AMAZON.QnAIntent` al tiempo de ejecución mediante el atributo session`x-amz-lex:qna-additional-context`. Esto le permite proporcionar información complementaria que el modelo puede utilizar junto con los resultados del almacén de conocimientos al generar una respuesta. El contexto adicional se inserta en la plantilla de solicitud a través del `$additional_context$` marcador de posición.

**Ejemplo:**

```
{"sessionAttributes": {"x-amz-lex:qna-additional-context":"Our support hours are Monday through Friday, 8AM-8PM EST"}}
```

**Compatibilidad con el filtrado de metadatos de la base de conocimiento de Amazon Bedrock con atributos de sesión**

Puede pasar los filtros de metadatos de la base de conocimiento de Amazon Bedrock como parte del atributo de sesión `x-amz-lex:bkb-retrieval-filter`.

```
             {"sessionAttributes":{"x-amz-lex:bkb-retrieval-filter":"{\"equals\":{\"key\":\"insurancetype\",\"value\":\"farmers\"}}      
```

**nota**  
Debe utilizar la base de conocimientos de Amazon Bedrock como almacén de datos para AIntent que Qn utilice este filtro. Para obtener más información, consulte [https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html#:~:text=Metadata%20and%20filtering](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html#:~:text=Metadata%20and%20filtering)

**Configuraciones de inferencia**

Puede definir las configuraciones de inferencia que se utilizarán al realizar la llamada a LLM mediante el atributo de sesión:
+ temperatura: tipo Integer
+ topP
+ maxTokens

**Ejemplo:**

```
         {"sessionAttributes":{"x-amz-lex:llm-text-inference-config":"{\"temperature\":0,\"topP\":1,\"maxTokens\":200}"}}      
```

**Las barreras de protección para Bedrock son compatibles con el tiempo de compilación y los atributos de sesión**
+ Al usar la consola en el momento de la compilación, proporcione el y el GuardrailsIdentifier . GuardrailsVersion Obtenga más información en la sección Additional Model Configurations.
+ Mediante los atributos de sesión: también puede definir la configuración de las barreras de protección mediante los atributos de sesión: `x-amz-lex:bedrock-guardrails-identifier` y `x-amz-lex:bedrock-guardrails-version`.

Para obtener más información sobre el uso de barreras de protección de Bedrock, consulte [Guardrails](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html).

# AMAZON.QnAIntent (multiple use support)
<a name="built-in-intent-qna-multi"></a>

Puede elegir tener varios Amazon.qn AIntents dentro de una configuración regional. Amazon Lex V2 admite hasta 5 Amazon.QN AIntents dentro de una configuración regional de bots. 

Amazon.qn se AIntent puede activar si se cumple uno de los siguientes casos:
+ Si la configuración regional de un bot contiene solo 1 Amazon.qn AIntent y esa intención no contiene expresiones de muestra, se activa cuando una expresión no está clasificada en ninguna de las otras intenciones presentes en el bot. Esta intención se activa cuando un enunciado no está clasificado en ninguna de las otras intenciones presentes en el bot. Tenga en cuenta que esta intención no se activará en el caso de enunciados omitidos cuando se obtenga un valor de slot.
**nota**  
Si la respuesta del FM no es satisfactoria o falla la llamada al FM, Amazon Lex V2 invoca la `AMAZON.FallbackIntent`.
+ Si Amazon.qn AIntent contiene ejemplos de expresiones, solo se activa cuando Amazon Lex V2 reconoce que el usuario quiere iniciar esa intención en función de las entradas del usuario.
**nota**  
Si la respuesta del FM no es satisfactoria o falla la llamada al FM, Amazon Lex V2 invoca el siguiente paso al fallo, definido en el bloque de cumplimiento.

**nota**  
Si `botLocale` tiene más de 1 Amazon.QNAIntent, cada Amazon.QN AIntent debe tener al menos un ejemplo de expresión.

# AMAZON.QinConnectIntent
<a name="built-in-intent-qinconnect"></a>

**nota**  
Para utilizar las capacidades de IA generativa con Amazon Q In Connect, debe cumplir los siguientes requisitos previos:  
Diríjase a la consola de Amazon Connect y cree su instancia; si aún no tiene una, consulte [Comenzar a utilizar Amazon Connect](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-get-started.html).
Habilita Amazon Q en Connect para tu instancia; consulta [Habilitar Amazon Q en Connect para tu instancia](https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html).

AMAZON. QinConnectIntent responde a las preguntas de los clientes mediante la evolución mejorada por LLM de Amazon Connect Wisdom, que ofrece recomendaciones en tiempo real para ayudar a los clientes y agentes del centro de contacto a resolver los problemas de los clientes de forma rápida y precisa. Esta intención se activa cuando un enunciado no está clasificado en ninguna de las otras intenciones presentes en el bot. Tenga en cuenta que esta intención no se activará en el caso de enunciados omitidos cuando se obtenga un valor de slot. Una vez reconocido, el AMAZON. QinConnectIntent, utiliza el dominio Q in Connect especificado para buscar en la base de conocimientos de Amazon Bedrock configurada y responder a la pregunta del cliente. 

**nota**  
No puedes usar AMAZON. QinConnectIntent junto con Amazon.qn AIntent en la misma configuración regional del bot.
Si seleccionas otro idioma además del inglés estadounidense, debes personalizar las instrucciones del autoservicio (`SELF_SERVICE_PRE_PROCESSING`y`SELF_SERVICE_ANSWER_GENERATION`) para que respondan en el idioma especificado. Para obtener más información sobre cómo personalizar tu mensaje, consulta Cómo [personalizar Amazon Q en Connect](https://docs.aws.amazon.com/connect/latest/adminguide/customize-q.html#ai-prompts-customize-q).

Si seleccionas esta intención, tendrás que configurar los siguientes campos y, a continuación, seleccionar **Guardar intención** para añadir la intención al bot.
+ Configuración de Amazon Q In Connect: proporcione el nombre de recurso de Amazon (ARN) del asistente Amazon Q in Connect. Patrón de ARN del asistente: .`^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$>`

Las respuestas del se QinConnectIntent almacenarán en los atributos de la solicitud, tal y como se muestra a continuación:
+ `x-amz-lex:q-in-connect-response`— La respuesta QinConnectIntent a la pregunta o al enunciado.

**Atributos de sesión devueltos desde QinConnectIntent**

La interacción con la QinConnect intención proporciona datos adicionales sobre la conversación a través de los atributos de la sesión. 

1. `x-amz-lex:q-in-connect:session-arn`— Un identificador único para la sesión creada con Amazon Q In Connect durante la conversación. 

1. `x-amz-lex:q-in-connect:conversation-status`— El estado actual de la conversación con el QinConnect asistente o el dominio. Hay tres valores posibles para este estado:
   + `CLOSED`
   + `READY`
   + `PROCESSING`

1. `x-amz-lex:q-in-connect:conversation-status-reason`— Proporciona el motivo del estado actual informado con el atributo anterior. De lo contrario, las razones posibles son las siguientes:
   + `SUCCESS`— Indica que al cliente no le queda nada que preguntar y que la pregunta se ha respondido correctamente.
   + `FAILED`— Indica un error al responder a la pregunta del cliente. En su mayoría, se deben a la falta de comprensión de la pregunta del cliente.
   + `REJECTED`: indica que el asistente se niega a responder a la pregunta del cliente y recomienda que la pregunta se aborde fuera de la interacción con el bot, por ejemplo, hablando con una persona o un agente, para obtener más información.

**nota**  
Cuando QinConnectIntent se invoca un bot con durante las interacciones con los clientes impulsadas por una instancia de Amazon Connect, es necesario crear el arn de sesión y pasarlo desde la instancia de Amazon Connect. Para crear una sesión, Amazon Connect Flows se puede configurar con Amazon Q en el paso Connect.

**Limitaciones**
+ No puede utilizar AMAZON. QinConnectIntent junto con intenciones sin expresiones específicas, como AMAZON.QN, AMAZON. AIntent BedrockAgentIntent en la misma configuración regional del bot.
+ Cuando QinConnectIntent se invoca un bot con durante una interacción con un cliente impulsada por una instancia de Amazon Connect, es necesario crear el arn de sesión y pasarlo desde la instancia de Amazon Connect. Para crear una sesión, Amazon Connect Flows se puede configurar con el paso Amazon Q In Connect.
+ No puede haber más de un AMAZON. QinConnectIntent por configuración regional del bot.
+ El dominio Amazon Q in Connect utilizado con AMAZON. QinConnectIntent debe estar en la misma región de AWS que el bot Amazon Lex V2.

**Permisos**

Si el QinConnect Intent se utiliza en un bot de Amazon Lex V2 y el bot utiliza un rol vinculado a servicios (SLR), el servicio Amazon Lex V2 tiene los permisos para actualizar las políticas correspondientes del rol e integrarlo con el asistente Q in Connect. Si el bot utiliza una función de IAM personalizada, el usuario tendrá que añadir estos permisos manualmente a su función de IAM.

El rol vinculado al servicio se actualizará con los siguientes permisos si se añade la QinConnect intención. Se agregará una nueva política de QinConnect acceso:

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "QInConnectAssistantPolicy",
            "Action": [
                "wisdom:CreateSession",
                "wisdom:GetAssistant"
            ],
            "Resource": [
                "arn:aws:wisdom:*:accountId:assistant/assistantId",
                "arn:aws:wisdom:*:accountId:assistant/assistantId/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "QInConnectSessionsPolicy",
            "Action": [
                "wisdom:SendMessage",
                "wisdom:GetNextMessage"
            ],
            "Resource": [
                "arn:aws:wisdom:*:accountId:session/assistantId/*"
            ]
        },
        {
            "Sid": "QInConnectKmsCMKPolicy",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:region:accountId:key/keyId"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "accountId",
                    "kms:ViaService": "wisdom.region.amazonaws.com",
                    "kms:EncryptionContext:aws:wisdom:assistant:arn": ["arn:aws:wisdom:region:accountId:assistant/assistantId"]
                }
            }
        }
    ]
}
```

**nota**  
La `QInConnectKmsCMKPolicy` declaración solo es obligatoria si utiliza una clave de KMS gestionada por el cliente con el asistente Amazon Q in Connect.

**Política de confianza**

```
{
    "Effect": "Allow",
    "Sid": "LexV2InternalTrustPolicy",
    "Principal": {
        "Service": "lexv2.aws.internal"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "accountId"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:lex:*:accountId:bot-alias/botId/*"
        }
    }
}
```

# AMAZON.RepeatIntent
<a name="built-in-intent-repeat"></a>

Responde a palabras y frases que permiten al usuario repetir el mensaje anterior. La aplicación debe usar una función de Lambda para guardar la información de intención anterior en las variables de sesión, o bien, debe usar la operación [GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html) para obtener la información de intención anterior.

Enunciados comunes:
+ repetir
+ dilo otra vez
+ repite

# AMAZON.ResumeIntent
<a name="built-in-intent-resume"></a>

Responde a palabras y frases que permiten al usuario reanudar un intento previamente pausado. La aplicación o función de Lambda debe gestionar la información necesaria para reanudar la intención anterior.

Enunciados comunes:
+ resumir
+ continuar
+ seguir adelante

# AMAZON.StartOverIntent
<a name="built-in-intent-start-over"></a>

Responde a palabras y frases que permiten al usuario dejar de procesar la intención actual y volver a empezar desde el principio. Puede utilizar la función de Lambda o la operación `PutSession` para volver a obtener el valor del primer slot.

Enunciados comunes:
+ empezar de nuevo
+ reiniciar
+ empezar de nuevo

# AMAZON.StopIntent
<a name="built-in-intent-stop"></a>

Responde a las palabras y frases que indican que el usuario quiere dejar de procesar la intención actual y finalizar la interacción con un bot. La aplicación o función de Lambda debe borrar todos los atributos y valores de tipo de slot existentes y, a continuación, finalizar la interacción.

Enunciados comunes:
+ parar
+ apagar
+ calla