Desarrollo Avanzado de Chatbots: Bot Frameworks Programables

Desarrollo Avanzado Chatbots Bot Frameworks Programables

Tal y como vimos en un post anterior (“Construyendo Chatbots”), las plataformas de construcción de chatbots (Bot frameworks), pueden agruparse en tres grandes familias:

  • Visuales
  • Conversaciones
  • Programables

Cada uno de ellos, tiene sus pros y sus contras, y su mayor o menor idoneidad va depender tanto del objetivo y funcionalidad del chatbot que se quiere construir como de los recursos disponibles.

En este artículo, nos vamos a centrar en las plataformas programables. Es decir, aquellas que requieren más conocimientos técnicos, pero permiten desde la construcción de chatbots sencillos hasta otros más avanzados, capaces de incorporar funcionalidades más completas.

Hay bastantes plataformas programables. No obstante, aquí centraremos en las que nosotros hemos manejado desde que iniciamos nuestra andadura en el mundo del desarrollo de Chatbots.

Por cierto, si tienes duda con algunos de los conceptos que mencionamos aquí, te recomendamos que, antes de seguir, te leas este otro artículo: “¿Cómo nos entienden los Chatbots?”

Dialogflow (Google)

Desarrollo Avanzado Chatbots Bot Frameworks ProgramablesPlataforma de desarrollo de chatbots, adquirida por Google en septiembre de 2016. En Dialogflow pueden crearse chatbots o agents con un NLP (Natural Language Processing). Este permite el uso de intents (intenciones) y entities (entidades), además de la gestión dinámica de subcontextos, en base a los intents detectados. Así, la existencia de un/os determinado/s subcontexto/s, puede/n ser clave/s para la detección de otros intents.

Por ejemplo, si un usuario dice “Me gustaría encargar una hamburguesa”, el sistema detectaría el intent “Encargar”. Una vez que este indica el tipo y tamaño de la hamburguesa, acciones asociadas a este intent, se generaría el subcontexto “Hamburguesa_Seleccionada”. Si posteriormente, el usuario dijera “¿Cuál es el tiempo de entrega?”, el chatbot solo podría decirlo porque la existencia del sub-contexto “Hamburguesa_Seleccionada”, daría acceso al otro intent “Obtener_Informacion_Pedido”, que contiene dicha información. Si no existiera el subcontexto, no podría tener acceso a este intent y la información que contiene.

Otro aspecto interesante de esta plataforma es que permite la definición de roles en las entidades e indicar si estás son o no obligatorias. Así en la frase “Quiero ir de Madrid a Bilbao el próximo 11 de julio”, se podría establecer que la primera ciudad es la de salida y la segunda es la de llegada.

Algunos de los entornos de desarrollo disponibles en Dialogflow son: Node.js, .NET, C++, Python, Ruby, PHP, Java, Android, Xamarin e iOs.

Permite el despliegue de chatbots en muchas de las aplicaciones de mensajería, VoIP, en páginas web, asistentes virtuales y aplicaciones propias. Algunas de ellas son: Actions de Google, Web, Slack, Facebook Messenger, Skype, Cisco Spark, Kik, Line, Telegram, Amazon Alexa, Cortana, Twilio  y Twitter.

Otros aspectos importantes de esta plataforma son que:

  • Incorpora una herramienta de análisis y monitorización
  • Permite la integración con otros sistemas (APIs, Bases de datos, servicios cognitivos, etc), a través de webhook.
  • Y se pueden configurar algunos aspectos del algoritmo de Machine Learning (ML) que utiliza para hacer el NLP.

La calidad de la documentación es muy buena y hay un buen número de ejemplos de desarrollo de Chatbots.

Facebook Bot Engine

Desarrollo Avanzado Chatbots Bot Frameworks ProgramablesSe creó en abril de 2016 y se integra muy bien con la plataforma Wit.ai (adquirida por Facebook a principios de 2015) para el procesamiento de lenguaje natural.

En ella pueden desarrollarse chatbots con Node.js, Android, iOS, Unity y PHP. Para ellos se han creado un buen número de funcionalidades, entre ellas una buena integración con los elementos de su red social. Solo permite el despliegue de chatbots en el Facebook Messenger.

Permite el NLP a través del uso de intents y entities, e incorpora las llamadas stories (historias), elementos clave para definir el comportamiento del chatbot. Cada story es un ejemplo de una conversación o conjunto de intenciones (intents) relacionadas (grafo de intents). A ellas se pueden ir añadiendo ramas que se activan ante la existencia o no de una determinada información en las frases entrantes. De este modo, se puede definir un flujo de conversación.

También hay habilitado un mecanismo de marcadores que sirve para saltar entre intenciones e historias. También permite definir los roles de las entidades que se van creando.

