

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.

# Asistente de agente de call center
<a name="example-call-center"></a>

En este tutorial, utilizará Amazon Lex V2 con Amazon Kendra para crear un bot de asistencia a los agentes que ayude a los agentes de atención al cliente y lo publique como una aplicación web. Amazon Kendra es un servicio de búsqueda empresarial que utiliza machine learning para encontrar respuestas en documentos. Para obtener más información acerca de Amazon Kendra, consulte [la *Guía para desarrolladores de Amazon Kendra*](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html). 

Los bots Amazon Lex V2 se utilizan ampliamente en los centros de llamadas como primer punto de contacto para los clientes. En muchas ocasiones, un bot basta para responder a las preguntas de los clientes. Cuando un bot no puede proporcionar una respuesta válida, transfiere la conversación a un miembro del equipo de atención al cliente. 

En este tutorial, creamos un bot Amazon Lex V2 que los agentes utilizan para responder a las consultas de los clientes en tiempo real. El bot proporciona respuestas a los agentes para que tan solo tengan que leerlas y no hayan de buscarlas manualmente. 

El bot y la aplicación web que creará a lo largo de este tutorial ayudarán a los agentes a atender a los clientes con mayor eficiencia y precisión, ya que podrán dirigirlos a los recursos adecuados. El siguiente diagrama muestra cómo funciona la aplicación web. 

