Blog de Amazon Web Services (AWS)

Construyendo un Chatbot Escalable

Por Rolando Natalizia, Director de Edge S.A.

 

Después de la Conferencia de Desarrolladores de Facebook (F8) de 2016, un cliente, líder de en el sector de telecomunicaciones en Latinoamérica, nos pidió el desarrollo de un chatbot para responder en lenguaje natural a las consultas de sus usuarios vía Facebook Messenger. Como también éramos la empresa responsable por exponer la mayoría de sus servicios por medio de un API manager, pudimos hacer la integración de manera más rápida gracias a la cantidad de servicios REST disponibles y nuestro avanzado conocimiento sobre estos. En aquel momento, decidimos usar AWS para alojar nuestro chatbot pues creíamos que tendríamos la oportunidad de escalar el servicio fácilmente en caso de que la demanda aumentase.

Edge S.A. comenzó en 2008, en Paraguay, y actualmente somos Socios APN de Tecnología de nivel Select. Teniendo experiencia en el sector de telecomunicaciones, empezamos a proporcionar servicios de mensajes a empresas locales, especialmente instituciones financieras. Nuestro gran conocimiento en servicios de mensaje de telecomunicaciones nos permitió construir una plataforma para controlar servicios de valor agregado en móviles, una solución que fue desplegada en diferentes operadoras de telecomunicaciones en Latinoamérica y África. Esta experiencia exitosa nos permitió extender nuestros servicios a otras áreas, como transformación digital, marketing digital y chatbots, siempre desde los aspectos técnicos de la solución, apoyándonos en la nube siempre que nos fuera posible.

En 2019, cuando nuestro cliente decidió envolverse más seriamente con AWS, decidimos capitalizar en nuestras inversiones previas de know-how y nos dedicamos en obtener el nivel Select de APN, siendo la primera empresa de Paraguay en obtenerlo.

Sabíamos que el tráfico en nuestro chatbot aumentaría este año al integrar WhatsApp y Zendesk web chat a nuestros canales de comunicación y estábamos seguros de que las decisiones de arquitectura que habíamos tomado estaban correctas. Entonces apareció COVID-19. El distanciamiento social y cuarentenas fueron implementadas en los mercados que atendemos. Nuestro cliente tuvo que depender fuertemente de los canales digitales para cubrir la demanda de atención a sus usuarios y nuestro chatbot estaba en el corazón de esta infraestructura.

Gracias a la flexibilidad de AWS y la habilidad de nuestro equipo pudimos escalar nuestra infraestructura para poder controlar la carga inesperada que surgió sin ninguna advertencia.

Nuestra solución de chatbot permite que los usuarios conversen a través de distintos canales (Facebook Messenger, clientes de chat basado en web; Whatsapp, Telegram, iMessage, etc.), como si estuvieran interactuando con ser humano gracias a las capacidades conversacionales del bot, apoyándose en uno o más procesadores de lenguaje natural (NLP). Para poder atender los requerimientos específicos de cada empresa, se hacen las integraciones necesarias con los sistemas de backend, se alimenta al bot con la base de conocimientos de la empresa y se entrena al bot en las consultas y servicios de la organización.

Cuando el bot no entiende la solicitud del usuario, se puede transferir la conversación a un agente humano para que este pueda tomar el caso, lo cual se consigue integrando la plataforma al sistema de CRM del cliente (ej: Zendesk).

El Edge Chatbot también se integra con sistemas de analítica especializados (ej: Google Analytics o Segment y Mixpanel) o sistemas para información estadística y análisis ya en uso en la infraestructura de la empresa.

Nuestro chatbot está construido con tecnología .NET, corre en Amazon EC2 y utiliza una base de datos de Amazon RDS for PostgreSQL de multi-AZ. Nos apoyamos en un Application Load Balancer para controlar y balancear la carga que se recibe, lo cual también nos permite hacer actualizaciones y despliegues de nuevos servicios sin downtime. Los componentes están ubicados en distintas redes de Amazon Virtual Private Cloud para mejorar la seguridad de todo el sistema y mediante el Router podemos dar los accesos necesarios a los servicios. Utilizamos Amazon CloudWatch para generar logs y alarmas, así como paneles de métricas. También usamos Grafana y Runscope para monitorear algunos servicios. Algunas de las alertas son disparadas vía Amazon SNS, y para otras, que enviamos a canales de Slack usamos funciones de AWS Lambda. También usamos funciones de Lambda para hacer snapshots de las instancias EC2. Para los despliegues a desarrollo y producción nos apoyamos en Jenkins y para ciertas configuraciones compartidas, usamos buckets de Amazon S3. Para la gestión de usuarios, grupos y roles a nivel del sistema, usamos AWS IAM.

Mirando el lado positivo en esta coyuntura de COVID-19 tan desalentadora, aprendimos que la empresa puede continuar trabajando como un equipo unido desde cualquier lugar para poder seguir atendiendo a nuestros clientes y que nuestra solución de chatbot pasó por una prueba de estrés que nunca nos hubiéramos imaginado.