La integración de chatbots con sistemas externos como: APIs, Bases de datos, servicios cognitivos, etc., puede hacerse a través de los Bots sends commands, que son básicamente, llamadas a funciones. Con Facebook Analytics para hacer un seguimiento y monitorización de la actividad del chatbot.

Cuenta con una buena documentación y un buen número de ejemplos de desarrollo de chatbots.

Microsoft Bot Framework

Desarrollo Avanzado Chatbots Bot Frameworks ProgramablesLa plataforma de desarrollo de Microsoft consta de tres partes:

  • El portal de desarrollo
  • El Bot Connector
  • El Bot Directory

El portal de desarrollo permite hacer desarrollos en Node.js y .Net, frameworks de programación maduros. Son de amplio uso en la actualidad y han desarrollado muchas funcionalidades para ellos. También existen implementaciones de esta plataforma con Python.

El Bot Connector es una clase que permite la multicanalidad de los chatbots. Así, a través de él, se pueden desplegar los chatbots en las principales aplicaciones de mensajería: Slack, Facebook Messenger, Kik, Line, Telegram, Twilio SMS, Twitter, etc., páginas web, aplicaciones de VoIP (Skype) email, asistentes virtuales (Cortana) y aplicaciones propias, a través del Direct Line.

El Bot Directory es una colección de chatbots desarrollados con Microsoft Bot Framework.

Esta plataforma también permite monitorizar, hacer analíticas (con Azure Application Insights) e integrar otros servicios como: bases de datos, servicios cognitivos de Microsoft (para el procesamiento de texto, voz e imágenes) y las APIs de Bing para hacer búsquedas, entre otros.

Para el NLP, usa el LUIS (Language Understanding Intelligent Service) de Microsoft. LUIS soporta intents, entities y features para analizar el contenido de los mensajes entrantes y definir el comportamiento del chatbot. Las features son diccionarios de palabras o expresiones que permiten que el modelo aprenda más rápido. Gracias a ellas, puede reconocer una entidad con el menor número de ejemplos posibles.

Desarrollo Avanzado Chatbots Bot Frameworks Programables

Mediante las phrase list features pueden definirse conjuntos de posibles valores de una entidad. Estos tienen que tratarse de manera idéntica. LUIS también admite los pattern features, útiles cuando una de nuestras entidades. Es, por ejemplo, un código de vuelo o un producto cuyo formato es representable mediante una expresión regular.

La calidad de la documentación es buena y proporcionan un buen número de ejemplos de desarrollo de chatbots.

IBM Watson

Desarrollo Avanzado Chatbots Bot Frameworks ProgramablesEn el cloud de IBM la construcción de chatbot se hace mediante los Conversation Services de Watson. Los chatbots se conocen como workshop. Se pueden construir haciendo uso de varios frameworks de desarrollo: Node.js, Python, .Net, Android, iOS, etc.

El NLP que usa esta basado en el uso de intents, entities y synonyms. Estos últimos son conjuntos palabras, reconocidas dentro de una misma entity. Por ejemplo: paella, pizza, bocadillo y gazpacho, estarían dentro de la entity “comida”. Otro aspecto interesante es que incluye una funcionalidad, llamada Fuzzy Matching, con la que reconocer las palabras que el usuario escribe mal. Por ejemplo: si el usuario escribe piza, el sistema sería capaz de interpretar que se refiere pizza.

La herramienta de NLP de IBM también permite la creación flujos de diálogos de forma gráfica, teniendo en cuenta las intents y entities definidas, y la gestión de subcontextos, de forma similar a como se hace en Dialogflow. Permite el despliegue de chatbots en la web, dentro de aplicaciones propias (similar al Direct Line de Microsoft), Slack, Facebook Messenger y Twillo. También incluye una herramienta monitorización y analítica. Y permite la integración de otras APIs de Watson, bases de datos, etc.

Tiene una buena documentación y se proporcionan bastantes ejemplos de desarrollo de chatbots.

Amazon Lex

Desarrollo Avanzado Chatbots Bot Frameworks ProgramablesEs un servicio de AWS (cloud de Amazon) para crear interfaces conversacionales o chatbots. El sistema de NLP se basa en el uso de intents y slots. Los slots son los parámetros que puede requerir un intent, aunque no son obligatorios. Por ejemplo, el intent OrderFly podría requerir slots como origen, destino y clase, teniendo cada uno de ellos un tipo, como:

  • Origen y destino: tendrán un listado de aeropuertos
  • Clase: los valores “Turista”, Turista superior”, Business” y “Primera”.

El usuario podrá responder con un valor de slot que incluya palabras adicionales, como “Quiero ir desde a Madrid a San Petesburgo” o “Prefiero la clase Business” y el sistema de Amazon Lex seguirá entendiendo el valor de slot integrado.

