Expectativas

Con frecuencia, las respuestas de un bot deben cambiar en función de lo que anteriormente haya dicho. Por ejemplo, si el bot ha preguntado al usuario ¿Quieres casarte conmigo?, un como respuesta tendrá un significado muy diferente a si el bot le hubiera preguntado ¿Te gusta el chocolate?. Para conseguir que el bot actúe correctamente en los diferentes contextos podemos emplear expectativas.

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, ya que las reglas que dependen de una expectativa 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). Si no queremos que una expectativa 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 preguntas sobre el bosque.

Programación de expectativas

Para conseguir comportamientos complejos, podemos integrar el manejo de expectativas en las funciones del bot, utilizando la instrucción setExpectation(nombreExpectativa, duración) para crear una expectativa y la instrucció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