Novedad: el cortafuegos de IA supervisa cada módulo y explica cada incidente con palabras sencillas. Vea cómo funciona

Bloques de enrutamiento y temporización

Referencia de Switch, Gate, All of, Any of, Not, Split, Join, Sort, Batch, Delay, Debounce, Deduplicate, Rate limit, Only changes, Trigger, Detach y Link call.

Estos bloques deciden adónde va un mensaje y cuándo. Los bloques que esperan o retienen mensajes los conservan de forma duradera: un reinicio de la plataforma no los elimina. A menos que se defina una clave, los bloques que recuerdan por clave guardan una memoria por dispositivo (el originador del mensaje). Cada bloque mantiene como máximo 10.000 claves y retiene como máximo 16 MiB de mensajes.

Switch

Enruta un mensaje según el valor de una propiedad. Cada regla tiene su propia salida.

AjusteSignificadoPor defectoValores
propertyEl valor que comprueban las reglasmsg.payloaduna ruta
rulesUna fila y una salida por regla: op, value (y value2 para between), Name opcionalningunahasta 16 reglas
stop_firstEnviar solo a la primera regla que coincidaonon, off

Salidas: o0 … o15 (una por regla, con el Name de la regla si se define), else (mostrada como «otherwise»), error. Los operadores son los de Compare, más between (desde value hasta value2, ambos incluidos) y expr (la expresión propia de la regla es verdadera). Con stop_first desactivado, cada regla que coincida recibe el mensaje.

Gate

Deja pasar los mensajes mientras está abierta; los retiene o los descarta mientras está cerrada.

AjusteSignificadoPor defectoValores
initialEstado al iniciar el flujoopenopen, closed
control_topicTopic de los mensajes de control; vacío = ningunogatehasta 64 caracteres
conditionExpresión opcional: abierta solo mientras sea verdaderavacíouna expresión
closedUn mensaje mientras está cerradadropdrop, queue
max_queueMensajes conservados al encolar32hasta 1.000

Los mensajes de control tienen msg.topic igual al topic de control y msg.payload open (o true, 1, on), close (o false, 0, off), toggle o status; no se reenvían. Salidas: out, dropped (descartados con la puerta cerrada, o expulsados de una cola llena), error. Ejemplo de condición para el horario laboral: number(fmt_time(now(), "%H")) >= 8 && number(fmt_time(now(), "%H")) < 18.

All of

Espera a que lleguen dentro de una ventana mensajes con claves distintas (por defecto, topics distintos) y envía después un único mensaje con todos sus payloads.

AjusteSignificadoPor defectoValores
window_msTodos los mensajes deben ser más recientes que esto; 0 = sin límite10 s0 a 24 h
keyDe dónde se lee la clavemsg.topicuna ruta
min_inputsCuántas claves distintas se necesitan22 a 16

Salida out: el mensaje que completa el grupo, con msg.payload = { key: payload, … }. Solo sale el mensaje que completa. Lo que reúne se guarda por dispositivo por defecto (group_by: originador, o flujo).

Any of

Deja pasar todos los mensajes; opcionalmente descarta las repeticiones de una clave.

AjusteSignificadoPor defectoValores
dedup_msDescarta un mensaje cuya clave pasó hace menos de este tiempo; 0 = dejar pasar todos00 a 24 h
keyLa clave para la comprobación de repetidosmsg.topicuna ruta

Not

Sustituye msg.payload por su opuesto lógico, true o false. false, null, 0, "" y not-a-number pasan a true; todo lo demás (incluidos "0", "false", [], {}) pasa a false. Sin ajustes.

Split

Un mensaje por cada parte de msg.payload: por elemento de array, por clave de objeto, por línea de texto o por fragmento de tamaño fijo.

AjusteSignificadoPor defectoValores
modeauto (elemento, clave o delimitador) o length (fragmentos)autoauto, length
delimiterDónde se corta el texto; \n nueva línea, \t tabulador\nhasta 16 caracteres
lengthTamaño del fragmento en elementos o caracteres11 a 65.536

Cada parte lleva msg.parts (id, index, count, type, key …) para Join. Error queue_full por encima de 10.000 partes.

Join

Reúne mensajes en uno.

AjusteSignificadoPor defectoValores
modeauto reconstruye lo que Split cortó; manual construye a partir de cualquier mensajeautoauto, manual
buildQué construir (manual)arrayarray, object, string
joinerEntre los fragmentos de texto\nhasta 16 caracteres
keyClave de objeto de cada mensajemsg.topicuna ruta
countEnviar tras este número de mensajes; 0 = sin recuento00 a 10.000
timeout_msEnviar lo recibido este tiempo después del primer mensaje; 0 = esperar00 a 24 h

msg.complete (cualquier valor) envía de inmediato un grupo manual. Defina count, timeout_ms o msg.complete en modo manual, o el grupo solo saldrá al llegar al límite de 10.000 mensajes.

Sort

