CONSEJO-CHATBOT

Después de haber visto la parte básica de las intenciones y luego las entidades, ahora vamos a pasar a una parte interesante que son los contextos de la conversación.

En una comunicación entre dos personas, el Contexto es el conjunto de circunstancias en las cuales se produce la Comunicación (lugar y tiempo, cultura del Emisor y el Receptor, etc.), para no perder el contexto en una conversación siempre es importante tener información de la frase anterior para seguir teniendo una comprensión en el mensaje.

Por ejemplo, imaginemos una conversación donde exista un contexto:

  • Persona: Hola Nicolás, ¿sabes cuál es el clima en Lima, Perú?
  • Nicolás: Claro que sí, el clima es de 25 grados centígrados.
  • Persona: ¿Y en New York?
  • Nicolás: Es de 12 grados centígrados.

Como verán en esta conversación existe un contexto que Nicolás tuvo que tener para poder contestar la segunda pregunta sobre el clima en New York. Si esta primera pregunta no hubiese existido, no se sabría que deseaba saber la persona. Por ejemplo, si hago la pregunta a Nicolás sin un contexto antes no se sabría que responder.

  • Persona: ¿Ah y en New York?.
  • Nicolás: ¿Disculpa?

No existe contexto es por eso que no se puede saber la intención de la persona.

Ya con este preámbulo, vayamos a configurar esto en Dialogflow, iniciemos creando una intención que se llame: Intent_contexto_1

Ahora, en la parte de contexto vemos dos campos, que dicen “Add input Context” y “Add output Context”.

  • Add input context: En este campo se va a colocar el contexto de donde se está recibiendo la primera parte de la conversación o los contextos anteriores.
  • Add output context: En este campo se va a colocar el contexto a donde se enviará las respuestas siguientes.

De esta forma es como se enlaza la conversación y no se pierda el contexto. En dialogflow existen dos maneras de hacerlo, una que te ayuda la misma herramienta y la otra que sería de forma manual. Nosotros nos centraremos en la primera.

Crear contexto con Follow intent

Dialogflow te ayuda a crear los contextos en las conversaciones mediante los “Follow Intent”. En este caso ya tenemos creado una intención, ahora nos vamos a ir y coloquemos el cursor del mouse encima de la intención, y nos saldrá la opción para poder crear una intención de seguimiento:

Vamos a crear un caso de uso para que tenga mejor entendimiento.

El caso de uso dice así: Una persona ingresara al bot y le consultará a Nicolás si puede hacer una reserva en el hotel, Nicolás le preguntará si es socio del hotel y si ya se había hospedado antes.

Manos a la obra.

En la primera intención colocaremos las frases del cliente y en la respuesta colocaremos las preguntas que el bot le hará.

Perfecto, lo que estamos haciendo es colocar ciertas preguntas donde lo mas probable es que el cliente nos responda SI o nos responda NO.

Entonces comenzaremos a crear el hilo de la conversación, para esto nos vamos a la ayuda ya mencionada antes de dialogflow.

Y vamos a presionar en primera instancia el que dice “YES”.

Y automáticamente como verán se genera una intención debajo de la intención principal.

Tal y como mencioné antes, esto es una ayuda que nos da dialogflow para generar contextos en la conversación, veamos que generó internamente.

Si vemos la intención principal, se generó un alias en el contexto de salida, esto indica que esta enviando esta información al siguiente contexto.

Intencion Principal

Y si vamos a la intención que se creó, veremos que esta recibiendo este mismo alias pero en el campo de entrada.

Intencion de Segundo Nivel

De esta forma es como se va armando el contexto de la conversación, si vemos el nuevo contexto que creó el dialogflow para respuestas “YES”, se verá que la herramienta te ayuda a armar las frases.

Pero sigamos con el caso de uso.

Al responder SI el usuario, entonces lo enviaremos a la siguiente pregunta, para esto generamos una nueva intención debajo de la ultima que se creo y quedaría mas o menos así:

Al hacer esto, veremos que las tres intenciones ya se encuentran enlazadas por los alias que genera la misma aplicacion.

Intencion de segundo nivel

Intencion de tercer nivel.

Perfecto, ahora probemos para ver como quedó:

De esta manera, pueden ir creando un modelo conversacional de manera fácil y sencilla con la ayuda de dialogflow. En el ejemplo anterior si no existe un contexto creado y nosotros le ponemos al bot solamente la palabra SÍ, el bot no entenderá.

Crear contexto de forma manual.

Así como Dialogflow te ayuda creando los contextos de manera automática, hay veces que esta situación no te podrá ayudar y tienes que crearlo de manera manual, para este caso usaremos el ejemplo del clima.

Crearemos una intención y lo configuraremos de la siguiente manera. En este caso, usaremos una entidad de sys.any.

Hasta este punto no hay ningún problema, si probamos nos saldrá la información.

Ahora, que pasaría si yo después le pregunto: “¿Y en Santa Cruz?”

El bot no va a entender por que esta frase no esta dentro de un contexto. Pero vamos a amarrarlo. En la intención vamos a colocar un alias dentro del campo de “Add output context” y lo llamaremos contexto_clima.

Y vamos a crear otra intención más que se llamará: Intent_seguimiento_clima, donde lo configuraremos de la siguiente manera:

Y en la parte de contextos, recibimos la entrada contexto_clima.

Vayamos a probar.

Como verán, también se encuentra funcionando las entidades y se pudo amarrar de manera correcta y manual los contextos en la conversación.

Ahora, dentro del mundo de contextos, también existe un concepto más que se llama Lifespan.

El lifespan es un número que se encuentra al costado de los alias del contexto, donde nos va a indicar la cantidad de veces que nosotros podemos configurar el contexto para que no se pierda. Según la documentación de dialogflow la cantidad de veces que se puede esperar para no perder un contexto es de 5 o en el intervalo de 20 minutos. Si pasa esto, entonces el contexto desaparecerá y el bot ya no entenderá si deseas seguir una conversación.

Ok, si no se entendió, mejor pasamos a un ejemplo.

Vamos a seguir con nuestro ejemplo de las ciudades y en el contexto de la intención principal, vamos a colocar el lifespan que sea 2.

Lo que estamos diciendo al bot que en una conversación y en este contexto, solo reciba como máximo dos frases mas fuera de contexto para que no se pierda. Hagamos el ejemplo:

Ahora a partir de acá, el bot solo aceptara dos frases mas fuera del contexto antes de perderlo.

Probemos 1 vez.

Probemos 2 veces.

Si ahora yo consulto y regreso a la conversación del contexto, ya se habrá perdido por que ya seria una tercera vez y yo configure el contexto que solo reciba dos veces.

Ahora, si lo configuro y coloco el lifespan en 4, veremos que pasa:

Hago la pregunta.

Pruebo 1 vez.

Pruebo 2 veces.

En el ejemplo anterior cuando configure en 2 el lifespan y en una tercera frase, se había perdido el contexto, ahora el lifespan esta configurado a 4, entonces si regreso al contexto de la conversación, el bot responderá sin problemas.

De esta manera es como funciona el concepto de lifespan.

Con lo mencionado, espero poder ayudado a entender un poco mas la parte de contextos de Dialogflow, se extendió un poco el artículo.

En la próxima parte, hablaré de eventos en dialogflow. Esta parte es un poco mas técnica pero muy útil si se desea consultar las intenciones desde fuera de la herramienta.

Deja una respuesta

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