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:

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.

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.


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.

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:

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:

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.

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.

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ó.

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.



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

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

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.

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.

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.

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

Training

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

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.

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.

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.

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.


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.

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.

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.

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.

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.

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

Integraciones con otras aplicaciones

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.

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.

Deja una respuesta

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