QUÉ ES DIALOGFLOW

Dialogflow es una tecnología de interacción humano-ordenador basada en conversaciones de lenguaje natural. El proceso que sigue un agente Dialogflow desde su invocación hasta al cumplimiento de ésta es similar a responder la pregunta de alguien.  En primer lugar, para poder hablar con un agente se necesita invocarlo, que para hacerlo más real, se han programado distintas formas de saludar, como si fuera una conversación real. En ese momento, ya se puede hacer cualquier pregunta al agente. Dialogflow detecta cuál es la intención del usuario o a qué tema se refiere y mediante esto, y una lógica para analizar la pregunta del usuario, responde a la petición del usuario.

Para que el agente entienda lo que el usuario pide, éste necesita ejemplos de cómo se podría formular esta pregunta de distintas formas. Los programadores añaden estas permutaciones en la sección de “usuario” señalando a qué intención pertenece. Cuántas más variaciones se añadan a una misma intención, mejor podrá comprender al usuario.

Dialogflow es personalizable y dispone de dos versiones: la versión gratuita para pequeñas y medianas empresas, y una opción de pago para grandes empresas. Además, dispone de un sistema de voz y chat para realizar las peticiones en distintos idiomas, y es un sistema muy intuitivo y potente.

Esta tecnología dispone principalmente de dos opciones para integrar su sistema:

  • La primera consiste en integrarlo como un bot en plataformas de chat ya existentes, y muy usadas hoy en día, como Slack, Facebook Messenger, Skype, Twitter y Telegram.
  • La otra opción consiste en integrar Dialogflow en un proyecto propio. En este caso está disponible en Java, NodeJS, Phyton,…

Anteriormente esta tecnología se llamaba API.AI cuando era de Speaktoit, pero la compró Google en Septiembre de 2016. Un año más tarde, el 10 de Octubre de 2017, la renombró y pasó a llamarse Dialogflow.

CÓMO FUNCIONA DIALOGFLOW

Para poder iniciar una conversación con Dialogflow, se sigue un procedimiento similar al de mantener un diálogo con una persona real. Por ese motivo, para explicar su funcionamiento, se hará una comparación entre una conversación real y una con un agente Dialogflow.

 

Para empezar una conversación con una persona, lo habitual es saludar primero. Con Dialogflow sucede lo mismo, para invocarlo, tienes que iniciar el diálogo con un mensaje de bienvenida, para lo cual se han programado diferentes formas de saludo, para hacerlo lo más natural posible.

 

Una vez invocado el agente Dialogflow, el usuario ya puede proceder a hacer las preguntas que desea. El developer se encarga de pre-programar diferentes versiones de posibles preguntas que se le puedan pedir, para obtener la información que quieren conocer los usuarios. Como se puede ver en la captura anterior, en la sección de Action, se declaran las variables necesarias para poder hacer una llamada a la API, algunas de ellas son propias de Dialogflow y otras están creadas por el propio developer, para poder obtener la información necesaria.

Cada una de ellas está relacionada con un color, para poder ser más fácilmente detectables. La lógica de Dialogflow se basa en la búsqueda de las preposiciones relacionadas, el uso de mayúsculas y un algoritmo para poder localizar los distintos tipos de variables dentro de la pregunta que ha introducido el usuario.

También se puede observar que las variables puedan ser obligatorias, por la cual, si el usuario no las ha incluido en su pregunta, hay una serie de preguntas preprogramadas para poder obtener la información sobre la variable respectiva.

 

Un agente Dialogflow tiene que tener programado distintos tipos de información. Aquí es donde entra en juego Contexto, el apartado donde se establecen los distintos temas de conversación que puede mantener con el agente. Con la lógica de Dialogflow y las variables que ha introducido el usuario, el agente detecta de qué tema están hablando y le responde en consecuencia. Lo mismo pasa con una conversación real, nuestro cerebro busca de forma automática el tema de la conversación a la que se está refiriendo la persona con la que se está hablando.

 

Una vez el agente Dialogflow ha entendido la pregunta del usuario y ha obtenido toda la información necesaria para poder hacer la llamada a la API, procede a responder. Las respuestas, al igual que las preguntas, también han sido pre-programadas por el developer.

Como se puede observar, a las respuestas pre-programadas hay unos caracteres precedidos por el símbolo $, que hacen referencia al tipo de variable. El agente reemplazará la variable por el valor de ésta, para hacer que la respuesta sea más natural. Es importante remarcar que el agente escogerá una respuesta u otra, en función de la información que el usuario ha introducido. En el caso de arriba, por ejemplo, la tercera opción sólo será utilizada si el usuario ha introducido la película que quiere ver.

 

En el diagrama anterior representa el ejemplo que ha utilizado Eva Olesa, en su TFG, que seguidamente explicaremos. Este diagrama representa el proceso que se sigue desde que el usuario hace una pregunta hasta que recibe la respuesta. El procedimiento era el siguiente: el primer paso es cuando el usuario envía toda la información necesaria para hacer la llamada a la API, donde en este caso hay cuatro variables: lugar, día, película y número de tickets; las dos primeras marcadas en * por su carácter obligatorio.

Entonces a la parte del agente de Dialogflow se puede observar un signo de interrogación, es aquí donde entra la parte más importante del proyecto que han realizado aquí: la creación de un sistema que permita detectar cuando el agente Dialogflow se ha perdido, después de 3 oportunidades para poder coger el hilo de la conversación. En este caso, el usuario será redirigido a un agente real con las mínimas molestias posibles para el usuario.

NUESTRO PROYECTO CON DIALOGFLOW

Un cliente de nuestra empresa pidió un sistema similar al que ya tenía, que le permitiera reducir la carga de trabajo de su centro de atención al cliente y atender a las peticiones realmente importantes con la mayor rapidez posible. La solución que se propuso al cliente era implementar el sistema de Dialogflow en las peticiones que se realizaban habitualmente en este centro, donde la mayoría de éstas solían ser preguntas frecuentes que se podían responder con una respuesta determinada. La idea principal de la solución propuesta, consistía en que una vez el usuario entrara en contacto con el centro de atención, éste fuera dirigido en primera instancia a un agente Dialogflow y sólo en caso de que éste no pudiera resolver la petición el usuario, fuera redirigido a un agente real.

La idea nos pareció muy interesante también para aplicarla en otros ámbitos y otros futuros proyectos.  Aprovechando que nuestra developer Eva Olesa tenía que realizar su TFG, se dio la oportunidad de que realizara este proyecto y a la vez analizar todo lo que podría ofrecer esta tecnología y sus ventajas.

Una vez elegido el proyecto, se estudió las distintas tecnologías que nos ofrecía el mercado en este ámbito y una de las opciones que salió como posible tecnología para usar, era Rasa NLU ya que consistía en una tecnología open source muy potente con una infraestructura muy consolidada. Finalmente, pero, se decantó para la opción de Dialogflow ja que ésta ofrecía una opción que se adaptaba muy bien a nuestras necesidades y contaba con los servidores potentes y fiables de Google. Podéis conocer más información en su web oficial.

Otro estudio que se realizó fue analizar en qué idioma se realizaría la aplicación y se eligió el inglés porque disponía de una plataforma mucho más robusta.

Una vez terminado este proyecto, nos demostró la viabilidad tecnológica y económica de implementar un sistema de reserva automática de eventos utilizando una Api de lenguaje natural. Y además, hemos sacado la conclusión de que esta tecnología es aplicable en cualquier sector, desde mostrar la cartelera de cine hasta realizar una consulta en una asesoría, y que la implementada en este proyecto era una de las múltiples opciones que ofrece este asistente inteligente.