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

Bloques de acción

Referencia de HTTP request, HTTP response, MQTT out, Webhook, Emit event, Set variable, Timer, cambio de flujos, Run flow, Link out, log y Debug.

Los bloques de acción hacen algo: llamar a otro sistema, publicar un mensaje, guardar una variable, iniciar un temporizador, pasar el mensaje a otro flujo o escribir una línea de registro. Las acciones de dispositivo, alarma y notificación tienen sus propias páginas: bloques de datos IoT y bloques de alarma, comando y notificación.

Comportamiento común de los bloques de salida

Petición HTTP, MQTT out y Webhook comparten estas reglas:

TemaComportamiento
RiesgoExterno: un despliegue que contenga uno pide una confirmación
ReintentosSolo los fallos transitorios se reintentan; 3 intentos por defecto (ajustes retry_*), como máximo 5, con un retroceso exponencial desde 1 s
IdempotenciaCada intento de un mensaje lleva la misma clave (X-Idempotency-Key, o la propiedad de usuario MQTT 5 idempotency-key), también tras un fallo o una repetición, para que el receptor pueda deduplicar
EntregaAl menos una vez
CortacircuitosUn bloque cuyas llamadas siguen fallando pausa sus llamadas durante un tiempo (circuit_open)
Mensajes tardíoslate: skip (por defecto; el mensaje se detiene y se cuenta como Demasiado antiguo) o send (un flujo de datos que también debe recibir el retraso acumulado tras una caída)
PruebasUna ejecución de prueba no envía nada e informa de lo que habría enviado
OrdenLas llamadas de Petición HTTP y MQTT out se ejecutan por separado de la ejecución que las hizo: el siguiente mensaje del dispositivo no espera la respuesta, y el orden de los mensajes tras la llamada no está garantizado
DireccionesLas direcciones privadas e internas se rechazan (ssrf_blocked)

Petición HTTP

Llama a un endpoint HTTP y coloca la respuesta en el mensaje. El esquema, el host, el puerto, la autenticación y TLS vienen solo de la conexión endpoint, nunca del mensaje. Consulte Conexiones y secretos.

AjusteSignificadoPor defectoValores
endpointLa conexión del endpoint HTTPobligatorio
hostOtro host que permite el endpointvacíouna plantilla; debe coincidir con los hosts permitidos del endpoint
methodMétodo HTTPGETGET, POST, PUT, PATCH, DELETE, HEAD
pathSe añade a la ruta base del endpointvacíouna plantilla, 1.024 caracteres
queryParámetros de consultaningunohasta 16 filas
headersCabeceras adicionalesningunahasta 16 filas; Host, Authorization, Cookie, Proxy-*, Content-Length, X-Idempotency-Key y las cabeceras hop-by-hop se rechazan
bodyQué se envíapayloadpayload, template, none (oculto para GET, HEAD, DELETE)
templateLa plantilla del cuerpovacíohasta 4.096 caracteres
template_formatCómo se escriben los valores {{ }}texttext, json (cada valor como valor JSON; el cuerpo debe ser JSON)
timeout_msTiempo por intento10,0001.000 a 30.000
parseCómo se lee la respuestaautoauto, json, text
max_bytesRespuesta más grande64 KiB1 a 256 KiB
response_headersCabeceras de respuesta que se guardan en msg.metadata.headersallall, list, none (como máximo 32 cabeceras, 8 KiB)
max_parallelLlamadas en curso para este bloque0 (sin límite)0 a 64
inlineMantiene la llamada dentro de la ejecución, de modo que el siguiente mensaje del dispositivo espera la respuesta (el despliegue avisa)offon, off
retry_*Intentos y retroceso3, desde 1 s
lateVéase arribaskipskip, send

Salidas:

  • out: estado inferior a 400. msg.payload es el cuerpo, msg.statusCode, msg.contentType, msg.metadata.headers. No se siguen las redirecciones.
  • error: http_status (400 o superior, cuerpo en msg.payload), timeout, connect, tls, ssrf_blocked, too_large, invalid_json, invalid_value, oauth_failed, function_error, circuit_open, limit. msg.error.attempts indica cuántos intentos se hicieron.

