Hablamos de Bots y chat bots
¿Qué es un chat bot?
Un bot, también llamado chat bot o chatbot, es un programa informático que utiliza técnicas de inteligencia artificial, más o menos avanzadas, que le permiten interactuar con seres humanos y especialmente ejecutar tareas y responder preguntas planteadas mediante lenguaje natural o simplificaciones de este.
Las formas para interactuar con los chat bots pueden ser muchas. La más habitual es integrándolos dentro de sistema chat online. Pero también existen Apps móviles específicas o integraciones en aplicaciones principales que son bots en definitiva.
¿Qué tipos de chat bot hay?
Puede haber muchas maneras de clasificar los bots, por su inteligencia, por la interfaz con el usuario, por las tecnologías que integra, por las plataformas donde se puede encontrar, etc. Nosotros creemos que una forma útil de clasificar los chat bot es la que hace Mindmeld donde contrasta la "inteligencia" del chat bot, con el tipo de interfaz de usuario que tiene.
Así pues distinguimos cuatro tipos de interfaz de usuario según su inteligencia:
- de navegación por clics
- para reconocimiento de palabras clave
- por coincidencia de frases estructuradas y finalmente
- de lenguaje natural
Como siempre, esta clasificación es estricta, pero en la realidad nos encontramos con chat bots que combinan varios tipos de interfaz. Es el caso de los bots que combinan el uso de palabras clave (keywords) para iniciar acciones, pero que ofrecen navegación por click para culminarlas. También hay bots que indistintamente permiten al usuario interactuar escribiendo las palabras clave o pulsando botones de los menús contextuales.
Chat bots de navegación por clics
En este tipo de chat bots el usuario interactúa con el chat bot a través de menús contextuales de manera que la conversación consiste en iteraciones de ofrecer un menú de opciones al usuario y esperar que este en seleccione una.
La interacción con este tipo de bots, a pesar de ser la más rudimentaria es bastante fluida, y permite llevar a cabo acciones no complejas de forma rápida y precisa.
Chat bots que reconocen palabras clave
En este caso el usuario escribe unas palabras clave que ya sabe que el bot reconoce y el chat bot responde con acciones.
La conversación en este caso es más real ya que se parece a lo que podría ser un chat con otra persona, aunque los contenidos de los mensajes del usuario deben ser muy rudimentarios.
Chat bots que reconocen frases estructuradas
Estos bots son capaces de entender no sólo palabras clave si no frases enteras que sigan una sintaxis específica (reconocida por el bot).
Un bot que reconoce frases estructuradas en el texto que entra el usuario es más avanzado que los dos anteriores porque permite al usuario expresarse con un lenguaje mucho más cercano y abierto. Pero al mismo tiempo puede ser el más frustrante de todos ya que la complejidad del lenguaje humano es muy alta. A menudo pequeños detalles de una frase con un significado muy claro y evidente para un humano, hacen que sea irreconocible por el bot.
Un elemento clave que emerge a partir de estos tipos de chat bots más inteligentes es la detección del contexto en el que está hablando el usuario. Este contexto es vital para interpretar lo que estamos diciendo y los humanos tenemos mucha facilidad para saltar del contexto actual a uno más o menos cercano sin perder el sentido de la conversación. Por ejemplo, cuando en medio de una reserva de un vuelo a Ginebra digo que después necesitaré un hotel en Montreal. A un bot, esto se le puede hacer extremadamente difícil de gestionar. Esta es también otra fuente de frustración para los humanos.
Chat Bots que reconocen el lenguaje natural
Los primeros que nos vienen a la cabeza son el Siri de Apple, el Alexa en el Echo de Amazon, el Google Now o Cortana de Microsoft.
Se trata de los chat bots más cercanos al lenguaje humano, diseñados para seguir diálogos humanos de verdad, sin ningún tipo de restricciones sobre estructuras, formas o contextos. En estos casos el usuario realmente puede llevar a cabo conversaciones fluidas con comodidad.
La gran inversión de recursos, ya sean logísticos como en cuanto a Ingenieros, hace que este tipo de chat bots sólo estén al alcance de grandes corporaciones. Sin embargo, nada hace que éstas les pongan al alcance del gran público ya sea gratuitamente o pagando.
¿En qué casos pueden ser útiles los chat bots?
Chat bots para chat online y call centers
La primera idea que surge a nivel empresarial es crear bots para sustituir los asistentes de los "call centers", es decir chat bots de atención al cliente. Si una empresa consigue redirigir gran parte de las consultas y / o gestiones de sus clientes a un chat bot, el ahorro de personal puede ser significativo. Normalmente el éxito de estos chat bots es inversamente proporcional a la complejidad de las tareas que deben llevar a cabo, a más complejas menos uso suele tener el bot.
Un uso similar es el de facilitar la consulta de FAQs.
Chat bots para gestionar grupos
Otro uso típico de los bots es para ayudar en la gestión de los grupos de redes sociales. Son especialmente utilizados en programas como Telegram o Slack.
Chat bots para consultar información
Cuando en un momento determinado queremos saber, digamos, la previsión del tiempo, simplemente abrimos el chat bot de Poncho en Telegram. Del mismo modo que se lo preguntaríamos a un amigo se lo preguntamos al bot Poncho y nos responderá con la previsión actual a corto o medio plazo. También podremos configurar que nos vaya enviando previsiones periódicamente.
Del mismo modo existen chat bots informativos de bolsa y muchos otros ámbitos.
Bots para automatizar tareas
Otra utilidad de los bots es para ayudarnos a automatizar tareas. Sobre todo en empresas tecnológicas tenemos ejemplos de robots como Hubot diseñados directamente para ejecutar scripts de forma automática bajo el pedido de los ingenieros de Git Hub. Pero también a nivel personal podemos utilizar el bot IFTTT para automatizar las tareas más banales de nuestro día a día digital o relacionarnos con nuestros aparatos yate.
Chat bots para asesorar
H & M dispone de un bot que ayuda a seleccionar "outfits". Lo que hace es sugerir ropa y el usuario sólo tiene que indicar si le gusta o no, según indique el bot la guarda entre la ropa preferida, para luego poder comprar, o la descarta y aprende qué nueva ropa sugerir .
Chat bots para jugar
Los más veteranos recordarán aquellos juegos de línea de comandos consistentes en aventuras conversacionalescomo por ejemplo La Aventura Original pues bien, existen chat bots de juegos en la misma línea como por ejemplo Escape the haunted forest.
También existen bots de los juegos casual más habituales de puzzle y preguntas tipo trivial.
Plataformas que soportan chat bots
Si bien un bot puede estar integrado directamente en una App móvil o en una web, lo más habitual es darles de alta en las plataformas de red social que los soportan. De esta manera el bot es mucho más cercano al usuario ya que no es necesario ni que abra una App ni que vaya a una web si no que lo puede encontrar dentro de su red social habitual.
La gran excepción como ya sabréis es que, a estas alturas, Whatsapp no soporta la integración de bots.
El resto de plataformas sí que los soportan, como por ejemplo Facebook Messenger, Telegram, Slack, Kick, y muchos más. Según el público objetivo querremos integrar nuestro chat bot en una plataforma o en varias.
Servicios de Inteligencia Artificial para chat bots
A la hora de desarrollar un bot, no lo hacemos programándolo desde cero. Aprovechamos los servicios que ya existen en la web y que nos ayudan en dos ámbitos. Por un lado solucionan mucha parte de la arquitectura del chat bot y por otro nos facilitan soluciones de machine learning ya entrenada para contextos en concreto.
Podemos citar, por ejemplo, el conocido Watson de IBM, o el recientemente adquirido por Google Dialog Flow.
¿En qué lenguaje de programación es necesario desarrollar un chat bot?
Un bot no deja de ser nada más que un programa informático alojado en un servidor y que puede presentar una o más interfaces de usuario (dentro de un site, una app, etc.) o integrarse con otros sistemas vía WS.
Así pues cualquier lenguaje de programación con capacidades de entrada / salida puede servir. Digamos que entre los más populares cualquiera. Ruby, Python, Go, Java, C#, incluso php. Pero también es cierto que el uso de JavaScript se está popularizando.