Tutorial 4: Uso de expectativas

Con frecuencia, las respuestas de un bot deben cambiar en función de lo que anteriormente se haya dicho. Por ejemplo, si el bot ha preguntado «¿Quieres casarte conmigo?», un «Sí» por parte del usuario tendrá un significado muy diferente a si el bot le hubiera preguntado «¿Te gusta el chocolate?». Una manera más sencilla de conseguir actúe correctamente en diferentes contextos son las expecativas.

Una expectativa es sencillamente un indicador que podemos activar cuando el bot dice alguna frase y que tiene una duración asociada. Este indicador se emplea para determinar la regla que se elige, teniendo en cuenta que las reglas que dependen de una expecativa tienen prioridad sobre las demás. Por ejemplo, imaginemos que tenemos estas reglas:

<rule>
     <input>boda</input>
     <output setExpectation="preguntaBoda(1)">¿Quieres casarte conmigo?</output>
</rule>
<rule>
     <input expectation="preguntaBoda">sí</input>
     <output>Me has hecho el bot más feliz del mundo.</output>
</rule>
<rule>
     <input expectation="preguntaBoda">*</input>
     <output>Te esperaré toda la vida.</output>
</rule>

Estas reglas definen el siguiente comportamiento.
  1. Si el usuario dice cualquier cosa que incluya la palabra «boda», el bot pregunta «¿Quieres casarte conmigo?».
  2. Si, solo después de que el bot le haya propuesto matrimonio al usuario, el usuario dice «Sí» el usuario responde «Me has hecho el bot más feliz del mundo».
  3. Si, solo después de que el bot le haya propuesto matrimonio al usuario, el usuario dice cualquier cosa que no sea «Sí» el usuario responde «Te esperaré toda la vida».
Las expectativas pueden tener diferentes duraciones. En el ejemplo anterior, la duración se establecía en 1 turno (la duración es el número que se incluye entre paréntesis, por ejemplo «preguntaBoda(1)» define una duración de 1 turno). Incluso, si se desea que una expectativa no caduque nunca, basta con indicar el valor 0.

Esta duración indica el número de turnos que permanecerá vigente la expectativa. Si la duración es 1, pasado un turno, la expectativa desparecerá. Las expectativas con duraciones ilimitadas son muy útiles para que el bot actúe de manera coherente con sus intervenciones anteriores. Por ejemplo, si en una intervención, el bot comenta que está paseando por un bosque, tal vez sea conveniente definir una expectativa para que en diferentes momentos de la conversación el bot pueda responder a las preguntas sobre el bosque que el usuario le plantee.

Programación de expectativas

Para conseguir comportamientos complejos, podemos integrar el manejo de expectativas en las funciones del bot, utilizando la función setExpectation(nombreExpectativa,duración)
para crear una expectativa y la función killExpectation(nombreExpectativa)
para destruirla.


Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012.
Si continúa navegando consideramos que acepta el uso de cookies. Aceptar | Más información