Se reintenta: timeouts, fallos de conexión y HTTP 408, 425, 429 (respetando Retry-After), 500, 502, 503, 504.

Para un cuerpo JSON construido a partir de valores, use template_format: json y deje los marcadores sin comillas: {"name": {{ msg.payload.name }}, "n": {{ msg.payload.n }}}.

Respuesta HTTP

Responde al llamante de un disparador Webhook síncrono (reply: response). Gana la primera respuesta de una ejecución.

AjusteSignificadoPor defectoValores
statusEstado HTTP (msg.statusCode lo sobrescribe)200100 a 599
headersCabeceras de respuestaningunacontent-type, cache-control, location (3xx), x-* (no x-forwarded-*)
bodyQué se envíapayloadpayload, template, none
templatePlantilla del cuerpovacíohasta 4.096 caracteres
max_bytesCuerpo más grande256 KiBcomo máximo 256 KiB

Errores: no_reply_pending, reply_sent, limit. Sin respuesta, el llamante recibe 204; tras el timeout del hook, 504.

MQTT out

Publica el payload en un tema de su broker y después pasa el mensaje. El texto se envía como texto y cualquier otro valor como JSON.

AjusteSignificadoPor defectoValores
brokerLa conexión al broker MQTTobligatorio
topicEl tema{{ msg.topic }}una plantilla, 256 caracteres; un ~/ inicial es el prefijo de tema del broker
qosGarantía de entrega00, 1, 2
retainPide al broker que conserve el mensajeoffon, off
timeout_msTiempo para la confirmación10,0001.000 a 30.000
max_parallelPublicaciones en curso0 (sin límite)0 a 64
retry_*, lateComo arriba

