Tribalyte Technologies Tribalyte Technologies
  • Inicio
  • Misión y visión
  • Nuestros expertos
  • Nuestras soluciones
  • Casos de éxito
  • Blog
  • Contáctanos
  • Únete al equipo
Tribalyte Technologies Tribalyte Technologies
  • Inicio
  • Misión y visión
  • Nuestros expertos
  • Nuestras soluciones
  • Casos de éxito
  • Blog
  • Contáctanos
  • Únete al equipo
Abr 06

Cómo crear un bot conversacional con DialogFlow

  • abril 6, 2020
  • Alvaro Gomez
  • 1 Comment
  • Consejos tecnológicos, Tecnologías

¡Hola! Soy Troy McClure, tal vez me recuerden de otros posts como “¿Identidad digital? ¿eso que es?” o “Mi primer proyecto en React”… Fuera de bromas. ¿Qué tal? ¡Me alegro de veros!. Hacía tiempo que no nos leíamos. Espero que sigáis con las mismas ganas de aprender nuevas tecnologías como nosotros, porque hoy vamos a atacar algo nuevo. Y con esto me refiero a un bot conversacional para integrar prácticamente con cualquier plataforma. Ya puedo oíros diciendo: “¿Cómo lo vamos a hacer? ¿No están esos bots basados en inteligencia artificial? Eso demasiado costoso de implementar”. Pues como no podía ser de otra manera, el enorme Google tiene la solución para nosotros con DialogFlow. 

DialogFlow es una plataforma que nos permite crear bots conversacionales configurables encima de su maravillosa IA de procesamiento de lenguaje natural, esto nos dará el poder de jugar con un IA entrenada con prácticamente “todos los datos del mundo” (Google, a veces das un poco de miedo…) sin necesidad de gastar el tiempo y dinero que esto conlleva, y adaptándola a nuestras necesidades.

Hoy cubriremos una mínima parte de lo que se puede hacer con esta herramienta, pero nos dará una idea del potencial que tiene y en próximos blogs podremos utilizarla más a fondo.

Con todo esto, nos dejamos de rodeos y vamos a crear un chatbot básico para pedir cita en un peluquería. ¡Dentro intro! (Ups, disculpad, tengo alma de Youtuber).

Conceptos principales

Para la creación del bot debemos conocer algunos conceptos básicos para entender cómo implementarlo. Estos son:

  • Intenciones (Intents): Son los objetivos que tiene nuestro usuario al hablar con el chatbot. Se pueden simplificar en las frases que el usuario escribirá en el chat para conseguir su objetivo. En nuestro caso, por ejemplo: “Quiero reservar hora para mañana en la peluquería”.
  • Entidades (Entities): Son los datos que queremos conseguir del usuario o con los que realizaremos ciertas acciones. Para nosotros: 
    • El día de la cita
    • La hora de la cita
  • Contexto (Context): Se utiliza para guardar información entre intentos para poder hacer un lenguaje más natural.
  • Cumplimiento (Fulfillment): Es una función opcional que nos permitirá obtener, modificar y validar datos del endpoint deseado directamente desde el bot. Este apartado lo trataremos en próximos blogs.

image1

 

Creación del agente

Para comenzar, nos vamos a la página de DialogFlow https://dialogflow.com/, nos registramos con nuestra cuenta de google y creamos un nuevo agente. Al hacer esto se nos solicitará el nombre del agente, idioma, zona horaria y si queremos asociarlo a algún proyecto existente, como por ejemplo, un proyecto de Firebase.

En este caso nos interesa un proyecto nuevo, ya que no queremos integrar aún, pero sed libres y juntadlo con vuestras bases de datos si queréis ir más allá. En cuanto al idioma os recomiendo que elijáis uno con el que estéis familiarizados, o puede que la IA sepa hablar mejor que vosotros 😉

Al crear nuestro agente, por defecto, tenemos definidas intenciones de error y de saludo, por tanto, nos pondremos directamente a crear la intención de reservar cita.

Creación de intenciones

Nos dirigimos al apartado “Intents” y creamos nuestra primera intención que llamaremos “Reservar cita”.

En este caso no necesitamos contexto, únicamente añadir algunas frases de entrenamiento, estas son las frases que diría nuestro usuario para reservar la cita, como por ejemplo:

  • Quiero hacer una reserva
  • Quiero hacer una reserva para mañana
  • Querría hacer una reserva para mañana a la 1

Por tanto, introducimos estas frases como frases de entrenamiento. Al hacerlo, veremos que nos aparecen seleccionadas ciertas partes de la frase con un tipo de entidad, en estos casos deberemos eliminar las entidades que no nos interese guardar y quedarnos con las que son importantes. Aquí va un ejemplo:

image6

 

Con la frase “Querría hacer una reserva para mañana a la 1” se detectan dos parámetros, un número y una fecha. En este caso, la fecha nos interesa porque nos aporta la hora de la cita, pero el número no nos aporta nada de información, por tanto, lo eliminamos de la lista. 

Una vez definidas las frases de entrenamiento, pasamos a “acciones y parámetros” donde podremos indicar cuáles de las variables obtenidas son obligatorias, y en caso de no haberlos obtenido con las frases del usuario, crear nuevas preguntas para obtener esa información.

Nosotros vamos a marcar la fecha como parámetro obligatorio. Para ello, marcamos la casilla de “Required”.

image4