Ordena una lista (modo array: property, campo opcional) o los mensajes de un grupo creado por Split o Batch (modo messages: key, timeout_ms). Ajustes: orden asc/desc, numérico on/off (sin él, "10" va antes que "9"). Error queue_full por encima de 10.000 elementos.

Batch

Envía los mensajes en grupos.

AjusteSignificadoPor defectoValores
modePor número o por tiempocountcount, interval
countMensajes en un grupo101 a 10.000
overlapMensajes del último grupo que se vuelven a enviar con el siguiente00 a count − 1
interval_msTiempo desde el primer mensaje en espera hasta que sale el grupo1 s1 ms a 24 h

Cada mensaje de un grupo recibe msg.parts; un Join en modo auto entonces crea una lista.

Delay

Retiene cada mensaje y lo envía después sin cambios.

AjusteSignificadoPor defectoValores
msEspera1 s0 a 7 días
ms2Límite superior de una espera aleatoriavacío0 a 7 días
from_msgTomar la espera de msg.delayoffon, off
max_pendingMensajes en espera a la vez1,0001 a 100.000
on_newqueue: cada uno espera su propio tiempo; restart: un mensaje nuevo descarta los que esperan de su clavequeuequeue, restart
keyClave para restartmsg.originatoruna ruta

msg.reset = true descarta todos los mensajes en espera. Error queue_full cuando se alcanza max_pending.

Debounce

Un mensaje por ráfaga.

AjusteSignificadoPor defectoValores
msTiempo de silencio que termina una ráfaga500 ms0 a 24 h
edgetrailing: el último mensaje tras el silencio; leading: el primero de inmediatotrailingtrailing, leading
keyCada clave se filtra por separadomsg.originatoruna ruta

Deduplicate

Un mensaje por periodo y clave, sin importar cuántos lleguen.

AjusteSignificadoPor defectoValores
strategyfirst, last, o all (un mensaje cuyo payload enumera cada { payload, metadata })firstfirst, last, all
window_ms (Period)Comienza con el primer mensaje de una clave60 s1 s a 24 h
keyUn paquete por valormsg.originatoruna ruta
timemessage (la hora propia de la lectura, desde ts_path o la hora del registro) o arrivalmessagemessage, arrival
ts_pathDónde está la hora de la lectura (time = message)la hora del registrouna ruta
max_pendingMensajes conservados por clave para all1001 a 1.000
msg_typeTipo de mensaje del resultado allel tipo del primer mensajehasta 64 caracteres

El resultado lleva msg.metadata.dedup con count, start y end. Con Time message, un retraso acumulado da un resultado por periodo de tiempo del dispositivo.

Rate limit

Como máximo n mensajes por periodo y clave.

AjusteSignificadoPor defectoValores
nMensajes por periodo11 a 10.000
per_msEl periodo deslizante1 s1 ms a 24 h
modePor encima del límite: drop, latest (conservar solo el más reciente), queuedropdrop, latest, queue
max_queueMensajes en espera por clave321 a 1.000
keyCada clave tiene su propio límitemsg.originatoruna ruta

Salidas: out, dropped. Úsese delante de una llamada de SMS, correo o externa.

Only changes

Deja pasar un mensaje solo cuando su valor ha cambiado desde el último que pasó.

AjusteSignificadoPor defectoValores
propertyEl valormsg.payloaduna ruta
modechange, deadband (por al menos value), deadband_pct (por al menos value % del último value)change
valueLa banda muerta00 o más
keyCada key tiene su propio último valuemsg.originatoruna ruta
firstDeja pasar el primer value de una keyonon, off

El nuevo value se compara con el último value que pasó, así que la deriva lenta se notifica una vez que se acumula.

Trigger

Envía un primer mensaje, espera y luego envía un segundo.

AjusteSignificadoPor defectoValores
firstEnviado de inmediato: el propio mensaje, nada, o un value para msg.payloadel mensaje
thenEnviado tras la espera: nada, el mensaje o un valuenothing
msWait1 s0 a 7 días
extendUn nuevo mensaje durante la espera reinicia la esperaoffon, off
keyCada key tiene su propia esperamsg.originatoruna ruta

msg.reset = true cancela la espera de esa key.

Detach

El resto de la rama se ejecuta por separado, así que el siguiente mensaje del dispositivo no espera a que termine. Úselo antes de una rama lenta. Después, el orden de los mensajes no está garantizado. Sin ajustes.

Envía el mensaje a un Link in (o con flow:<slug>, a la Flow input de otro flujo) y espera la respuesta de un Link out en modo return.

AjusteSignificadoPor defectoValores
targetEl nombre del Link inobligatorio
timeout_msEspera la respuesta30 s1 ms a 1 h
returnsRetornos con nombre del target; cada uno se convierte en una salidaninguno

Salidas: out (la respuesta), una por cada retorno con nombre, timeout (sin respuesta a tiempo; el mensaje original) y error (invalid_value si el link no existe, queue_full, unknown_return, loop). Las llamadas se anidan como máximo 16 niveles; una llamada a su propia pila de llamadas falla con loop.