Errores: bad_topic (vacío, + o #, o ~/ sin prefijo), timeout, connect, auth, ssrf_blocked, node_not_ready, not_configured, circuit_open, limit. Solo los timeouts y los fallos de conexión se reintentan.

Webhook

Envía el mensaje a uno de los endpoints webhook de su organización: firmado, con reintentos y listado en las entregas del endpoint. Es la vía de entrega garantizada.

AjusteSignificadoPor defectoValores
endpointEl endpointobligatorioendpoints activos suscritos a Mensaje de automatización
topicSe envía como topic{{ msg.topic }}una plantilla, 256 caracteres
bodyQué se envía además del temapayloadpayload, payload and metadata
metadata_keysClaves de metadatos enviadasningunacomo máximo 20
lateVéase arribaskipskip, send

El receptor recibe el evento automation.message con topic, payload, originator, flowId, flowVersion, nodeId, actor y los metadatos indicados. out lleva msg.metadata.webhook.deliveryId una vez encolado. Errores: endpoint_not_found, endpoint_inactive, enqueue_failed, not_configured, node_not_ready, circuit_open, limit (webhooks no incluidos en su plan). Consulte Webhooks.

Emitir evento

Envía un evento que el disparador Evento con origen flow recibe, en cualquier flujo.

AjusteSignificadoPor defectoValores
kindEl nombre del eventoobligatoriouna letra minúscula al inicio, después letras minúsculas, dígitos, _ y .; hasta 32 caracteres
dataLo que transportamsg.payloadcualquier tipo de valor; un valor que no es objeto se envuelve como { "value": … }

Los oyentes reciben msg.payload = los datos y msg.topic flow/<kind>. Errores: rate_limited, invalid_value (un kind no válido, o «emit: depth»: el quinto paso de una cadena). Un despliegue rechaza un bucle que pueda ver (flow_cycle). Un mensaje tardío no emite nada.

Establecer variable

Guarda un valor en una variable de flujo o global.

AjusteSignificadoValores
pathLa variableflow.<name> o global.<name>, se permiten claves más profundas; flow.persist:<name> para el almacén persistente
valueLo que se guardacualquier tipo de valor; nada (null) la elimina

Errores: invalid_value, limit (almacén lleno; el valor anterior se mantiene). Límites: 1 MiB por flujo, 4 MiB para variables globales. En una prueba se escribe la copia propia de la prueba.

Temporizador

Inicia, reinicia o cancela un temporizador con nombre. Cuando termina, se activa todo disparador Named timer con ese nombre.

AjusteSignificadoPredeterminadoValores
nameEl temporizador, compartido por todos los flujosobligatorio
opIniciar (de nuevo) o cancelarstartstart, cancel
msDuración (msg.ms la sobrescribe)1 min0 a 7 días

Iniciar un temporizador en marcha lo reinicia desde cero: el patrón watchdog. Error queue_full «too many timers»: la organización tiene 64 temporizadores de 60 s o menos, o 10 000 más largos. Un mensaje tardío no inicia ni cancela nada.

Activar o desactivar un flujo

Activa o desactiva otro flujo, igual que el interruptor de la lista de flujos.

AjusteSignificadoPredeterminadoValores
flowEl flujoobligatorioun flujo desplegado de la organización, distinto de este
stateActivar o desactivarenableenable, disable

out lleva msg.metadata.flow_enable { flow, enabled, changed }. Errores: not_configured, self_reference, not_found, not_approved, conflict, invalid, limit (más de 6 cambios por minuto). Desplegar un flujo con este bloque requiere la confirmación escrita.

Ejecutar flujo

Entrega el mensaje a la Flow input de otro flujo y termina esta rama.

AjusteSignificadoValores
flowEl flujo a ejecutarotro flujo del mismo host; nunca un flujo raíz

No hay puerto out; nada regresa. Errores: not_configured, invalid_value (ausente, desactivado o detenido), forbidden (un raíz), loop (quinto salto). Un flujo que otros flujos ejecutan no se puede eliminar hasta que se quiten esos bloques. El mensaje conserva su dispositivo, así que Save telemetry funciona en el flujo destino.

Pasa el mensaje a bloques Link in por nombre, o devuelve la respuesta a una Link call.

AjusteSignificadoPredeterminadoValores
modelink (a bloques Link in) o return (responder al llamador)linklink, return
targetsNombres de Link in (modo link)vacíohasta 16
nameEl nombre del retorno (modo return)outun retorno que declara el llamador

No hay puerto out. Un destino ausente es una advertencia en el panel de depuración, no un error. Un despliegue rechaza nombres desconocidos y bucles sin bloque de espera (cycle_sync).

Registro del sistema

Escribe una línea en el registro del flujo (Activity > Events > Log, se guarda 24 horas).

AjusteSignificadoPredeterminadoValores
textLa línea, con marcadores {{ }}{{ msg.payload }}hasta 512 caracteres
levelPrioridadinfoinfo, notice, warn, err

Depuración

Muestra los mensajes que le llegan en la pestaña Activity > Debug del editor. No tiene puerto out.

AjusteSignificadoPredeterminadoValores
propertyQué mostrarmsg.payloadmsg (el mensaje completo) o una ruta
activeMostrar mensajesonon, off

Las entradas de depuración se guardan 24 horas y son visibles para las personas que pueden depurar. El botón del bloque lo activa o desactiva sin guardar.

Escribir en una base de datos de series temporales externa

Un bloque escribe un punto por mensaje en un servidor de base de datos de series temporales externo propio, mediante una conexión a servidor de base de datos. Ajustes: el servidor, el bucket o la base de datos, la medición, hasta 16 etiquetas, de 1 a 32 campos (con un tipo: auto, float, int, string, bool), la hora (predeterminado: la hora del primer intento, igual en cada reintento), timeout_ms (de 1 000 a 30 000), reintentos y late. out lleva msg.metadata con la medición escrita, los campos y las etiquetas. Para una integración general, el bloque HTTP request a tu propia API suele ser más sencillo.