Saltar a contenido

Documentación: Nodo Condicional Fecha y Hora (DateTime)

Descripción General

El Nodo Condicional DateTime evalúa condiciones relacionadas con hora, fecha y día de la semana, y bifurca el flujo de la automatización según el resultado final.

Si la evaluación es verdadera, la ejecución continúa por la ruta true; de lo contrario, continúa por la ruta false.

¿Cuándo usar este nodo?

Utiliza este nodo cuando necesites:

  • Ejecutar acciones solo dentro de un horario (por ejemplo, 09:00–17:00)
  • Activar flujos solo ciertos días (laborables, fines de semana, días específicos)
  • Aplicar reglas por fecha (antes/después/igual a una fecha)
  • Controlar automatizaciones con ventanas de tiempo que cruzan medianoche

Rutas de salida

Este nodo tiene dos rutas:

  • true: se ejecuta cuando el resultado final de la evaluación es verdadero.
  • false: se ejecuta cuando el resultado final de la evaluación es falso.

Configuración del Nodo

Formulario de configuración del nodo DateTime

Paso 1: Configurar la zona horaria (opcional)

El campo timezone define la zona horaria IANA usada para evaluar fecha/hora.

  • Tipo: string
  • Ejemplo: "America/Mexico_City"
  • Default: UTC

Warning

Si timezone es inválida, Validate() falla y Execute() retorna error.

Paso 2: Agregar condiciones (requerido)

El campo conditions es un arreglo requerido con la lista de condiciones (mínimo 1).

Cada condición es un objeto con:

  • id (string, requerido): identificador único (usado por la UI).
  • type (string, requerido): tipo de condición (ver lista abajo).
  • value (depende del tipo): usualmente string.
  • startTime / endTime (solo para time_range): formato HH:MM (también acepta H:MM).

Paso 3: Definir el combinador (opcional)

El campo operator combina múltiples condiciones:

  • Valores: AND / OR
  • Default: AND

Warning

Si operator viene con otro valor, validateInput() retorna error.

Tipos de condición soportados

time_range

Verdadero si la hora actual está entre startTime y endTime (incluyente).

  • Soporta rangos que cruzan medianoche (ej. 22:0006:00).

day_of_week

Verdadero si el día actual coincide con value.

  • value: string en inglés, case-insensitive.
  • Acepta formas como "Monday" / "Mon", "Tuesday" / "Tue" / "Tues", etc.

time_before

Verdadero si la hora actual es antes de value (HH:MM).

time_after

Verdadero si la hora actual es después de value (HH:MM).

time_equals / exact_time

Verdadero si la hora actual (minuto exacto) es igual a value (HH:MM).

is_weekday

Verdadero si hoy es Lunes–Viernes.

is_weekend

Verdadero si hoy es Sábado o Domingo.

date_equals

Verdadero si la fecha actual es igual a value (YYYY-MM-DD).

date_before

Verdadero si la fecha actual es antes de value (YYYY-MM-DD).

date_after

Verdadero si la fecha actual es después de value (YYYY-MM-DD).

Cómo se evalúan múltiples condiciones

  • Si operator = "AND": todas deben dar true.
  • Si operator = "OR": al menos una debe dar true.

Note

Si una condición da error al evaluarse, se toma como false (y se loggea un warning si hay logger).

Estructura JSON

La configuración del nodo genera un JSON con esta forma:

{
  "conditions": [
    {
      "id": "19dfd8e8065",
      "type": "time_range",
      "startTime": "09:00",
      "endTime": "17:00"
    }
  ],
  "timezone": "US/Eastern",
  "operator": "AND"
}

Campos requeridos

  • conditions (array) con mínimo 1 condición.
  • conditions[].id (string).
  • conditions[].type (string).
  • Para time_range: startTime y endTime.
  • Para condiciones basadas en value: value.

Campos opcionales

  • timezone (default UTC).
  • operator (default AND).

Ejemplos de Uso

Ejemplo 1: Horario laboral (time_range)

Caso: permitir acciones solo de 09:00 a 17:00 en una zona horaria específica.

{
  "conditions": [
    {
      "id": "cond-1",
      "type": "time_range",
      "startTime": "09:00",
      "endTime": "17:00"
    }
  ],
  "timezone": "America/Mexico_City",
  "operator": "AND"
}

Ejemplo 2: Ventana nocturna que cruza medianoche

Caso: permitir acciones entre 22:00 y 06:00 (incluyente).

{
  "conditions": [
    {
      "id": "cond-1",
      "type": "time_range",
      "startTime": "22:00",
      "endTime": "06:00"
    }
  ],
  "timezone": "UTC",
  "operator": "AND"
}

Ejemplo 3: Solo fines de semana (is_weekend)

{
  "conditions": [
    {
      "id": "cond-1",
      "type": "is_weekend"
    }
  ],
  "operator": "AND"
}

Ejemplo 4: Lunes y después de las 08:30 (AND)

{
  "conditions": [
    {
      "id": "cond-1",
      "type": "day_of_week",
      "value": "Mon"
    },
    {
      "id": "cond-2",
      "type": "time_after",
      "value": "08:30"
    }
  ],
  "timezone": "America/Bogota",
  "operator": "AND"
}

Solución de Problemas

Error: zona horaria inválida

Causa: timezone no es una zona IANA válida.

Solución: usa una zona horaria IANA (ej. "America/Mexico_City") o elimina timezone para usar UTC.


Error: operador inválido

Causa: operator distinto de AND o OR.

Solución: usa únicamente AND o OR, o elimina operator para usar el default (AND).


Condición evaluada como false por error interno

Causa: una condición falló al evaluarse (por ejemplo, formato inválido).

Comportamiento: esa condición se toma como false y se registra warning si hay logger.

Mejores Prácticas

  • Define timezone explícitamente si tu automatización depende de la hora local de un sitio.
  • Usa time_range para ventanas y time_before/time_after para límites simples.
  • Para reglas complejas, combina AND/OR y divide el flujo en más de un nodo condicional si lo necesitas.