RuniaRunia Docs

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.

Configuración del send_message con tipo imagen, URL del archivo subido y pie de foto
Configuración del send_message con tipo imagen, URL del archivo subido y pie de foto

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-mini por defecto. Para casos donde hay que leer dígitos borrosos o comparar firmas, conviene gpt-5-mini.
Panel de configuración del image_validator con criterio detallado y origen last_message
Panel de configuración del image_validator con criterio detallado y origen last_message

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.