Condiciones de los flujos
Cómo escribir una condición en un flujo, qué datos puede mirar, ejemplos listos por rubro y cómo probarla antes de activarla.
Actualizado:
Una condición decide por qué rama sigue un flujo. Se escribe como una frase corta que da verdadero o falso, por ejemplo "el servicio cuesta más de 100 y el cliente es VIP". Una condición solo mira datos: no cambia nada.
Cómo se escribe
| Qué | Ejemplo |
|---|---|
| Comparar | == (igual), !=, <, <=, >, >= |
| Combinar | && (y), || (o), ! (no) |
| Texto | "entrega" entre comillas |
| Está en una lista | "vip" in customer.tags |
| Contiene | service.name.contains("Corte") |
| Si / entonces | workItem.priority == "urgent" ? now.hour < 22 : now.hour < 18 |
| Un campo | customer.no_show_count, con punto |
Eso es todo el lenguaje: no hay bucles ni funciones propias. Las condiciones se validan al guardar el flujo y de nuevo al activarlo.
Qué datos puede mirar
| Objeto | Qué trae |
|---|---|
trigger | El evento que empezó el flujo. Con una acción ejecutada: action_key (la acción), from_stage, to_stage |
workItem | La tarea: status, stage, priority, tags, party_size, start_at, due_at, age_minutes (minutos desde que se creó), assigned (si tiene responsable) |
customer | name, locale (idioma), tags, no_show_count (ausencias reales) |
service | name, price_cents (el precio en centavos: 100,00 es 10000), deposit_cents, duration_min |
resource | name, kind |
now | La hora de tu negocio: hour, minute, weekday (0 = lunes ... 6 = domingo) |
variables | Valores que calculó un paso anterior |
Por privacidad, una condición no ve teléfonos, emails, documentos, direcciones ni notas del cliente. Si el evento no trae una tarea, workItem, customer y service llegan vacíos y la condición falla con un mensaje claro, no responde "falso" en silencio.
Ejemplos
VIP con un servicio caro: avisar al gerente
service.price_cents > 10000 && "vip" in customer.tags
"No estaba" antes de las 18 h (disparador: se ejecuta una acción)
trigger.action_key == "nao_estava" && now.hour < 18
Tercera ausencia: pedir seña la próxima vez
trigger.action_key == "ausencia" && customer.no_show_count >= 3
Tarea sin tomar hace más de 2 horas (después de un paso Esperar de 2 h)
!workItem.assigned && workItem.age_minutes > 120
Fuera del horario comercial (sábado, domingo o fuera de 9 a 18)
now.weekday >= 5 || now.hour < 9 || now.hour >= 18
Tarea urgente
workItem.priority == "urgent" || "urgente" in workItem.tags
Cliente que habla portugués
customer.locale == "pt"
Seña pendiente hace más de una hora
workItem.stage == "aguardando_sinal" && workItem.age_minutes >= 60
Servicio largo de corte
service.name.contains("Corte") && service.duration_min >= 45
Las claves de acción y de etapa (ausencia, nao_estava, aguardando_sinal) son las de tu plantilla de rubro. Si cambiaste los nombres, usá los tuyos.
Probar una condición
En el detalle de un flujo, tocá Probar esta condición (o Probar condición):
- Escribí la condición.
- Elegí una tarea real de tu proyecto con el buscador.
- Si mira
trigger.action_key, escribí la clave de la acción en Simular la acción. - Tocá Probar.
Te muestra Verdadero o Falso y, debajo, Lo que vio la condición: exactamente los datos con los que decidió. No se ejecuta nada.
Errores comunes
Al guardar, el mensaje dice qué paso falló y por qué:
| Problema | Qué significa |
|---|---|
| El campo no existe | Usaste un dato que no está disponible (por ejemplo customer.email) |
| Tipos que no combinan | Comparaste texto con un número (customer.name > 5) |
| No da verdadero o falso | La condición tiene que ser una pregunta de sí o no |
| Función no permitida | Solo existe contains |
| Objeto desconocido | Solo se pueden usar los objetos de la tabla de arriba |
| Demasiado larga o costosa | Dividila en dos condiciones con otro paso en medio |
Una condición admite hasta 1024 caracteres y se evalúa en una fracción de segundo.