

Aviso de fin de soporte: el 15 de septiembre de 2025, AWS dejaremos de ofrecer soporte para Amazon Lex V1. Después del 15 de septiembre de 2025, ya no podrá acceder a la consola de Amazon Lex V1 ni a los recursos de Amazon Lex V1. Si utiliza Amazon Lex V2, consulte en su lugar la [guía Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html). 

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.

# Paso 2 (opcional): revisión de los detalles del flujo de información (consola)
<a name="gs-bp-details-two-runtime-apis"></a>

En esta sección se explica el flujo de información entre un cliente y Amazon Lex para cada entrada de usuario en nuestra conversación de ejemplo. 

En el ejemplo se utiliza la ventana de pruebas de la consola para mostrar la conversación con el bot.

**Visualización de la ventana de pruebas de Amazon Lex**

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

1. Elija el bot que quiera probar.

1. En la parte derecha de la consola, elija **Probar bot de chat**.

Para ver el flujo de información de contenido hablado o escrito, elija el tema correspondiente. 

**Topics**
+ [Paso 2a (opcional): revisión de los detalles del flujo de información escrita (consola)](gs-bp-details-postcontent-flow.md)
+ [Paso 2b (opcional): revisión de los detalles del flujo de información escrita (consola)](gs-bp-details-part1.md)

# Paso 2a (opcional): revisión de los detalles del flujo de información escrita (consola)
<a name="gs-bp-details-postcontent-flow"></a>

En esta sección se explica el flujo de información entre el cliente y Amazon Lex cuando el cliente utiliza la voz para enviar solicitudes. Para obtener más información, consulte [PostContent](API_runtime_PostContent.md). 

