Reglas

La conversación se lleva a cabo mediante reglas que contienen las posibles respuestas del bot. Cada regla incluye una entrada y una o varias salidas. Si el texto que escribe el usuario cumple el patrón indicado por la entrada, se mostrará alguna de las salidas.

Por ejemplo, imaginemos que tenemos la siguiente regla:

<rule>
     <input>hola</input>
     <output>¿Qué tal? Cuéntame lo que te ocurre.</output>
     <output>Hola. ¿Cómo estás?</output>
</rule>

Si el usuario introduce el texto «hola», se mostrarán sucesivamente las salidas definidas para esa regla.

Si el texto introducido por el usuario cumple varias reglas, solo se aplicará la primera regla detectada. Por tanto, es importante asegurarse de que las reglas se evalúen en el orden adecuado. Este orden depende de los siguientes factores, ordenados de mayor a menor importancia:

  • Expectativas: las reglas con atributos expectation tienen prioridad sobre las reglas que no incluyen este atributo. No obstante, estas reglas solo se aplicarán si se ha establecido previamente dicha expectativa. Por ejemplo, el patrón <input expectation="expectativa1">sí</input> tiene prioridad sobre el patrón <input>sí</input>. Consulta el tutorial 2, para ver un ejemplo de cómo se utilizan las expectativas.
  • Prioridad: el atributo priority permite dar prioridad a una determinada regla. Cuanto mayor sea el valor de este atributo, mayor será la prioridad de la regla. Por ejemplo, el patrón <input priority="2">sí</input> tiene prioridad sobre los patrones <input priority="1">sí</input> o <input>sí</input>.
  • Número de palabras: las reglas con más palabras tienen prioridad sobre las reglas con menos palabras. Por ejemplo, la regla <input>si hay</input> tiene prioridad sobre la regla <input>si</input>. Si dos reglas tienen el mismo número de palabras, se dará prioridad a la que contenga un menor número de comodines.

Por último, las reglas puede contener el atributo selection. Si no se indica ningún valor para este atributo, las salidas se mostrarán secuencialmente, es decir, en primer lugar se presentará la primera, a continuación la segunda, luego la tercera, etc. Sin embargo, si se indica el valor random cada vez que se active la reglas, se mostrará una de las salidas al azar.

information Aunque el atributo selection pueda parecer útil para que el comportamiento del bot sea menos predecible, no hay que olvidar que es más probable que una determinada salida se utilice dos veces consecutivamente, sin que aparezcan las otras alternativas definidas.