Bots con DialogFlow

Publicado por Alejandro Font el

BotsDialogflowArquitectura de SolucionesAsistentes Digitales

En este articulo trataremos de explicar cómo crear nuestro primer bot con la plataforma de Google, Dialogflow.

Por otro lado, aprovecharemos para comentar algunas diferencias vistas con otras plataformas que ya hemos tratado en posts anteriores, como el de bots con Oracle

Lo primero es crear una cuenta en Dialogflow. Esta puede hacerse con una simple cuenta de Google (ya que podemos decir que es prácticamente imposible no tener una).

Actualmente está dividido en dos planes: Estandar, que es el gratuito con ciertas limitaciones y sin SLA, y Enterprise, que ya contiene ciertas garantías y escalabilidad en función de nuestras necesidades en Google Cloud.

Como aprende el bot

Lo primero que haremos es crear un agente. Esto es un tendencia que he notado desde hace un par de meses: ya no se habla tanto de Bots o ChatBots sino mas bien de agentes o asistentes digitales. De ahí quizá el cambio de nombre en la nueva plataforma de Oracle. Oracle Digital Assistant.

alt

A este agente le iremos creando Intents, que serán nuestros casos de uso, a los que a su vez asociaremos frases que iremos dando al agente con el objetivo que aprenda lo mas rápido posible.

En este punto comentar que tanto la plataforma de Google como la de Oracle trabajan con unos motores de inteligencia muy rápidos. De modo, que con solo guardar nuestro bot, ya lo tenemos listo para su uso.

Dialogflow permite organizar las respuestas según los canales de integración escogidos. Este punto me parece muy interesante ya que podemos definir ciertos comportamientos en función del canal para un mismo bot, de una manera muy cómoda y rápida. Y aunque parece un hecho sin importancia, en realidad es muy importante, ya que muchas veces el canal marca nuestra forma de comunicarnos o expresarnos.

Integraciones con canales

Este es uno de los puntos fuertes de esta plataforma, ya que actualmente cuenta con una gran cantidad de integraciones ya creadas (one click integration) de forma que el despliegue de nuestro agente o bot en dichos canales es inmediata.

alt

Por su lado, la ultima versión de la plataforma de Oracle ya integra los canales de Microsoft y Slack canales en Oracle Digital Assistant

Lógica de Negocio

Aquí tenemos varias vías, una a través de Cloud Functions for Firebase integrada en la propia plataforma y otra donde simplemente llamaremos a una URL donde estará nuestra lógica de negocio, léase un servidor express con Node.js.

alt

Para ejemplos sencillos, la primera parte ya nos funcionaría. Se trata de añadir en la map de intents, nuestro intent y asociarlo a una función propia donde realizaremos la lógica:

intentMap.set('saludar', salHandler);  
function salHandler(agent) {  
  agent.add('My name is Dialogflow!');
}

Para mas información aquí esta la documentación oficial: https://dialogflow.com/docs/fulfillment/how-it-works

Mas allá de las conversaciones en modo texto

Ya hace mucho tiempo que los bots dejaron de basarse en simple texto plano. Actualmente contamos con imágenes, menús, botones, tarjetas, etc.

Aquí es donde se complican mas las integraciones ya que para conseguir ciertos elementos a nivel de interfaz deberemos conocer las API´s de los canales de destino. Pero cada vez es mas habitual que las propias plataformas nos ofrezcan algún tipo de API que nos abstraiga de la complejidad, conocimiento y mantenimiento de como construir ciertos elementos conversacionales.

En este caso, por parte de Google tenemos la librería https://github.com/dialogflow/dialogflow-fulfillment-nodejs. Pero siempre podremos optar por hacer la integración directa a través de la API del canal. En este caso, Slack es un canal que ofrece una muy buena documentación a nivel de integración y mensajes: https://api.slack.com/docs/messages

Para finalizar este post os dejo una captura de la integración de nuestro AtlassianBot en slack con Dialogflow:

alt

Uno de los puntos fuertes de DialogFlow es la integración directa con Google Assistant o Actions, para poder desplegar nuestro bot en los ya tan de moda altavoces inteligentes: Google Home.

En este sentido la integración es directa y muy rápida y sencilla. Tal como se puede ver en la siguiente imagen de la documentación oficial, lo que tenemos es una capa intermedia Google Assistant, entre el usuario y nuestro agente de DialogFlow:

Image Description

¿Qué plataforma elegir?

Al final, la plataforma escogida para nuestros bots dependerá de muchos factores y no solo de los técnicos o de características funcionales que puedan aportar las plataformas.

También será un factor clave el tipo de bots que queramos implementar. No es lo mismo un bot sencillo de consulta de salas o calendarios que uno que quizá cuente con una posible integración con agentes o seres humanos. Otros factores pueden ser el tipo de componentes o de conversación que queremos establecer entre el bot y los usuarios, canales de despliegue, si tendremos también despliegues en altavoces inteligentes, etc.

Espero que os haya gustado. Para estar al día de próximas entregas, no dudes en seguirnos en Twitter.

Autor

Alejandro Font

Oracle ACE y Líder Técnico de la Comunidad Oracle Fusion Middleware en knowmad mood. Actualmente con foco en Arquitecturas Ágiles y Contenedores