Cuenta con los siguientes entornos de programación: Node.js, Python, .NET, Android, iOS, Java, Javascript, PHP y Ruby. La integración con otros servicios (DynamoDB, Amazon Cognito y APIs), se hace a través de los AWS Lambda. Estos están integrados dentro de Amazon Lex.

Incluye herramientas para la monitorización y analítica, y también permite la integración del Amazon CloudWatch. Además, los chatbots creados con Amazon Lex pueden desplegarse en Facebook Messenger, Slack y Twillo.

Tiene una buena documentación y se proporcionan algunos ejemplos de desarrollo de chatbots.

Aspect CXP

Desarrollo Avanzado Chatbots Bot Frameworks ProgramablesLa Aspect Customer Experience Platform (CXP) es una plataforma para el diseño, implementación y despliegue de aplicaciones de para el customer service, entre los que se incluyen los chatbots. Lo hace a través de canales de comunicación como; SMS, voz, web, Skype y redes sociales como Facebook y Twitter.

No permite el uso de lenguajes de programación. El diseño y desarrollo de chatbots se hace a través de una herramienta propietaria, llamada Aspect CXP Designer. Es una aplicación con bastantes posibilidades que está a medio camino entre una aplicación gráfica y un lenguaje de programación. Para sacarle el máximo partido hay que tener conocimientos de lógica de programación. Sin embargo, es importante aclarar que el grado de personalización y adaptación que permite es menor que cuando usamos un lenguaje de programación. También permite la integración de otros servicios: APIs, Bases de datos, servicios cognitivos, etc.

Para el NLP usa un componente llamado Aspect NLU (Natutal Language Understanding) que permite recorrer las frases entrantes e ir identificando los elementos relevantes y su significado. Este sistema de procesamiento del lenguaje natural es diferente a los vistos anteriormente. Los anteriores se basan más en el entrenamiento de sistemas pre-entrenados y sus sistemas de interpretación se construyen a través de un sistema de reglas apoyado en una serie de bases de datos léxicas, que están alienadas entre los diferentes lenguajes y permiten a los elementos identificados funcionar en varios idiomas.  Así, un mismo sistema de identificación puede ser utilizado para diferentes idiomas.

Las implementaciones de NLP hechas con Aspect NLU son más robustas, pero menos flexibles y más complejas de construir.

La calidad de la documentación es aceptable, los ejemplos desarrollo de chatbots con esta plataforma son escasos y su código no es accesible.

Gupshup

Desarrollo Avanzado de Chatbots Bot Frameworks ProgramablesEs una plataforma de desarrollo apta tanto para desarrolladores como para aquellos que no lo son, ya que ofrece dos herramientas: Flow Bot Builder y Bot Builder IDE.

La Flow Bot Buider es un editor visual, apto para usuarios sin conocimiento de programación, que permite la construcción y despliegue de chatbots sin necesidad de escribir código de programación. Permite la construcción de chatbots sencillos.

El Bot Builder IDE es una herramienta de desarrollo que permite el uso de varios entornos de programación (Node.js, Python, Ruby, PHP, Java, C#, Android e iOS).

Incluye herramientas de analítica y monitorización, y el  NLP que trae por defecto (NLP on the fly) es sencillo y muy fácil de implementar, pero sólo permite el manejo de intents y entities. También permite hacer uso de otros motores de NLP (más completos), en especial los de Dialogflow y Wit.ai.

Tanto una herramienta como la otra, permiten el despliegue de chatbots en varios canales: Facebook Messenger, SMS, Twitter, Telegram, Slack, Hipchat, Skype, Kik, Twillio, Line, Cisco Spark, Teamchat, etc.

También permite la integración de servicios como APIs, Bases de datos, servicios cognitivos, etc.

La calidad de la documentación es aceptable y no hay muchos ejemplos de desarrollo de chatbots con Gupshup.

Haciendo Balance

A continuación, y para resumir todo lo visto anteriormente, se muestra una tabla comparativa con los datos relativos a cada una de las plataformas que se han visto.

Tabla comparativa - Desarrollo Avanzado de Chatbots Bot Frameworks Programables

En esta valoración se han tenido en cuenta tanto la variedad de servicios disponibles, madurez y accesibilidad, como el nivel de documentación de los mismos. Las tres plataformas de desarrollo de chatbots más recomendadas actualmente, en orden de prioridad, serían:

Mejores plataformas- Desarrollo Avanzado de Chatbots Bot Frameworks Programables

Como se puede ver, existe un gran número de posibilidades para crear chatbots avanzados. A partir de aquí, tendríamos que ir viendo y probando cada una de las plataformas disponibles, para ver cuál de ellas se ajusta mejor a los requerimientos de nuestro proyecto. En cualquier caso, una cosa sí está muy clara: la creatividad, capacidad de adaptación y ganas de aprender serán elementos clave.

Buen desarrollo a tod@s! 🙂


Javier Moralo, Data & AI Creative de datahack

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *