Blog de Amazon Web Services (AWS)

Genere campañas de marcación de salida con Amazon Connect

Por Victor J. Palomo, Solutions Architect en AWS

 

Ya sea para cobranza, promociones personalizadas o encuestas de opinión, existen múltiples razones para contactar a grandes conjuntos de personas y para mantener un contacto cálido se requiere poder generar campañas de marcación de salida de manera eficiente.

En este post se describe una integración de ejemplo usando AWS StepFunctions para generar campañas de marcación de salida con Amazon Connect para efecto de pruebas de estas capacidades.

 

Visión general de la solución

La solución opera con el principio de un power dialer: genera nuevas llamadas una vez que los agentes completan las llamadas previas. Dado que las llamadas se colocan automáticamente, se mitigan las ineficiencias y los errores de la marcación manual. Además, dado que las llamadas se inician hasta que los agentes estén disponibles, se puede mantener la naturaleza cálida de los contactos de persona a persona (no hay tiempo de espera para los usuarios finales al ser contactados).

Esta solución utiliza AWS Step Functions para orquestar y generar llamadas de salida a usuarios finales utilizando Amazon Connect; Amazon DynamoDB y Amazon Simple Storage Service para almacenar los registros de usuarios así como el progreso de campañas. Finalmente, la solución utiliza Amazon Kinesis Data Streams para monitorear el estado de agentes en Amazon Connect.

 

 

Procedimiento

La solución se basa en un template de CloudFormation que construye una Aplicación Lambda para agrupar los recursos necesarios. AWS Serverless Aplication Model se utiliza para construir los artefactos requeridos para la implementación. Los pasos de implementación consisten en:

  • Despliegue de la solución.
  • Configuración de parámetros del marcador.
  • Carga de lista de marcación.
  • Iniciando campañas de marcación.

Link to GitHub repo:

Power Dialer for Amazon Connect

Prerequisitos

Para este procedimiento se requerirá:

  • Una cuenta de AWS
  • Credenciales de administrador para la cuenta.
  • AWS CLI y AWS SAM CLI instalados y configurados con las credenciales de administrador. Los siguientes tutoriales son de utiliidad para configurarlos:
  • Una instancia de Amazon Connect configurada con un número telefónico asignado, con los queues y contact flows definidos por default en la instalación inicial.

Despliegue de la solución.

  1. Desde la terminal de comandos en un equipo con AWS CLI y AWS SAM instalados y configurados, clone el repositorio de la solución:

git clone https://github.com/aws-samples/amazon-connect-power-dialer

  1. Cambie su directorio de trabajo a la carpeta clonada.

cd amazon-connect-power-dialer

  1. Genere los artefactos requeridos para el despliegue usando AWS SAM:

sam build -u

  1. Despliegue la solución usando AWS SAM:

sam deploy -g

  1. AWS SAM realizará las siguientes preguntas para el despliegue:
    1. Stack Name: Especifique un nombre para esta aplicación: PowerDialer.
    2. AWS Region: Especifique la region donde la instancia de Amazon Connect se encuentra.
    3. Confirm changes before deploy: N
    4. Allow SAM CLI IAM role creation: Y
    5. Save arguments to configuration file: Y
    6. SAM configuration file: Acepte el nombre por default presionando Enter.
    7. SAM configuration environment: Acepte el nombre por default presionando Enter.
  2. AWS SAM iniciará el despliegue de la aplicación y tomará algunos minutos para completar. Permita que finalice antes de continuar.
  3. Ingrese a la consola AWS Lambda.
  4. Seleccione Applications en el menu de la izquierda y presione en el nombre de la aplicación que desplegó, PowerDialer.
  5. Se listarán los recursos asociados a esta solución, incluyendo funciones Lambda, máquinas de estado Step Functions, tablas DynamoDB and un bucket de S3.

 

 

10. Utilizará este grupo de recursos para accesar los diferentes servicios.

Configurando parámetros del marcador

Los ajustes necesarios en el marcador son:

  • Configuración del stream de Kinesis.
  • Configuración de parámetros de marcación.
  • Habilitación de procesamiento de eventos.

Configuración del stream de Kinesis.

1. Navegue a la consola de Amazon Connect

2. En el listado de instancias, presione en el nombre de Alias de la instancia.

 

 

3. En el menu de la izquierda, seleccione Data streaming.

 

 

4. Marque la casilla Enable data streaming.

 

 

5. Seleccione Kinesis Stream y presione Create a new Kinesis Stream.

 

 

6. La consola de Kinesis Data Streams aparecerá, presione Create Data Stream.

 

 

7. Especifique un nombre, tal como AmazonConnectEvents y especifique un shard de 1.

8. Presione Create Data Stream.

 

 

