Descargar al Almacenamiento
Usa esta acción cuando quieras descargar un archivo desde una URL externa y transmitirlo directamente al storage de tu empresa.
Mejor para
- Archivos demasiado grandes para el límite de 5 MB de respuesta de la acción Solicitud HTTP — esta acción transmite hasta 500 MB sin mantener el archivo completo en memoria
- Guardar un archivo remoto una sola vez y reutilizar su referencia almacenada o URL firmada en pasos posteriores
- Importar medios (imágenes, videos, audios, documentos) desde sistemas externos
Campos principales
| Campo | Qué hace |
|---|---|
| URL HTTP | Expresión CEL que resuelve a la URL de descarga. Solo se hacen solicitudes GET, y solo se permiten URLs HTTP(S) públicas |
| Propósito | Opcional. Solo ciertos valores se conservan como propósito del archivo; consulta la nota de abajo |
| Encabezados HTTP | Headers de solicitud opcionales, por ejemplo para autenticación. Las claves y los valores son expresiones CEL — combina con Resolver Variables para cargar secretos |
| File Name | Expresión CEL opcional para el nombre del archivo almacenado. Si se omite, usa el header Content-Disposition de la respuesta, luego la ruta de la URL y finalmente un nombre generado |
| Tipo de contenido | Expresión CEL opcional para el tipo MIME. Se detecta automáticamente desde el header Content-Type de la respuesta o la extensión del archivo cuando se omite |
| Categoría | Almacena el archivo como images, videos, audios o documents. Se detecta automáticamente desde el tipo de contenido cuando se omite |
| Public | Controla si el archivo almacenado debe ser abiertamente accesible (desactivado por defecto) |
Sobre Propósito: los valores que se conservan son workflow_storage_upload (el predeterminado), action_response_media, dynadata, storage_manual_upload, whatsapp_catalog_product_image, template_message_media, chat_media_upload y scheduled_message_media. Cualquier otro valor se guarda como workflow_storage_upload, pero igualmente aparece en el log del paso. Los propósitos de avatar e ícono (contact_avatar, company_logo, user_avatar, autochat_integration_avatar, autochat_widget_icon) no se respetan, por lo que un workflow no puede completar esos campos. Usa dynadata para un archivo que adjuntarás al campo de archivo de un registro.
Qué pueden usar los pasos posteriores
workflow.step(N).statusworkflow.step(N).fileworkflow.step(N).signedUrlworkflow.step(N).contentTypeworkflow.step(N).size
workflow.step(N).file contiene el objeto almacenado (bucket, fullPath, name, metadata), y workflow.step(N).signedUrl es una URL de descarga temporal válida por unos 15 minutos.
Consejos
- Las descargas están limitadas a 500 MB — las transferencias mayores se abortan con
download_size_limit_exceeded. - Los bytes descargados cuentan para la cuota de storage de tu empresa, y el paso falla con
storage_quota_exceededcuando la descarga no cabe en ella. - Una respuesta no-2xx hace fallar el paso (
http_client_errorohttp_server_error), y la descarga completa debe terminar en un máximo de 5 minutos. - No queda nada atrás en caso de fallo: un archivo parcialmente almacenado se limpia automáticamente.
- Usa Crear URL Firmada de Almacenamiento (
actions/media/storage/signed-url) más tarde cuando necesites un nuevo enlace de descarga después de que expire el inicial. - El tipo de contenido se normaliza al guardar el archivo, y la salida
contentTypedel paso muestra el valor guardado. Los tipos renderizables o inseguros (HTML, SVG, XML y tipos+xml, multipart, listas separadas por comas, valores mal formados) se guardan comoapplication/octet-stream. Los documentos se guardan sin parámetros y deben ser un tipo de documento compatible (PDF, texto plano, CSV, JSON, ZIP, Word, Excel, PowerPoint o RTF); de lo contrario,application/octet-stream. Las imágenes se guardan sin parámetros. El audio y el video conservan solo el parámetrocodecs, así queaudio/ogg; codecs=opussigue sirviendo para notas de voz. PasarcontentType=maps.get(workflow.step(0),'headers.content-type')sigue funcionando; el valor solo se normaliza.