DEV Community

Vicente G. Guzmán Lucio
Vicente G. Guzmán Lucio

Posted on • Originally published at Medium on

Comparativa de plataformas para Chatbots

Antes de comenzar hay que dejar bien en claro un aspecto importante sobre el mundo de los bots, y es que: los Bot Frameworks son las plataformas para la creación y alojamiento de bots y las Bot Platforms son los entornos y aplicaciones donde estos pueden ser desplegados, para interactuar con los usuarios, por ejemplo, aplicaciones de mensajería, páginas web y otros tipos de aplicaciones.

Hoy en día existe hay una gran variedad de Bot Frameworks , que permiten el desarrollo de chatbots con diferentes niveles de complejidad, funcionalidad y capacidad de integración.

Entonces, antes de elegir una Bot Framework es muy importante tener claro el tipo de chatbot que se quiere construir:

Sencillo y orientado a un fin concreto:

Comprar una entrada, pedir comida u obtener una información determinada.

Chatbot conversacional :

Estos son capaces de mantener una conversación, entendiendo y recordando lo que se dice en la misma. Estos chatbots se suelen utilizar con fines de entretenimiento y también para reemplazar los sistemas de FAQ (Frequently Asked Questions), automatizándolos y haciéndolo más dinámico.

Complejos :

Aquí podemos contar con aquellos que ayuden a los usuarios a realizar tareas concretas, manteniendo una conversación y recordando lo que se dice. Su desarrollo es más laborioso, pero ofrecen más posibilidades y una mejor experiencia de usuario.

Una vez contemplando esto, recordemos que los Bot Frameworks se agrupan en tres tipos :

Visuales — Conversacionales — Programables

Cada una de estas tipologías, tienen sus pros y sus contras, y sus mayor o menor idoneidad va depender tanto del objetivo y funcionalidad del chatbot que se quiere construir como de los recursos disponibles.

Plataformas Visuales

Estas plataformas están totalmente orientadas a usuarios no técnicos , donde se pueden construir chatbots sin tener conocimientos de programación y/o de IA (Inteligencia Artificial). La idea es que el usuario puede centrarse en el diseño sin tener que preocuparse por los detalles técnicos.

Dentro de lo que cabe son fáciles de aprender , ideales para construir chatbots sencillos , orientados a la realización de una función concreta, pero no son adecuadas para el desarrollo de chatbots complejos, ya que no permiten la implementación de sistemas conversacionales complejos y la integración con APIs, y otros sistemas externos que aporten de funcionalidades extras, en pocas palabras esta muy limitada.

Dentro este grupo estarían: Chatfuel, ManyChat, Octane.ai y Motion.ai, entre otras. Todas ellas son bastante similares , aunque hay diferencias en cuanto a madurez, usabilidad de la interfaz y potencia de las tecnologías de IA que incorporan.

Plataformas Conversacionales

El objetivo principal de estas plataformas es la de desarrollar chatbots conversacionales , capaces de mantener una conversación con un usuario, sin que tenga que haber un objetivo específico. Así, son adecuadas para la construir chatbots de entretenimiento, publicidad, e-learning o educación. Algunas academias y universidades los usan para enseñanza e investigación.

Estás plataformas usan lenguajes específicos como AIML (Artificial Intelligence Markup Language) para construir modelos de interacción, sistemas de programación y servicios cognitivos como el NLP (Natural Language Processing).

Un buen representante de este tipo de plataformas es Pandorabots.

La plataforma de Pandorabots permite el alojamiento de bots, el procesado de lenguaje natural (NLP) y el uso de entornos de programación, tales como: Java, Node.js, Python, Ruby, PHP y_ Go_.

Plataformas Programables

Su curva de aprendizaje es más lenta, porque requieren conocimientos técnicos : programación y técnicas de IA. Todas ellas se caracterizan por:

  • Permitir el uso de diferentes entornos de programación.

  • Incorporar sistemas de NLP avanzados.

  • Dar una amplia gama de posibilidades a la hora interactuar con otros servicios :

    servicios cognitivos, bases de datos, modelos de Machine Learning y Deep Learning, etc.

Esto hace que sirvan tanto para la construcción de chatbots sencillos como otros más avanzados y con una mayor número de funcionalidades.

Hay bastantes plataformas programables, pero aquí vamos a conocer las que he ido manejando durante este ultimo año.

Dialogflow (Google)

Plataforma de desarrollo de chatbots, adquirida por Google en septiembre de 2016.

En Dialogflow pueden crearse chatbots o agents con un NLP (Natural Language Processing) que permite el uso de intents (intenciones), entities (entidades) y la gestión dinámica de subcontextos , en base a los intents detectados. Así, la existencia de un/os determinado/os subcontexto/os, puede/en ser clave/es para la detección y uso de otros intents.

Por ejemplo, si un usuario dice “Me gustaría encargar una hamburguesa”, el sistema detectaría el intent “Encargar”, y una vez que este indicará el tipo y tamaño de la hamburguesa, acciones asociada a este intent, se generaría el subcontexto Hamburguesa_Seleccionada . Si posteriormente, el usuario dijera: “¿Cúal es el tiempo de entrega?”, el chatbot podría decírselo 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 “Hamburguesa_Seleccionada”, no podría decirselo porque no tendría acceso al intentel intent “Obtener_Informacion_Pedido”.

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.

Facebook Bot Engine

La Facebook Bot Engine, se 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 los que han creado un buen número de funcionalidades, entre las que se encuentra 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 la que se pueden ir añadiendo ramas que se activan ante la existencia o no de una determinada información en las frases entrantes. De modo, que se puede definir un flujo de conversación.

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

La integración de chatbot 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 puede hacerse un seguimiento y monitorización de la actividad del chatbot.

Microsoft Bot Framework

La 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, de amplio uso en la actualidad y para los que han desarrollado muchas funcionalidades. 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.

Mediante las phrase list features pueden definirse conjuntos de posibles valores de una entidad, que 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.

IBM Watson

En el cloud de IBM la construcción de chatbot se hace a través de los Conversation Services de Watson.

Los chatbots se conocen como workshop y 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 los 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.

Amazon Lex

Es 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, por ejemplo:

  • 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 , integrados dentro de Amazon Lex.

Incluye herramientas para la monitorización y analítica , y también permite la integración del Amazon CloudWatch.

Los chatbots creados con Amazon Lex pueden desplegarse en Facebook Messenger, Slack_y Twillo_.

Aspect CXP

La 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, 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. Una aplicación con bastantes posibilidades que está a medio camino entre una aplicación gráfica y un lenguaje de programación, aunque 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 se usa 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, que 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 que se apoya en una serie de bases de datos léxicas, que están alienadas entre los diferentes lenguajes y permiten que los elementos identificados funcionen 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

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

Resumen

Según lo antes mencionado las tres plataformas de desarrollo de chatbots más recomendadas actualmente, en orden de prioridad, serían:

  1. Dialogflow de Google
  2. Microsoft Bot Framework
  3. Gupshup

Como se puede ver, existe un gran número de posibilidades a la hora de crear chatbots. Así que lo más recomendable, es 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, aunque por distribución de canales mi recomendación seria MS Bot Framework.


Top comments (0)