9. Una vez que la creación del stream de Kinesis se complete, navegue a la consola de Amazon Connect

10. Seleccione el stream Kinesis tanto para Contact trace records como para Agent Events. Es posible que necesite refrescar la página para que aparezca en la lista.

11. Presione Save.

Configuración de parámetros de marcación.

Para iniciar marcación de salida, el marcador requiere de el instance id, queue ID y un contactflow ID de Amazon Connect.

1. Desde la consola Amazon Connect seleccione Overview.

 

2. Presione en Login URL.

 

 

3. Ingrese con las credenciales de administrador de la instancia de Amazon Connect.

4. En la consola de Amazon Connect seleccione la categoría Routing (el ícono con una flecha que se divide) y presione en Contact Flows.

 

 

5. En el listado de Contact Flows escoja el contact flow Sample queue customer. La vista del diseñador se abrirá con el flujo.

6. Si desea crear un nuevo contact flow, presione el botón Create new contact flow y agregue los bloques Set Working queue, Transfer to queue y Disconnect. Ordene los bloques e interconéctelos de la siguiente forma.

 

 

7. Seleccione el bloque Set Working queue y seleccione la opción Outputs -> Select a queue y elija Basic Queue.

 

 

8. Ingrese un nombre en la parte superior izquierda del diseñador y presione el botón Save y luego el botón Publish.

9. Presione en Show additional flow information para expandir.

 

 

10. El ARN del contact flow aparecerá. El ARN tiene un formato similar a este:

arn:aws:connect:us-east-1:NNNNNNNNNN:instance/III-III-IIII-IIII-IIII-IIII/contact-flow/CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCC

11. Copie el ID de la instancia, lo podrá identificar como la secuencia de caracteres después de la palabra “instance” (III-III-IIII-IIII-IIII-IIII en el ejemplo); y el ID del contact flow, la secuencia de caracteres siguiendo “contact-flow” (CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCC en el ejemplo). Asegúrese de no copiar las “/”.

12. Seleccione en el menú de la izquierda la categoría Routing y a continuación Queues.

 

 

13. Seleccione BasicQueue y presione en Show additional queue information. El ARN aparecerá.

 

 

14. De este ARN copie la última cadena tras la palabra queue, asegúrese de no copiar la “/”.

15. En la consola AWS Lambda seleccione Applications y luego seleccione el nombre de la aplicación del marcador.

16. De la lista de recursos, presione en el recurso DialerConfig para accesar la tabla asociada en DynamoDB.

 

 

17. Navegue a la pestaña Items.

18. Ingrese los valores que obtuvo para connectid, contactflow and queue (Reemplace el texto que empieza con Replace with.. en la columna currentValue ).

 

 

19. Para editar cada item coloque el puntero sobre la columna currentValue y presione en el ícono con forma de lápiz. Ingrese los valores y presione el botón Save. Asegúrese de no copiar las “/”.

Habilitación de procesamiento de eventos

Para completar la configuración del marcador, es necesario agregar el stream de Kinesis como trigger de la función ProcessAgentsEvents.

1. En la consola AWS Lambda seleccione el menú Applications y presione en el nombre de la aplicación del marcador.

2. Presione en el recurso ProcessAgentsEvents.

3. En la sección Function Overview, seleccione Add trigger.

 

 

4. En la lista presentada, seleccione Kinesis y escoja el stream que se configuró previamente.

5. Mantenga el resto de opciones definidas por default y presione Add para completar la configuración.

 

 

Carga de lista de marcación.

Para cargar listas de marcación, será necesario subir el archivo asociado al bucket de S3 iobucket e ingresar el nombre del archivo en la tabla DynamoDB DialerConfiguration. Un archivo de muestra es proporcionado para identificar los campos necesarios, el formato del archivo es Comma Separated Values (.csv) y los números telefónicos deberán ser proporcionados en formato E.164 (por ejemplo:  +525511223344).

1. Transforme los datos para que coincidan con el formato requerido y guarde el archivo en formato .csv (con la extensión .csv incluida).

2. Desde el listado de recursos de la aplicación, presione iobucket para accesar a ese recurso.

 

 

3. Presione el botón Upload y a continuación Add files. Seleccione el archivo del destino donde lo guardo previamente y presione Upload

 

 

4. Confirme la carga exitosa del archivo con el mensaje Succeeded que aparece. Cierre la ventana.

5. Regrese al listado de aplicaciones y seleccione el recurso DialerConfig.

6. Navegue a la pestaña Items y llene el valor de currentValue para la llave inputfile. Tome en cuenta que este campo es sensible a mayúsculas y no olvide colocar la extensión.

7. Regrese al listado de recursos en la aplicación y seleccione el recurso ListLoad para abrir la función Lambda.

 

 