![\[alt text not found\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/agent-tutorial.png)






Tal como muestra el diagrama, el índice de documentos de Amazon Kendra se almacena en un bucket de Amazon Simple Storage Service (Amazon S3). Si todavía no cuenta con un bucket de S3, puede configurarlo cuando cree el índice de Amazon Kendra. En este tutorial utilizará Amazon Cognito, además de Amazon S3. Amazon Cognito administra los permisos de implementación del bot como aplicación web.

En este tutorial, creará un índice de Amazon Kendra que proporcionará respuestas a las preguntas de los clientes, creará un bot al que agregará intenciones que le permitirán sugerir respuestas basadas en la conversación mantenida con el cliente, configurará Amazon Cognito para administrar los permisos de acceso e implementará el bot como aplicación web.

**Tiempo estimado**: 75 minutos

**Coste estimado:** 2,50\$1 por hora para un índice de Amazon Kendra y 0,75\$1 para 1000 solicitudes de Amazon Lex V2. El índice de Amazon Kendra se seguirá ejecutando una vez haya finalizado con este ejercicio. Asegúrese de eliminarlo para evitar costos innecesarios. 

**Nota**: Asegúrese de elegir la misma región de AWS para todos los servicios utilizados en este tutorial.

**Topics**
+ [

# Paso 1: creación de un índice de Amazon Kendra
](agent-step-1.md)
+ [

# Paso 2: Crear un bot Amazon Lex V2
](agent-step-2.md)
+ [

# Paso 3: adición de intenciones integradas y personalizadas
](agent-step-3.md)
+ [

# Paso 4: configuración de Amazon Cognito
](agent-step-4.md)
+ [

# Paso 5: implementación del bot como aplicación web
](agent-step-5.md)
+ [

# Paso 6: uso del bot
](agent-step-6.md)

# Paso 1: creación de un índice de Amazon Kendra
<a name="agent-step-1"></a>

El primer paso es crear un índice de documentos de Amazon Kendra que permita responder a las preguntas de los clientes. Un índice proporciona una API de búsqueda para las consultas de los clientes. El índice se crea a partir de los documentos fuente. Amazon Kendra devuelve las respuestas que encuentra en los documentos indexados al bot, que se las muestra al agente.

La calidad y precisión de las respuestas sugeridas por Amazon Kendra dependen de los documentos que se indexen. Los documentos deben incluir archivos a los que el agente acceda con frecuencia y deben almacenarse en un bucket de S3. Puede indexar datos no estructurados y semiestructurados en formato .html, Microsoft Office (.doc o .ppt), PDF y texto. 

Para crear un índice de Amazon Kendra, consulte [Introducción a los buckets de S3 (consola)](https://docs.aws.amazon.com/kendra/latest/dg/gs-console.html) en la *Guía del desarrollador de Amazon Kendra*.

Para añadir preguntas y respuestas (FAQs) que ayuden a responder a las consultas de los clientes, consulte [Añadir preguntas y respuestas](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html) en la Guía para *desarrolladores de Amazon Kendra*. Para este tutorial, utilice el [archivo ML\$1FAQ.csv en GitHub](https://github.com/awsdocs/amazon-lex-developer-guide/blob/master/example_apps/agent_assistance_bot/ML_FAQ.csv).

## Siguiente paso
<a name="agent-step-1-next"></a>

[Paso 2: Crear un bot Amazon Lex V2](agent-step-2.md)

# Paso 2: Crear un bot Amazon Lex V2
<a name="agent-step-2"></a>

Amazon Lex V2 proporciona una interfaz entre el agente del centro de llamadas y el índice de Amazon Kendra. Realiza un seguimiento de la conversación entre el agente y el cliente y llama a la intención `AMAZON.KendraSearchIntent` en función de las preguntas que haga el cliente. Una *intención* es la acción que el usuario desea realizar.

Amazon Kendra busca en los documentos indexados y devuelve una respuesta a Amazon Lex V2 que muestra en el bot. Solo el agente puede ver esta respuesta.

**Creación de un bot de asistencia para agentes**

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**.

1. Elija **Bot personalizado** y configure el bot.

   1. **Nombre del bot**: introduzca un nombre que indique la finalidad del bot, como **AgentAssistBot**.

   1. **Voz de salida**: elija **Ninguna**.

   1. **Tiempo de espera de la sesión**: introduzca **5**.

   1. **COPPA**: elija **No**.

1. Seleccione **Crear**. Tras crear el bot, Amazon Lex V2 muestra la pestaña del editor de bots.

## Siguiente paso
<a name="agent-step-2-next"></a>

[Paso 3: adición de intenciones integradas y personalizadas](agent-step-3.md)

# Paso 3: adición de intenciones integradas y personalizadas
<a name="agent-step-3"></a>

Una *intención* representa una acción que el agente del centro de llamadas quiere que realice el bot. En este caso, el agente quiere que el bot sugiera respuestas y recursos útiles basados en la conversación entre el agente y el cliente. 

Amazon Lex V2 tiene dos tipos de intenciones: intenciones personalizadas e intenciones integradas. `AMAZON.KendraSearchIntent`es una intención integrada. El bot utiliza la intención `AMAZON.KendraSearchIntent` para consultar el índice y mostrar las sugerencias de respuesta de Amazon Kendra. 

El bot de este ejemplo no necesita una intención personalizada. No obstante, para compilar el bot, debe crear al menos una intención personalizada que tenga, como mínimo, un enunciado de ejemplo. Esta intención solo es necesaria para compilar el bot de asistencia para agentes. No realiza ninguna otra función. El enunciado de la intención no debe responder a ninguna de las preguntas que haga el cliente. De esta forma, se evitan llamadas a `AMAZON.KendraSearchIntent` para responder a consultas de los clientes. Para obtener más información, consulte [AMAZON.KendraSearchIntent](built-in-intent-kendra-search.md).

**Creación de la intención personalizada necesaria**

1. En la página **Introducción al bot**, elija **Crear intención**.

1. En **Agregar intención**, elija **Crear intención**.

1. En el cuadro de diálogo **Crear intención**, introduzca un nombre que describa la intención, como **RequiredIntent**.

1. En **Ejemplos de enunciados**, introduzca un enunciado descriptivo, como **Required utterance**.

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

**Para añadir el mensaje de `AMAZON.KendraSearchIntent` intención y respuesta**

1. En el panel de navegación, elija el signo más (\$1) situado junto a **Intenciones**.

1. Elija **Buscar intenciones existentes**.

1. En el cuadro de búsqueda **Buscar intenciones**, introduzca **AMAZON.KendraSearchIntent** y seleccione esta intención en la lista.

1. Asigne un nombre descriptivo a la intención, como **AgentAssistSearchIntent**, y elija **Agregar**.

1. En el editor de intenciones, seleccione la **Consulta de Amazon Kendra** para abrir las opciones de consulta.

1. Seleccione el índice en el que quiera que busque la intención.

1. En la sección **Respuesta**, agregue los tres mensajes siguientes a un grupo de mensajes.

   ```
   I found an answer for the customer query: ((x-amz-lex:kendra-search-response-question_answer-question-1)) and the answer is ((x-amz-lex:kendra-search-response-question_answer-answer-1)).
   I found an excerpt from a helpful document: ((x-amz-lex:kendra-search-response-document-1)).
   I think this answer will help the customer: ((x-amz-lex:kendra-search-response-answer-1)).
   ```

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

1. Para crear el bot, elija **Crear**.

## Siguiente paso
<a name="agent-step-3-next"></a>

[Paso 4: configuración de Amazon Cognito](agent-step-4.md)

# Paso 4: configuración de Amazon Cognito
<a name="agent-step-4"></a>

Para administrar los permisos y los usuarios de la aplicación web, es necesario configurar Amazon Cognito. Amazon Cognito garantiza que la aplicación web sea segura y disponga de control de accesos. Amazon Cognito utiliza grupos de identidades para proporcionar credenciales de AWS que permiten a los usuarios acceder a otros servicios de AWS. Para este tutorial, proporciona acceso a Amazon Lex V2.

Al crear un grupo de identidades, Amazon Cognito le proporciona las funciones de AWS Identity and Access Management (IAM) para los usuarios autenticados y no autenticados. Para modificar las funciones de IAM, añada políticas que concedan acceso a Amazon Lex V2. 

**Configuración de Amazon Cognito**

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

1. Seleccione **Administrar grupos de identidades**.

1. Elija **Crear nuevo grupo de identidades**.

1. Configure el grupo de identidades.

   1. **Nombre del grupo de identidades**: introduzca un nombre que indique la finalidad del bot, como **BotPool**.

   1. En la sección **Identidades sin autenticar**, elija **Habilitar el acceso a identidades sin autenticar**.

1. Elija **Crear grupo**.

1. En la página **Identifique los roles de IAM que se utilizarán en el nuevo grupo de identidades**, elija **Ver detalles**.

1. Anote los nombres de los roles de IAM. Los modificará más adelante.

1. Elija **Permitir**.

1. En la página **Introducción a Amazon Cognito**, en **Plataforma, elija**. **JavaScript**

1. En la sección **Obtenga credenciales de AWS**, busque y registre el **ID del grupo de identidades**.

1. Para permitir el acceso a Amazon Lex V2, modifique las funciones de IAM autenticadas y no autenticadas.

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

   1. En el panel de navegación, en **Administración del acceso**, elija **Roles**.

   1. En el cuadro de búsqueda, introduzca el nombre del rol de IAM autenticado y marque la casilla situada al lado del nombre. 

      1. Seleccione **Asociar políticas**.

      1. En el cuadro de búsqueda, escriba **AmazonLexRunBotsOnly** y marque la casilla situada al lado del rol.

      1. Elija **Asociar política**.

   1. En el cuadro de búsqueda, introduzca el nombre del rol de IAM sin autenticar y marque la casilla situada al lado del nombre. 

      1. Seleccione **Asociar políticas**.

      1. En el cuadro de búsqueda, escriba **AmazonLexRunBotsOnly** y marque la casilla situada al lado del rol.

      1. Elija **Asociar política**.

## Siguiente paso
<a name="agent-step-4-next"></a>

[Paso 5: implementación del bot como aplicación web](agent-step-5.md)

# Paso 5: implementación del bot como aplicación web
<a name="agent-step-5"></a>

**Implementación del bot como aplicación web**

1. Descargue el repositorio en [https://github.com/awsdocs/amazon-lex-developer-guide/blob/master/example\$1apps/agent\$1assistance\$1bot/](https://github.com/awsdocs/amazon-lex-developer-guide/blob/master/example_apps/agent_assistance_bot/) en su ordenador.

1. Navegue al repositorio descargado y abra el archivo index.html en un editor.

1. Realice los siguientes cambios.

   1. En la sección `AWS.config.credentials`, introduzca el nombre de la región y el ID del grupo de identidades.

   1. En la sección ` Amazon Lex V2 runtime parameters`, introduzca el nombre del bot.

   1. Guarde el archivo.

# Paso 6: uso del bot
<a name="agent-step-6"></a>

Con fines de demostración, tendrá que agregar entradas al bot como cliente y como agente. Para diferenciar entre ambos tipos de entradas, las preguntas que haga el cliente empezarán por “Client:” y las respuestas proporcionadas por el agente, por “Agent:”. Puede elegir varias opciones del menú de sugerencias de entrada. 

Ejecute su aplicación web abriéndola `index.html` para entablar una conversación con su bot como esta:.

![\[Un ejemplo de conversación entre un bot de un centro de llamadas y el asistente del agente.\]](http://docs.aws.amazon.com/es_es/lexv2/latest/dg/images/agent-tutorial-ss.png)


La función `pushChat()` del archivo index.html se explica a continuación.

```
            
            var endConversationStatement = "Customer: I have no more questions. Thank you." 
            // If the agent has to send a message, start the message with 'Agent'
            var inputText = document.getElementById('input');
            if (inputText && inputText.value && inputText.value.trim().length > 0 && inputText.value[0]=='Agent') {               
                showMessage(inputText.value, 'agentRequest','conversation');
                inputText.value = "";
            }
            // If the customer has to send a message, start the message with 'Customer'
            if(inputText && inputText.value && inputText.value.trim().length > 0 && inputText.value[0]=='Customer') {  
                // disable input to show we're sending it
                var input = inputText.value.trim();
                inputText.value = '...';
                inputText.locked = true;
                customerInput = input.substring(2);

                // Send it to the Lex runtime
                var params = {
                    botAlias: '$LATEST',
                    botName: 'KendraTestBot',
                    inputText: customerInput,
                    userId: lexUserId,
                    sessionAttributes: sessionAttributes
                };

                showMessage(input, 'customerRequest', 'conversation');
                if(input== endConversationStatement){
                    showMessage('Conversation Ended.','conversationEndRequest','conversation');
                }
                lexruntime.postText(params, function(err, data) {
                    if (err) {
                        console.log(err, err.stack);
                        showMessage('Error:  ' + err.message + ' (see console for details)', 'lexError', 'conversation1')
                    }

                    if (data &&input!=endConversationStatement) {
                        // capture the sessionAttributes for the next cycle
                        sessionAttributes = data.sessionAttributes;
                        
                            showMessage(data, 'lexResponse', 'conversation1');
                    }
                    // re-enable input
                    inputText.value = '';
                    inputText.locked = false;
                });
            }
            // we always cancel form submission
            return false;
```

 Cuando proporciona información como cliente, la API de tiempo de ejecución de Amazon Lex V2 la envía a Amazon Lex V2.

La función `showMessage(daText, senderRequest, displayWindow)` muestra la conversación entre el agente y el cliente en la ventana del chat. Las respuestas que sugiere Amazon Kendra se muestran en una ventana adyacente. La conversación finaliza cuando el cliente dice: **“I have no more questions. Thank you.”**

**Nota:** Elimine el índice de Amazon Kendra si no lo va a utilizar.