Enviar imágenes y archivos
Mandar fotos, audios, PDFs desde el canvas, y validar comprobantes que mande el cliente
Un flujo estático puede mandar al cliente cosas además de texto: imágenes, audios, documentos. Y también puede recibir imágenes del cliente y validarlas (típicamente comprobantes de transferencia).
Hay dos nodos clave: send_message para mandar medios, e
image_validator para analizar las que mande el cliente.
Cuándo send_message y cuándo send_template
Si el cliente te escribió en las últimas 24 horas, podés mandarle lo
que quieras con send_message: texto, imagen, audio, PDF.
Si pasaron más de 24 horas desde el último mensaje del cliente,
WhatsApp bloquea cualquier mensaje "libre". Para volver a iniciar
conversación tenés que usar send_template con una plantilla aprobada
por Meta. Las plantillas también pueden incluir medios (una imagen
arriba del mensaje, por ejemplo), pero el texto y el formato lo
aprueba Meta.
Doc completa de plantillas en Crear una plantilla de WhatsApp.
Subir el archivo
En el panel de configuración del send_message, cuando elegís tipo
imagen, audio o documento, el panel te muestra un cuadro para subir el
archivo. Lo arrastrás o lo seleccionás del disco. El sistema lo guarda
en el almacenamiento de Runia y devuelve una URL pública estable que
queda guardada en el nodo.
No pegues URLs de Google Drive, Dropbox o links que requieran login. WhatsApp necesita una URL pública directa al archivo. Si subís desde el panel del nodo, eso ya está resuelto. Solo usá una URL externa si está en un dominio público y permanente.
Mandar una imagen con pie de foto
Tipo de mensaje: image. El panel te pide la URL de la imagen y
opcionalmente un pie de foto (texto que aparece debajo de la foto).
Funciona para JPG y PNG.

Caso típico: el cliente preguntó por precios, la rama de "Precios"
manda un send_message con la imagen del listado y un pie de foto breve.
Mandar un audio (nota de voz)
Tipo de mensaje: audio. Subís un OGG, M4A o MP3. WhatsApp lo muestra
como nota de voz. No admite texto al pie.
Si en lugar de un audio fijo querés generar uno con voz clonada por
cada cliente, eso es otro nodo: voice_message. Ese no es un flujo
estático (necesita IA para generar la voz y, si querés, para armar el
texto), así que queda fuera de esta página.
Mandar un PDF o documento
Tipo de mensaje: document. Subís el archivo (PDF, DOCX, lo que sea)
y opcionalmente le ponés un nombre visible. El cliente ve una tarjeta
con el nombre y un botón para descargar.
Caso típico: confirmación de reserva con el comprobante en PDF, manual del producto, condiciones de un servicio.
Validar comprobantes que manda el cliente
Cuando el cliente manda una foto (típicamente de un comprobante de
transferencia), querés validarla automáticamente y seguir según el
resultado. Eso lo hace image_validator.
El nodo analiza la imagen con un modelo de visión y decide si cumple
un criterio que vos definís. Tiene tres salidas: out_valid,
out_invalid, out_error.
Configuración mínima
- Origen de la imagen: el último mensaje del cliente. Es lo más común.
- Criterio de validación: el texto que describe qué tiene que tener la imagen. Sé específico. Ejemplo bueno: "Comprobante de transferencia bancaria a CBU 0000003100092..., por al menos $10.000, con fecha dentro de los últimos 7 días". Ejemplo malo: "tiene que ser un comprobante válido".
- Modelo de IA: viene
gpt-4.1-minipor defecto. Para casos donde hay que leer dígitos borrosos o comparar firmas, convienegpt-5-mini.

Patrón completo de validación
[session_start]
→ [message_type_switch (image)]
→ out_image → [image_validator criterio="comprobante a CBU X por al menos $Y, fecha últimos 7 días"]
→ out_valid → [send_message "Recibimos tu pago, te confirmamos el turno"] → [close_session]
→ out_invalid → [send_message "El comprobante no es válido: {{node.validador.reason}}. Mandame otro por favor."]
→ [idle_timeout 10m]
→ out_reply → [vuelve a image_validator]
→ on_timeout → [transfer_to_human]
→ out_error → [send_message "Hubo un problema analizando la imagen, te paso con un humano"] → [transfer_to_human]El nodo expone {{node.<id>.reason}} con la razón del rechazo en
castellano. Lo podés insertar en el mensaje de "comprobante inválido"
para que el cliente sepa qué está mal ("falta el monto", "la fecha es
muy vieja", etc.).
Extraer datos del comprobante
Si activás "Extraer datos", podés definir qué campos querés sacar de la imagen (monto, fecha, CBU, lo que sea). El nodo los devuelve para usar después en el flujo. Útil para guardarlos en la ficha del contacto o pasarlos a otro sistema.
Errores comunes
Criterio de validación vago. "Una foto válida" o "tiene que estar ok" no le dice nada al modelo. Resultado: a veces aprueba, a veces no, sin patrón. Sé específico, listá los datos exactos que la imagen tiene que mostrar.
Pegar URLs externas como referencia. Si pegás una URL de Google Drive, Dropbox o cualquier servicio que la pueda expirar, en algún momento se va a romper y todas las validaciones van a empezar a fallar. Si querés sumar imágenes de referencia, subilas desde el panel del nodo, eso usa un almacenamiento estable.
No conectar out_error. El análisis puede fallar (la IA tardó
demasiado, el mensaje no tenía imagen, el formato no es soportado).
Sin esa salida conectada, el flujo muere en silencio. Conectala
siempre, aunque sea a un transfer_to_human.
Mensaje muy pesado. WhatsApp tiene límites: 5 MB para imágenes, 16 MB para audio/video, 100 MB para documentos. Si el archivo se pasa, el envío falla. Comprimí antes de subir.