CURSO-DIALOGFLOW

Escrito por José Manuel Ortega en Planeta Chatbot.

DialogFlow es un servicio que permite a los desarrolladores construir conversaciones usando técnicas de procesamiento de lenguaje natural. Los sistemas construidos con dialogflow proporcionan la base de conocimientos sobre la cual trabajan los sistemas de inteligencia artificial.También proporciona un asistente de voz que permite crear nuestros propios asistentes de voz mediante las SDKs para Android, IOS e incluso tiene librerías para varios lenguajes como JavaScript,Java,Python.

Hay multitud de aplicaciones que podrían crearse empleando este servicio:

  • Para tomar dictados o notas en tu aplicación.
  • Búsquedas en la web.
  • Dictados.
  • Interacción con distintos componentes, lanzar otras aplicaciones, realizar ciertos cambios en configuración.
  • Buscar sinónimos

Podemos iniciar sesión en este servicio si disponemos de una cuenta de Google.

Una vez registrado ya sea usando la cuenta de Google o ingresando los datos desde cero,podrás acceder directamente a la interfaz de donde puedes crear tu asistente(agente) de AI virtual. Cada asistente que creas y al cual le enseñas habilidades específicas se llama “agente”. Para empezar, puede crear su primer agente haciendo clic en el botón “Create new agent” en la parte superior izquierda:

img 60a76e8029e5f

Al crear el agente,también creará automáticamente un proyecto de Google Cloud Platform de forma que todo estará automatizado.Cuando haya introducido la configuración de su agente, seleccione “Save” junto al nombre del agente para guardar la configuración.

img 60a76e80ab443

Al crear un agente nuevo se crean unos intents por defecto.Los intents son los componentes predefinidos o definidos por el desarrollador y se encargan de procesar las solicitudes de los usuarios.Los “intents” (intenciones) permite crear conexiones entre las entidades y lo que el usuario dijo en lenguaje natural con las acciones que quieres que haga el programa.

img 60a76e812950b
img 60a76e818120e

En la sección User says se definen aquellas frases que el usuario va a escribir para interactuar con el agente. En esta misma pantalla abajo del todo podemos ver las respuestas que vienen definidas por defecto.

img 60a76e81c49f4

La consola de prueba

Una vez que se ha creado el agente, puede probarlo con la consola de prueba a la derecha. Puede introducir consultas en la parte superior y se enviarán al agente, mostrándole lo que se devolverá como respuesta:

img 60a76e8225f1c

Si se desplaza hacia abajo en el lado derecho de los resultados, verá más detalles cómo se interpreta la petición del usuario. Debajo hay un botón llamado “Show JSON”. para ver cómo la API le devolverá este tipo de respuesta en su aplicación.Se abrirá el visor de JSON y le mostrará una respuesta de JSON similar a ésta:

img 60a76e829747c

Cómo añadir una pequeña conversación

Mediante la función Small Talk puede añadir un poco de inteligencia a su agente. Esto proporciona una lista de respuestas a las preguntas más comunes.Para activarlo, vaya a la opción de menú “Small Talk” a la izquierda y haga clic en Enable.

img 60a76e830ec2d

Después de habilitar, si se desplaza hacia abajo se puede ver una lista de de frases por defecto. Por ejemplo en la sección About agent puede añadir respuestas diferentes a la pregunta “Who are you?”. Al añadir frases, verá la cifra de porcentaje al lado de la sección para mostrarle cuánto ha personalizado su agente.

img 60a76e83921f4

Si va a la consola de prueba y realizar una petición con la frase “who are you?” ,debería responder con una de las respuestas que ingresó.

img 60a76e84035fd

Agentes preconstruídos(Prebuilt Agents)

Son una colección de agentes desarrollados que vienen por defecto en la consola de desarrolladores.Puede descargar agentes a su cuenta que se ajusten a un determinado caso de uso y utilizarlos como base para crear una interfaz de conversación para su aplicación, bot o dispositivo.

img 60a76e845865a
img 60a76e84e5393
img 60a76e85453fa

Al importar el agente weather vemos que tenemos una serie de intents definidos por defecto.

