Un chatbot es un programa con el que interactuamos en lenguaje natural.

Aunque puede sonar como una cosa obvia, creo que es importante decir en primer lugar que un chatbot es una aplicación. Una aplicación web porque va a recibir peticiones de los usuarios a través de internet y va a responder a estas peticiones… hasta aquí nada nuevo.

Evidentemente, lo verdaderamente revolucionario es la parte de lenguaje natural. Y digo revolucionario en el sentido de que es un cambio radical con lo que había hasta ahora. Después de pasar por los interfaces de comandos en modo texto, pasarnos luego al paradigma de ratón y ventanas, después a los interfaces táctiles… nos encontramos ahora con esta nueva forma de comunicarnos con una aplicación.

Podemos decir que hasta ahora, ha sido la persona la que tenía que aprender como relacionarse con la aplicación, aunque por supuesto, con los interfaces táctiles esto se había facilitado mucho. Con los chatbots, son las aplicaciones las que tienen que entender al usuario, ahí es nada… ¿no es verdaderamente revolucionario?.

Más allá de un bot muy sencillo, al que se le pueden hacer preguntas sencilllas, a poco que queramos complicar un poco la conversación, nos damos cuenta que las cosas no son en absoluto fáciles. Si queremos acometer un bot con éxito, y no entro ahora en utilizar tal o cual lenguaje, tal o cual servicio, en mi opinión tenemos que tener muy en cuenta un puñado de puntos.

Estos son:

Que entienda lo que el usuario está diciendo lo que quiere hacer

Si queremos que el bot sea digno de ese nombre, tenemos que hacer que entienda mínimamente qué es lo que quiere el usuario. Cuando le escribe, o le habla, y le dice algo como “¿Qué tiempo hará mañana?” es necesario saber qué es lo que quiere el usuario, que este caso es saber si va a llover o hacer sol. Y lo quiere saber para mañana, no para ahora. Así que es necesario por un lado, recoger cuál es la intención del usuario y además, obtener también la entidad cuando que en este caso es mañana.

En una programación “tradicional” tendríamos un analizador léxico y semántico por el que pasaríamos todas las frases del usuario intentando encontrarle significado. También podríamos tener un diccionario con todas las palabras del dominio de negocio y su significado… nada fácil por supuesto.

Afortunadamente, los servicios NLP de terceros han llegado al rescate para librarnos de esta tarea difícil y tediosa. .

Que sepa lo que hay que responder

Una vez pasado el primer trago de entender qué es lo que quiere el usario, viene el segundo gran reto ¿Qué hay que responderle? Por supuesto hay casos en que la respuesta es muy sencilla. Por ejemplo si nos pregunta “¿Cuál es el horario de la oficina?”, la respuesta es obvia e incluso la podremos tener grabada a fuego en un fichero de literales.

El problema por supuesto viene con las preguntas con más enjundia ¿Cual de tus productos me conviene más? o cosas por el estilo. Aquí es donde se abren las opciones, desde tener una repositorio de FAQs mínimamente inteligente para responder al usuario, tener una machine learning que se realimenta de las respuesas ofrecidas a otros usuarios con anterioridad, un motor de reglas, o todo el backend de la empresa.

teens-629046_640

Que sea consciente del entorno del usuario

Un bot debería ser consciente del entorno y de las circunstancias del usaurio. Al menos conocer, por ejemplo, su edad, su género, donde vive, etc. etc. Estos datos pueden ser muy relevantes para poder responderle con acierto.

Afortunadamente, las plataformas de chat como Facebook Messenger nos dan algunos de estos datos sobre el usuario, aunque también el acceso a muchos de ellos se restrigen. Aquí tendremos que pensar en una estrategia que nos permita acceder a la máxima información posible de este usuario, por ejemplo, que se haga fan de nuestra página, que nos de acceso a alguno de sus perfiles públicos, etc.

Aparte de esto, una de las primeras cosa que podremos hacer es conectar su identificador público de la plataforma con el identificador en el sistema de la empresa. Es decir, realizar un login de alguna manera, que nos permite autenticar a este usuario en el sistema. En algun banco, por ejemplo, se está enviado un código por SMS para que el usuario lo introduzca en el chat y demostrar así que es quien dice ser.

Que gestione los diálogos

Si queremos que nuestro bot hable en un lenguaje natural, lo primero que hay que tener en cuenta es que una conversación no es líneal. Nosotros vemos como algo natural el estar hablando por ejemplo del mantenimiento de nuestro automóvil y soltemos una frase del tipo “parece que va a llover” y después de de que nuestro interlocutor aventure un pronóstivo metereológico volvamos a hablar del cambio de aceite como si nada… ¿cómo se hace esto con un bot?

Evidentemente tenemos que implementar un mecanismo de gestión de los diálogos adaptables a esta no linealidad de la conversación. Diálogos padres que lanzan diálogos hijos de manera anidad para que luego vuelvan al diálogo previo, mantenimiento de una “sesión” por cada diálogo que se pueda intercambiar entre los posibles diálogos y que también sirva como input al motor de lenguaje natural… las opciones son muchas y pueden ser muy complejas.

Servicios de backend

Al final un chatbot es una aplicación de frontal que necesita el acceso a los servicios de backend. Evidentemente si estamos haciendo un bot que tarifica un seguro deberemos tener acceso al servicio de tarificación. Obvio ¿no?.

Como pasa con muchos de los desarrollos de webs, apps, y también chatbots, nos podemos encontrar con que los servicios de backend no estén disponibles o ni siquiera estén implementados, pero esta es una lucha diaria con la que tenemos que lidiar.

Lo más normal es que el bot esté desplegado en internet por lo que debemos tener un mecanismo de acceso a estos servicios, publicados en el API Gateway de  la empresa como forma ideal, y resolver los aspectos de seguridad, autenticación y autorización típicos de estas integraciones.

Conclusión

Aunque a primera vista para algunos, un chatbot no sea más que una diversión o cosa anecdótica, desde el punto de vista de la empresa debemos tener en cuenta que es una aplicación de frontal potenciada con servicio de reconocimiento de lenguaje natural (y otros servicios cognitivos) que se enfrentan al reto de hablar de tú a tú con el usuario, y esto no es una cosa trivial… estemos preparados para ello.

Anuncios