Comparativa de plataformas para Chatbots
Tags: chatbots, microsoftbotframewor, nlp
Published: 2022-05-20 16:18:36

---
title: Comparativa de plataformas para Chatbots
published: true
date: 2019-05-07 01:47:32 UTC
tags: chatbots,microsoftbotframewor,nlp
canonical_url: 
---

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](https://chatfuel.com/), [ManyChat](https://manychat.com/), [Octane.ai](http://octaneai.com/) y [Motion.ai](https://www.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](https://es.wikipedia.org/wiki/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](http://www.pandorabots.com/).

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)](https://dialogflow.com/)

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](https://developers.facebook.com/docs/messenger-platform)

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](https://dev.botframework.com/)

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](https://console.bluemix.net/developer/watson/dashboard)

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](https://aws.amazon.com/es/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](https://designer.aspect-cloud.net/)

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](https://www.gupshup.io/developer/home)

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

* * *