8. En la consola de la función Lambda, navegue a la pestaña Test.

 

 

9. Presione el botón Test. Esto ejecutará la función Lambda y realizará una copia de los registros del archivo de marcación a la tabla de marcación almacenada en DynamoDB.

 

 

10. El resultado de la ejecución aparece tras algunos minutos (dependiendo de la cantidad de registros importados). Expanda presionando en Details para confirmar el resultado.

 

 

11. Una leyenda indicando “Succesfully loaded: XX total records.” se mostrará. XX es el número de registros que se importaron.

12. Ahora el marcador está listo para iniciar campañas.

 

Iniciando campañas de marcación

Una campaña de marcación se inicia con la ejecución de una máquina de estados de Step Functions.

 

 

1. Antes del inicio de la campaña será necesario tener a los agentes loggeados en el Amazon Connect Control Panel y en estado Available.

2. Desde la consola AWS Lambda seleccione Applications y navegue a la aplicación desplegada del marcador.

3. Seleccione el recurso con nombre DialerControlSF para abrir la consola de Step Functions.

4. En la pantalla Details de la máquina de estados, presione el botón Start Execution.

 

 

5. Puede proveer opcionalmente un nombre para esta ejecución. Esto puede ser útil para mantener el registro del propósito de cada campaña.

6. La máquina de estados DialerControlSF iniciará la ejecución y las llamadas se iniciarán, mapeándose al contact flow provisto y serán redirigidas en la queue especificada. Los contactos serán obtenidos de la tabla table-dialerlist DynamoDB al ritmo en que los agentes terminan con llamadas previas. El monitoreo de la disponibilidad de agentes se realiza via Agent Events (para llamadas conectadas a agentes) y Contact Trace Records (para conexiones que finalicen previo a la conexión a un agente).

 

Operaciones del marcador.

Finalización de una campaña.

Una vez que una campaña se inicia, el marcador iterará sobre todos los contactos provistos vía el archivo de lista de marcación. Una vez que el marcador llega al final de la lista, el ítem activeDialer en la tabla DynamoDB DialerConfig cambia su valor a false.

Alternativamente es posible detener el marcador cambiando manualmente el valor del ítem activeDialer en la tabla DialerConfig:

1. Navegue a la consola AWS Lambda y seleccione en el menu del panel izquierdo Seleccione el nombre de la aplicación del marcador.

2. Presione en el recurso DialerConfig para navegar a la tabla de DynamoDB.

 

 

3. Navegue a la pestaña Items y cambie el valor de currentValue para el item activeDialer a Esto detendrá llamadas todas las llamadas subsecuentes.

 

 

Reinicio de campaña.

Al reiniciar una campaña de marcación que fue detenida previamente antes de finalizar la lista, el marcador comenzará de nuevo desde el inicio, pero sólo iniciará llamadas hacia los contactos que no han sido etiquetados con un intento de llamada.

Para reiniciar, simplemente vaya a la Aplicación dentro del menú Lambda, escoja el recurso DialerControlSF y presione el botón New Execution. Tenga presente que el índice de marcado comenzará desde el inicio de la lista, por lo que el tiempo requerido para llegar al punto al que llegó el intento anterior podría aumentar para listas grandes.

Iniciando una nueva campaña.

Iniciar una nueva campaña de marcación requiere volver a cargar la lista de marcación. Si la campaña se basa en el mismo archivo de lista de marcado, sólo se necesita ejecutar la función ListLoad (considerando que el archivo de origen aún se encuentra presente en el bucket iobucket). Si está cargando una nueva lista de marcado, primero necesita cargar el archivo en iobucket y luego ejecutar la función ListLoad.

Limpieza

Para eliminar la aplicación del marcador abra la aplicación desplegada y seleccione en el id de recurso iobucket para iniciar la consola S3. En la consola S3, se listará el contenido del bucket S3. Marque la casilla en el borde superior para seleccionar todos los objetos y presione el botón Eliminar.

 

 

Se le solicitará una confirmación, responda a la pregunta como se solicita y presione Delete objects.

Navegue a la consola CloudFormation.

Seleccione las líneas horizontales en el panel izquierdo para expandirlo y seleccione Stacks.

 

 

Seleccione el stack asociado a la aplicación desplegada y presione el botón Delete, presione Delete stack para confirmar.

 

 

Conclusión

Esta solución provee la base para crear campañas de marcación telefónica de salida usando Amazon Connect. Para automatizar aún mas estos pasos, utilice Amazon Cloudwatch Events para crear reglas que invoquen los servicios necesarios en un horario predefinido o utilice Amazon Amplify para generar una aplicación aún mas amigable.

 


Sobre el autor

Victor Palomo es Arquitecto de Soluciones en Amazon Web Services con amplia experiencia en Contact Centers.