Y como por ejemplo con la frase ya añadida “Quiero hacer una reserva” no tenemos aún la información de la fecha, vamos definir nuevas preguntas para que el usuario nos la facilite. Para esto, hacemos click en “Define prompts” y escribimos una o varias preguntas para obtener el dato que necesitamos.

image2

En este punto, ya podemos hacer click en “Save” y esperar a que nos aparezca el mensaje de que nuestro bot está entrenado. Una vez hecho esto, puedes probarlo en la barra de texto que aparece arriba a la derecha y comprobar que si, por ejemplo, tu primera frase es “Quiero hacer una reserva” el bot te contestará con la pregunta para obtener la fecha. Sin embargo, si le decimos “Querría hacer una reserva para mañana a la 1” ya tendría toda la información necesaria. En caso de que la segunda opción ocurriese, sería interesante darle feedback al usuario de que ha hecho bien su reserva y para ello, vamos a crear una respuesta para cuando todas las variables necesarias hayan sido obtenidas.

Creación de respuestas

Nos vamos al apartado “Responses” y creamos una respuesta final. Podemos, incluso, mostrar los valores obtenidos en la charla poniendo “$nombre-de-variable”, en nuestro caso el mensaje quedaría así: “Se ha realizado la reserva para la fecha $date-time”.

Como podéis ver, es muy sencillo crear un bot en DialogFlow. Para finalizar, vamos a ver cómo crear un parámetro personalizado; en este caso, una lista de nombres de peluquerías. Este parámetro no es otra cosa que una entidad, así que, vamos a ello.

Creación de una entidad

Nos vamos al apartado “Entities” y creamos una nueva entidad, como decíamos, vamos a crear una lista de dos locales y a cada uno de los locales le vamos a poner posibles sinónimos por los que los usuarios pudieran hacerles referencias, quedando algo como esto.

image3

Con esto, y marcando la casilla “fuzzy match”, nuestros usuarios podrán referirse a uno de los dos locales de diferentes formas como: “la peluquería moderna” o “en la que trabaja Manuel”.

Ahora volvemos a la intención de reservar y añadimos el local como parámetro obligatorio, y creamos algunas frases para que nos solicite el local, como ya hemos hecho en el apartado anterior, y testeamos nuestro bot.

Una vez que quedemos satisfechos con el resultado, podemos pasar a la publicación.

Publicando nuestro bot

Nos vamos al apartado “Integrations” y veremos que tenemos gran cantidad de opciones para integrar nuestro bot, desde Slack hasta Telegram pasando por Hangouts, Messenger, Twitter e incluso llamadas telefónicas. Por simplicidad, activamos la demo web y vamos al link que nos proporciona. Allí podremos testear nuestra ¡obra maestra!

image5

Conclusión

Como habéis comprobado, crear un bot es muy sencillo. Cierto es que todavía nos falta la integración con servicios reales de donde obtener y guardar los datos, pero eso lo atacaremos en próximos blogs. 

Espero que os gusten tanto como a nosotros estas tecnologías tan útiles e intuitivas y nos vemos próximamente con más y mejor contenido. ¡Un saludo y hasta la próxima!

Artículos Relacionados:

  • Creando nuestro primer proyecto de ReactJSCreando nuestro primer proyecto de ReactJS
  • PRINCIPIOS S.O.L.I.D. - INTERFACE SEGREGATIONPRINCIPIOS S.O.L.I.D. - INTERFACE SEGREGATION
  • Día del InventorDía del Inventor
  • Principio Solid Liskov ¿Cuáles son los principios S.O.L.I.D.?"Principio Solid Liskov" ¿Cuáles son los principios S.O.L.I.D.?
  • Ejemplo práctico de Blockchain para entender bien cómo funcionaBlockchain: ejemplo fácil y práctico para entender cómo funciona
  • Facebook
  • Twitter
  • LinkedIn
  • E-Mail

About The Author

Álvaro es ingeniero de software. Desarrolla aplicaciones Blockchain utilizando tecnologías como TypeScript, Ionic y Solidity. Apasionado por aprender nuevas tecnologías en concreto las relacionadas con cómputo e inteligencia artificial. Su objetivo es siempre estar al día en el mundo del software y utilizar las tecnologías más punteras.

1 Comment

  1. Jesus Arenas
    agosto 22, 2020 at 1:28 am · Responder

    Excelente tutorial, gracias por compartir tu conocimiento.

Responder a Jesus Arenas Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

ELIGE UNA CATEGORÍA

  • Blockchain
  • Consejos tecnológicos
  • Desarrollo de aplicaciones
  • Desarrollo de software
  • Sistema embebido
  • Tecnologías

Suscríbete a nuestra newsletter y entérate de las últimas tendencias tecnológicas.

Una compañía dedicada al desarrollo y la mejora de plataformas tecnológicas globales.

SOCIOS

Contacto

Glorieta de Quevedo 8 6º2
28015 Madrid (ESPAÑA)
Phone: +34 910 177 514 E-Mail: contact@tribalyte.com Web: www.tribalyte.com

AYUDA

  • Política de privacidad
  • Política de calidad
  • Términos de uso

CERTIFICACIONES

INTERNACIONALIZACIÓN

  Tribalyte     Technologies S.L. en   el Marco del Programa de Iniciación a la Exportación del Prog. ICEXNEXT, ha contado con el apoyo del ICEX y con la cofinanciación del fondo Europeo FEDER. La finalidad de este apoyo es contribuir al desarrollo Internacional de la empresa y de su entorno.
Esta página web utiliza cookies para mejorar su experiencia de usuario y para recabar estadísticas anónimas de uso. Aceptar Más información