img 60a76e85a34c9

Si abrimos el intent de weather vemos como tenemos por defecto el contexto del agente(weather) y algunas frases.

img 60a76e860b212

A nivel de acciones vemos como tenemos una acción por defecto que además acepta como parámetros la fecha,localización y unidad de medida de la temperatura.

img 60a76e866710f

Si realizamos la siguiente consulta(weather in Barcelona in 2 days) al agente, vemos como está seteando en el parámetro address la ciudad de Barcelona y en el parámetro date-time la fecha correspondiente a dentro de 2 días.También vemos el intent y el action que está procesando la petición.A nivel de respuesta no devuelve nada ya que por por defecto no tiene ninguna respuesta definida.Para que los resultados fueran reales habría que conectar con una api de terceros de un servicio meteorológico.

img 60a76e86d51a9

img 60a76e872a161

webHook

Para comunicarnos con una api externa,por ejemplo para obtener los datos meteorológicos de un servicio externo, es necesario habilitar la sección webHook. La configuración de un webhook permite pasar la información de un intent a un servicio web y obtener un resultado de ella.

img 60a76e8779c3a

A nivel de autenticación soporta 2 tipos:

  • Autenticación básica(BASIC AUTH) con nombre de usuario y contraseña
  • Autenticación con cabeceras(HEADERS) de autenticación

En el siguiente enlace podemos encontrar un ejemplo de configuración para el agente weather

Tabla de contenidos

Basic Fulfillment and Conversation Setup | Dialogflow

We can’t expect users will always provide all the information our agent needs to fulfill their request. In the case of…

dialogflow.com

img 60a76e8816447

Training

Podemos ver un histórico de peticiones que se han realizado al agente.

img 60a76e88d2157

Intents y contexts

Los intents y contexts son una forma de enseñar a nuestros agentes de IA acciones más específicas que pueden ser personalizadas tanto como queramos.

Un intent es un concepto que el agente puede entender y reaccionar para una acción específica. Una intent tiene asociado uno o más contextos de conversación entre el usuario y el agente de forma que podemos introducir frases que el usuario podría decir a nuestro agente. Algunos ejemplos podrían incluir “Mostrar las últimas noticias de tu periódico favorito”, “Enviar un documento al equipo de desarrollo”. Cada uno de estas frases serían intents personalizados que podríamos entrenar a nuestro agente para a entender y dar respuestas a las preguntas.

Crear un intent

Para crear un intent, sobre el agente podemos utilizar el botón “Create intent” situado en la parte superior de la página de la consola.

img 60a76e896178a

El primer paso es darle un nombre a nuestro intent y añadir donde dice “User says” el texto que utilizará el usuario para realizar una petición a nuestro agente.Podemos añadir tantas frases y expresiones como queramos.

En la sección Action se pondrán aquellas acciones que realizará el agente cuando atienda dichas peticiones. Para crear una “acción”, el asistente le devolverá en forma de autocompletado aquellos nombres de “acción” que va a poder responder en su aplicación web.

img 60a76e89df3d1

img 60a76e8a275a7

Los intents también se pueden disparar por eventos que se pueden añadir en la sección events.

Por último habría que definir la respuesta o posibles respuesta en la sección responses.

img 60a76e8aa175d

Probar el intent creado

Para probar el intent basta con ir la consola de prueba a la derecha y escribir la frase que has puesto en la sección user says, en este caso obtenemos la respuesta que hemos definido.Con el botón show JSON podemos ver cómo quedaría la respuesta para el caso de que vayamos a integrarlo en una aplicación.

img 60a76e8b17fb8
img 60a76e8b6b004

El agente responde con una de sus respuestas definidas,de forma que cuando se proporcione la frase más de una vez, el servicio aprende a dar una respuesta que mejor se adapte a la petición.Cuantas más frases proporcione en el intent con respuestas más específicas, el agente será capaz de responder de forma más óptima.

Uso de contextos

