Condición
Definición
Una condition es una expresión que puede ser verdadera (True) o falsa (False). Una condition es una estructura que permite determinar un comportamiento del bot. Algunos de los comportamientos que una condition puede determinar en un bot son la inclusión de instancias por defecto en el scope (véase defaults) o la construcción de dos opciones de respuestas en el corpus.
Nota: Si la condition se cumple (True), el comportamiento definido es ejecutado. Si la condition no se cumple (False), el comportamiento definido no es ejecutado.
Esta estructura típicamente actúa sobre el scope en las conversaciones entre el bot y los usuarios humanos. De esta manera, usando una condition se puede verificar la veracidad de alguna información del conversation scope. Por ejemplo, una condition puede acceder a evaluar el channel por el cual se está comunicando un usuario, el bot con el cual se esté comunicando o la información que se encuentre guardada en el scope de una conversación.
Conceptos relacionados: scope, channel, default scenario, corpusM.
Formato general
Una condition se crea a partir de una expresión válida en Mammut Markdown. Esta se escribe siguiendo el formato de una expresión booleana o expresión lógica.
Expresión | Significado |
---|---|
True | siempre será cierto |
a == b | ¿a es igual a b? |
a != b | ¿a es distinto de b? |
a < b | ¿a es menor que b? |
a <= b | ¿a es menor o igual que b? |
a > b | ¿a es mayor que b |
a >= b | ¿a es mayor o igual que b? |
a and b | El resultado es True solamente si a es True y b es True. De lo contrario el resultado es False |
a or b | El resultado es True si a es True o b es True. De lo contrario el resultado es False |
not a | El resultado es True si a es False. De lo contrario el resultado es False |
path.in_scope | Hay una instancia del path descrito en scope |
path.not_in_scope | No hay una instancia del path descrito en scope |
path.with_ambiguity | Hay una ambigüedad sobre la instancia en scope |
En una expresión booleana de Mammut Markdown a y b pueden asumir un valor literal o un valor variable. En una condition, un valor literal puede ser un número, un string o un boolean. En cambio, un valor variable es definido como un valor que puede cambiar durante la ejecución. Algunos valores variables que se pueden usar para expresar las conditions son los que se ofrecen en la siguiente tabla.
variable | valor |
---|---|
base_closure.channel | Channel ID |
base_closure.sub_channel | Sub channel ID |
base_closure.room_id | Room ID |
base_closure.mammut_id | Mammut bot ID |
Nota: Al scope se accede través del
base_closure
. (véase scope). El channel ID o el sub channel ID varía en cada channel (véase channel).
Ejemplo
Una condition es una expresión que se incluye en una columna identificada con lambda_condition del mammut package. Esta columna aparece en las tablas scenario defaults, corpus y properties.
id | sub_id | scenario_type | event_message | hidden | field | lambda_condition | ui_event | action | source | regional_settings | complexity |
---|---|---|---|---|---|---|---|---|---|---|---|
2 | 3 | Conversation | La quiero. | Carla | es | ||||||
2 | 4 | Conversation | Por supuesto! | tienda.sell_several.varita.in_scope | Mammut | es | |||||
2 | 4 | Conversation | Necesito saber el nombre de la varita que te interesa. ¿Podrías darme su nombre en el siguiente mensaje? | tienda.sell_several.varita.not_in_scope | Mammut | es | |||||
2 | 5 | Conversation | [variable|tienda.sell_several.varita.name] | Carla | es | ||||||
2 | 6 | Conversation | Listo, ya agregamos el pedido. | Carla | es |
Nota: Este ejemplo de condition está en el sheet corpus. Como puedes observar, la condición permite solicitar el valor de
[variable\|tienda.sell_several.varita.name]
en los casos donde no se encuentre en scope (not_in_scope
). Al mismo tiempo que permite manejar la conversación cuando sí se encuentre el valor en scope (in_scope
).