1. El usuario dice: Me gustaría pedir unas flores.

   1. El cliente (la consola) envía la siguiente solicitud [PostContent](API_runtime_PostContent.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1
      x-amz-lex-session-attributes: "e30=" 
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1"
      Accept: "audio/mpeg"
      
      
      Request body
      input stream
      ```

      Tanto la URI de la solicitud como el cuerpo proporcionan información a Amazon Lex:
      + URI de la solicitud: proporciona el nombre del bot (`OrderFlowers`), su alias (`$LATEST`) y el nombre del usuario (una cadena aleatoria que identifica al usuario). `content` indica que se trata de una solicitud de la API `PostContent` (no una solicitud `PostText`).
      + Encabezados de solicitudes
        + `x-amz-lex-session-attributes`: el valor con codificación base64 representa “\$1\$1”. Cuando el cliente realiza la primera solicitud, no existen atributos de la sesión. 
        + `Content-Type`: refleja el formato de audio.
      + Cuerpo de la solicitud: la transmisión de audio de la entrada del usuario ("Me gustaría pedir unas flores.").
**nota**  
En caso de que el usuario elija enviar texto ("Me gustaría pedir unas flores") a la API `PostContent` en lugar de hablar, el cuerpo de la solicitud será la entrada del usuario. El encabezado `Content-Type` se fija en consecuencia:  

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "text/plain; charset=utf-8"
      Accept: accept
      
      Request body
      input stream
      ```

   1. Amazon Lex deduce la intención (`OrderFlowers`) a partir de la transmisión de entrada. A continuación, elige uno de los slots de la intención (en este caso, `FlowerType`) y una de sus preguntas para obtener valores y, luego, envía una respuesta con los siguientes encabezados: 

      ```
      x-amz-lex-dialog-state:ElicitSlot
      x-amz-lex-input-transcript:I would like to order some flowers.
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:What type of flowers would you like to order?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slot-to-elicit:FlowerType
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjpudWxsLCJQaWNrdXBEYXRlIjpudWxsfQ==
      ```

      Los valores de encabezado proporcionan la siguiente información:
      + `x-amz-lex-input-transcript`: proporciona la transcripción del audio (entrada del usuario) de la solicitud
      + `x-amz-lex-message`: proporciona la transcripción del audio que devuelve Amazon Lex en la respuesta
      + `x-amz-lex-slots`: la versión de la codificación de base64 de los slots y los valores:

        ```
        {"PickupTime":null,"FlowerType":null,"PickupDate":null}
        ```
      + `x-amz-lex-session-attributes`: la versión de la codificación de base64 de los atributos de la sesión (\$1\$1)

      El cliente reproduce el audio en el cuerpo de la respuesta.

1. El usuario dice: rosas

   1. El cliente (la consola) envía la siguiente solicitud [PostContent](API_runtime_PostContent.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" 
      Accept: "audio/mpeg"
      
      
      Request body
      input stream ("roses")
      ```

      El cuerpo de la solicitud es la transmisión de audio de la entrada del usuario (rosas). No hay `sessionAttributes`.

   1. Amazon Lex interpreta la transmisión de entrada en el contexto de la intención actual (recuerda que ha solicitado al usuario información sobre la ranura `FlowerType`). En primer lugar, Amazon Lex actualiza el valor de ranura de la intención actual. Después, elige otro slot (`PickupDate`), junto con uno de los mensajes de pregunta (¿Cuándo desea pasar a por las rosas?) y devuelve una respuesta con los siguientes encabezados:

      ```
      x-amz-lex-dialog-state:ElicitSlot
      x-amz-lex-input-transcript:roses
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:When do you want to pick up the roses?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slot-to-elicit:PickupDate
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6bnVsbH0=
      ```

      Los valores de encabezado proporcionan la siguiente información:
      + `x-amz-lex-slots`: la versión de la codificación de base64 de los slots y los valores:

        ```
        {"PickupTime":null,"FlowerType":"roses","PickupDate":null}
        ```
      + `x-amz-lex-session-attributes`: la versión de la codificación de base64 de los atributos de la sesión (\$1\$1)

      El cliente reproduce el audio en el cuerpo de la respuesta.

1. El usuario dice: mañana

   1. El cliente (la consola) envía la siguiente solicitud [PostContent](API_runtime_PostContent.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1"
      Accept: "audio/mpeg"
      
      
      Request body
      input stream ("tomorrow")
      ```

      El cuerpo de la solicitud es la transmisión de audio de la entrada del usuario ("mañana"). No hay `sessionAttributes`.

   1. Amazon Lex interpreta la transmisión de entrada en el contexto de la intención actual (recuerda que ha solicitado al usuario información sobre la ranura `PickupDate`). Amazon Lex actualiza el valor de ranura (`PickupDate`) de la intención actual. A continuación, elige otro slot para obtener el valor (`PickupTime`) y una de las preguntas para obtener valores (¿Cuándo desea recoger las rosas el 18/03/2017?), y devuelve una respuesta con los siguientes encabezados:

      ```
      x-amz-lex-dialog-state:ElicitSlot
      x-amz-lex-input-transcript:tomorrow
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:When do you want to pick up the roses on 2017-03-18?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slot-to-elicit:PickupTime
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
      x-amzn-RequestId:3a205b70-0b69-11e7-b447-eb69face3e6f
      ```

      Los valores de encabezado proporcionan la siguiente información:
      + `x-amz-lex-slots`: la versión de la codificación de base64 de los slots y los valores:

        ```
        {"PickupTime":null,"FlowerType":"roses","PickupDate":"2017-03-18"}
        ```
      + `x-amz-lex-session-attributes`: la versión de la codificación de base64 de los atributos de la sesión (\$1\$1)

      El cliente reproduce el audio en el cuerpo de la respuesta.

1. El usuario dice: 18:00 h

   1. El cliente (la consola) envía la siguiente solicitud [PostContent](API_runtime_PostContent.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "text/plain; charset=utf-8"
      Accept: "audio/mpeg"
      
      
      Request body
      input stream ("6 pm")
      ```

      El cuerpo de la solicitud es la transmisión de audio de la entrada del usuario ("18:00 h"). No hay `sessionAttributes`.

   1. Amazon Lex interpreta la transmisión de entrada en el contexto de la intención actual (recuerda que ha solicitado al usuario información sobre la ranura `PickupTime`). Primero actualiza el valor de slot de la intención actual. 

      Ahora Amazon Lex detecta que tiene información para todas las ranuras. Sin embargo, la intención `OrderFlowers` se ha configurado con un mensaje de confirmación. Por lo tanto, Amazon Lex necesita una confirmación explícita del usuario antes de cumplir con la intención. Envía una respuesta con los siguientes encabezados para solicitar la confirmación antes de encargar las flores:

      ```
      x-amz-lex-dialog-state:ConfirmIntent
      x-amz-lex-input-transcript:six p. m.
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-message:Okay, your roses will be ready for pickup by 18:00 on 2017-03-18.  Does this sound okay?
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
      x-amzn-RequestId:083ca360-0b6a-11e7-b447-eb69face3e6f
      ```

      Los valores de encabezado proporcionan la siguiente información:
      + `x-amz-lex-slots`: la versión de la codificación de base64 de los slots y los valores:

        ```
        {"PickupTime":"18:00","FlowerType":"roses","PickupDate":"2017-03-18"}
        ```
      + `x-amz-lex-session-attributes`: la versión de la codificación de base64 de los atributos de la sesión (\$1\$1)

      El cliente reproduce el audio en el cuerpo de la respuesta.

1. El usuario dice: Sí

   1. El cliente (la consola) envía la siguiente solicitud [PostContent](API_runtime_PostContent.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/content HTTP/1.1
      x-amz-lex-session-attributes: "e30="
      Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1"
      Accept: "audio/mpeg"
      
      
      Request body
      input stream ("Yes")
      ```

      El cuerpo de la solicitud es la transmisión de audio de la entrada del usuario ("Sí"). No hay `sessionAttributes`.

   1. Amazon Lex interpreta la transmisión de entrada y entiende que el usuario desea continuar con el pedido. La intención `OrderFlowers` se ha configurado con `ReturnIntent` como la actividad de cumplimiento. Esto provoca que Amazon Lex devuelva todos los datos de la intención al cliente. Amazon Lex devuelve una respuesta con lo siguiente: 

      

      ```
      x-amz-lex-dialog-state:ReadyForFulfillment
      x-amz-lex-input-transcript:yes
      x-amz-lex-intent-name:OrderFlowers
      x-amz-lex-session-attributes:e30=
      x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
      ```

      El encabezado de la respuesta `x-amz-lex-dialog-state` está configurado en `ReadyForFulfillment`. Ahora el cliente podrá llevar a cabo la intención.

1. Ahora, pruebe de nuevo el bot. Para establecer un nuevo contexto (usuario), elija el enlace **Clear** en la consola. Proporcione datos para la intención `OrderFlowers` e incluya algunos datos no válidos. Por ejemplo: 
   + Jazmín como tipo de flor (este tipo de flor no se admite)
   + Ayer como el día en que desea recoger las flores

   Observe que el bot acepta estos valores, ya que no tiene ningún código para inicializar y validar los datos de usuario. En la siguiente sección, añadirá una función de Lambda para que lo haga. Tenga en cuenta lo siguiente en relación con la función de Lambda:
   + Valida los datos de slot después de cada entrada de usuario. Gestiona la intención al final. Es decir, el bot procesa el pedido de flores y devuelve un mensaje al usuario en lugar de simplemente devolver los datos de slot al cliente. Para obtener más información, consulte [Uso de funciones de Lambda](using-lambda.md).
   + También establece los atributos de la sesión. Para obtener más información acerca de los atributos de sesión, consulte [PostText](API_runtime_PostText.md). 

      Una vez completada la sección Introducción, puede realizar los ejercicios adicionales ([Ejemplos adicionales: creación de bots de Amazon Lex](additional-exercises.md)). [Reserva de viaje](ex-book-trip.md) usa los atributos de sesión para compartir información entre intenciones y entablar una conversación dinámica con el usuario.

**Paso siguiente**  
[Paso 3: creación de una función de Lambda (consola)](gs-bp-create-lambda-function.md)

# Paso 2b (opcional): revisión de los detalles del flujo de información escrita (consola)
<a name="gs-bp-details-part1"></a>

En esta sección se explica el flujo de información entre el cliente y Amazon Lex en el que el cliente utiliza la API `PostText` para enviar solicitudes. Para obtener más información, consulte [PostText](API_runtime_PostText.md). 

1. El usuario escribe: Me gustaría pedir unas flores

   1. El cliente (la consola) envía la siguiente solicitud [PostText](API_runtime_PostText.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "I would like to order some flowers",
          "sessionAttributes": {}
      }
      ```

      Tanto la URI de la solicitud como el cuerpo proporcionan información a Amazon Lex:
      + URI de la solicitud: proporciona el nombre del bot (`OrderFlowers`), el alias del bot (`$LATEST`) y el nombre de usuario (una cadena aleatoria que identifica al usuario). El `text` de cola indica que se trata de una solicitud de API `PostText` (no `PostContent`).

         
      + Cuerpo de la solicitud: incluye la entrada del usuario (`inputText`). No hay `sessionAttributes`. Cuando el cliente realiza la primera solicitud, no existen atributos de la sesión. La función Lambda los inicia más adelante.

   1. Amazon Lex deduce la intención (`OrderFlowers`) a partir de `inputText`. Esta intención no tiene ningún enlace de código (es decir, funciones de Lambda) para la inicialización y validación de la entrada del usuario o el cumplimiento. 

      Amazon Lex elige una de las ranuras de la intención (`FlowerType`) para obtener el valor. También selecciona una de las preguntas para obtener valores para el slot (que forman parte de la configuración de la intención) y, a continuación, envía la siguiente respuesta al cliente. La consola muestra el mensaje en la respuesta al usuario.  
![\[\]](http://docs.aws.amazon.com/es_es/lex/latest/dg/images/gs-1-details-10.png)

      El cliente muestra el mensaje en la respuesta.

1. El usuario escribe: rosas

   1. El cliente (la consola) envía la siguiente solicitud [PostText](API_runtime_PostText.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "roses",
          "sessionAttributes": {}
      }
      ```

      El `inputText` del cuerpo de la solicitud proporciona la entrada del usuario. No hay `sessionAttributes`.

   1. En primer lugar, Amazon Lex interpreta `inputText` en el contexto de la intención actual (el servicio recuerda que ha solicitado al usuario información sobre la ranura `FlowerType`). Amazon Lex actualiza primero el valor del slot de la intención actual y elige otro slot (`PickupDate`) junto con uno de los mensajes de pregunta (¿Qué día desea recoger las rosas?) ``para el slot.

      A continuación, Amazon Lex devuelve la siguiente respuesta:  
![\[\]](http://docs.aws.amazon.com/es_es/lex/latest/dg/images/gs-1-details-20.png)

      El cliente muestra el mensaje en la respuesta.

1. El usuario escribe: mañana

   1. El cliente (la consola) envía la siguiente solicitud [PostText](API_runtime_PostText.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "tomorrow",
          "sessionAttributes": {}
      }
      ```

      El `inputText` del cuerpo de la solicitud proporciona la entrada del usuario. No hay `sessionAttributes`.

   1. En primer lugar, Amazon Lex interpreta `inputText` en el contexto de la intención actual (el servicio recuerda que ha solicitado al usuario información sobre la ranura `PickupDate`). Amazon Lex actualiza el valor de ranura (`PickupDate`) de la intención actual. Elige otro slot para obtener un valor para (`PickupTime`). Devuelve una de las preguntas para obtener valores (¿A qué hora quiere que se entreguen las rosas el 05/01/2017?) ``al cliente.

      A continuación, Amazon Lex devuelve la siguiente respuesta:  
![\[\]](http://docs.aws.amazon.com/es_es/lex/latest/dg/images/gs-1-details-30.png)

      El cliente muestra el mensaje en la respuesta.

1. El usuario escribe: 18:00 h

   1. El cliente (la consola) envía la siguiente solicitud [PostText](API_runtime_PostText.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "6 pm",
          "sessionAttributes": {}
      }
      ```

      El `inputText` del cuerpo de la solicitud proporciona la entrada del usuario. No hay `sessionAttributes`.

   1. En primer lugar, Amazon Lex interpreta `inputText` en el contexto de la intención actual (el servicio recuerda que ha solicitado al usuario información sobre la ranura `PickupTime`). En primer lugar, Amazon Lex actualiza el valor de ranura de la intención actual. Ahora Amazon Lex detecta que tiene información para todas las ranuras. 

      La intención `OrderFlowers` se ha configurado con un mensaje de confirmación. Por lo tanto, Amazon Lex necesita una confirmación explícita del usuario antes de cumplir con la intención. Amazon Lex envía el siguiente mensaje al cliente para solicitar su confirmación antes de pedir las flores:  
![\[\]](http://docs.aws.amazon.com/es_es/lex/latest/dg/images/gs-1-details-40.png)

      El cliente muestra el mensaje en la respuesta.

1. El usuario escribe: Sí

   1. El cliente (la consola) envía la siguiente solicitud [PostText](API_runtime_PostText.md) a Amazon Lex: 

      ```
      POST /bot/OrderFlowers/alias/$LATEST/user/4o9wwdhx6nlheferh6a73fujd3118f5w/text
      "Content-Type":"application/json"
      "Content-Encoding":"amz-1.0"
      
      {
          "inputText": "Yes",
          "sessionAttributes": {}
      }
      ```

      El `inputText` del cuerpo de la solicitud proporciona la entrada del usuario. No hay `sessionAttributes`.

   1. Amazon Lex interpreta `inputText` en el contexto de la confirmación de la intención actual. Entiende que el usuario desea continuar con el pedido. La intención `OrderFlowers` se ha configurado con `ReturnIntent` como la actividad de cumplimiento (no existe ninguna función de Lambda para cumplir con la intención). Por ello, Amazon Lex devuelve los siguientes datos de ranura al cliente.   
![\[\]](http://docs.aws.amazon.com/es_es/lex/latest/dg/images/gs-1-details-50.png)

      Amazon Lex establece `dialogState` en `ReadyForFulfillment`. Ahora el cliente podrá llevar a cabo la intención.

1. Ahora vuelva a probar el bot. Para ello, debe elegir el enlace **Clear** en la consola y establecer un nuevo contexto (usuario). Al proporcionar datos para la intención Pedir flores, intente que sean datos no válidos. Por ejemplo: 
   + Jazmín como tipo de flor (este tipo de flor no se admite).
   + Ayer como el día en que desea recoger las flores.

   Ten en cuenta que el bot acepta estos valores porque no tienes ningún código para los datos initialize/validate del usuario. En la siguiente sección, añadirá una función de Lambda para que lo haga. Tenga en cuenta lo siguiente en relación con la función de Lambda:
   + La función de Lambda valida los datos de ranura después de cada entrada del usuario. Gestiona la intención al final. Es decir, el bot procesa el pedido de flores y devuelve un mensaje al usuario en lugar de simplemente devolver los datos de slot al cliente. Para obtener más información, consulte [Uso de funciones de Lambda](using-lambda.md).
   + La función de Lambda también establece los atributos de la sesión. Para obtener más información acerca de los atributos de sesión, consulte [PostText](API_runtime_PostText.md). 

      Una vez completada la sección Introducción, puede realizar los ejercicios adicionales ([Ejemplos adicionales: creación de bots de Amazon Lex](additional-exercises.md)). [Reserva de viaje](ex-book-trip.md) usa los atributos de sesión para compartir información entre intenciones y entablar una conversación dinámica con el usuario.

**Paso siguiente**  
[Paso 3: creación de una función de Lambda (consola)](gs-bp-create-lambda-function.md)