Al iniciar una conversación con el agente ,éste necesita conocer la manera de seguir con la conversación con el usuario a medida que la vaya haciendo preguntas. Si el usuario dice alguna palabra que está fuera del contexto de la conversación,es posible que el agente no sea capaz de seguir la conversación con el usuario ya que la palabra está fuera del contexto de la misma.

Aquí entra en juego la sección de Context donde poder crear contextos para realizar un seguimiento de lo que el usuario y el agente han estado hablando. Sin contextos, cada frase estaría completamente aislada de la anterior.

Los contextos están diseñados para transmitir información de conversaciones anteriores o fuentes externas (por ejemplo, perfil de usuario, información del dispositivo, etc.). Además, se pueden utilizar para administrar el flujo de conversación.

Aquí tendrá una sección para el contexto de entrada(add input context) y otra para el contexto de salida(add output context). Los contextos de entrada le indican al agente en qué contexto debe ejecutarse el intent. Los contextos de salida son los que permiten configurar un intent para ser recogidos en la conversación.

Si vuelve a probar el agente vemos cómo aparece una nueva sección contexts en la respuesta.

img 60a76e8bd5c9c

Entidades

Una entidad es un concepto que permite que los agentes entiendan cuando se mencionan por parte del usuario en la conversación. Cada entidad tiene un rango de valores y propiedades que contienen los parámetros que el agente necesitará entender para responder a este concepto.Hay tres tipos de entidades en dialogflow:

  • Sistema: Tipos de entidad definidos como fecha, color, correo electrónico.Puede encontrar una lista completa de estas entidades en la documentación sobre entidades del sistema.
  • Desarrollador: Entidades que creamos para nuestras necesidades individuales.
  • Usuario: Se crean para usuarios individuales mientras utilizan el asistente y pueden ser generados por la API para ser utilizados en una sola sesión.

Los “entities” tiene presentes dos ideas fundamentales, algo así como el concepto o la idea principal de una oración (la palabra clave), y aquellos elementos que conforman el concepto y las diferentes formas en la que podemos nombrar a estos elementos (sinónimos).

El objetivo de utilizar un asistente de voz , es que entienda qué quiere decir el usuario dada una frase o una orden, la frase debe de tener un concepto o idea principal en la que se basa la frase, en otras palabras; una palabra clave, por ejemplo ciudades.

Crear una entidad

Como datos esenciales hay que definir el nombre de la entidad y el principal término asociado a dicha entidad junto con sinónimos de este término.

img 60a76e8cb5f50

Uso de su entidad en un intent

En la página de intents del agente hay que incluir la entidad dentro las frases definidas. Para ello hay que enseñar al agente que “myEntity” es una entidad, escriba esa palabra y al seleccionarla aparecerá una lista desplegable.

img 60a76e8d32d3d

Al incluir la entidad myEntity, debe aparecer como parámetros en el intent. También aparecerá como parámetro en el nombre la acción.

img 60a76e8d802ab

Ahora al escribir una frase que contenga las palabras bot o robot ,éstas se resaltarán en color y se marcarán como una entidad del tipo myEntity.

img 60a76e8ddc2eb

Si lo probamos con la consola vemos cómo obtenemos la respuesta junto con el parámetro myEntity=robot

img 60a76e8e37b89

img 60a76e8ebd1be

img 60a76e8f22c04

Integraciones con otras aplicaciones

img 60a76e8f7b8a3

Web Demo le permite compartir públicamente su agente a través de una página generada o incrustarla en su sitio web existente a través de un iframe.Para activarlo lo podemos hacer desde la opción de menú integrations.

Una vez habilitada, verá una ventana con la siguiente información:

    • URL de la página web generada en la que se publicará el agente.
    • Un enlace a la configuración del icono y descripción del agente.
    • Código para incrustar en un sitio web a través de un iframe de HTML.

img 60a76e90aa2df

La página web generada incluye el agente con el que los usuarios pueden interactuar y enlaces para integrarlo en otras aplicaciones, enviarlo por correo electrónico y otros enlaces para compartir el agente en redes sociales como Twitter, Google Plus o Linkedin.

img 60a76e91d8b63

img 60a76e9235308

Deja una respuesta

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