Download para Armazenamento
Use esta ação quando quiser baixar um arquivo de uma URL externa e transmiti-lo diretamente para o storage da sua empresa.
Melhor para
- Arquivos grandes demais para o limite de 5 MB de resposta da ação Requisição HTTP — esta ação transmite até 500 MB sem manter o arquivo inteiro em memória
- Salvar um arquivo remoto uma única vez e reutilizar sua referência armazenada ou URL assinada em passos posteriores
- Importar mídias (imagens, vídeos, áudios, documentos) de sistemas externos
Campos principais
| Campo | O que faz |
|---|---|
| URL HTTP | Expressão CEL que resolve para a URL de download. Apenas requisições GET são feitas, e apenas URLs HTTP(S) públicas são permitidas |
| Propósito | Opcional. Apenas certos valores são mantidos como propósito do arquivo; veja a nota abaixo |
| Cabeçalhos HTTP | Cabeçalhos de requisição opcionais, por exemplo para autenticação. Chaves e valores são expressões CEL — combine com Resolver Variáveis para carregar segredos |
| File Name | Expressão CEL opcional para o nome do arquivo armazenado. Se omitido, usa o cabeçalho Content-Disposition da resposta, depois o caminho da URL e por fim um nome gerado |
| Tipo de conteúdo | Expressão CEL opcional para o tipo MIME. Detectado automaticamente a partir do cabeçalho Content-Type da resposta ou da extensão do arquivo quando omitido |
| Categoria | Armazena o arquivo como images, videos, audios ou documents. Detectada automaticamente a partir do tipo de conteúdo quando omitida |
| Public | Controla se o arquivo armazenado deve ser abertamente acessível (desligado por padrão) |
Sobre Propósito: os valores mantidos são workflow_storage_upload (o padrão), action_response_media, dynadata, storage_manual_upload, whatsapp_catalog_product_image, template_message_media, chat_media_upload e scheduled_message_media. Qualquer outro valor é armazenado como workflow_storage_upload, mas continua aparecendo no log do passo. Propósitos de avatar e ícone (contact_avatar, company_logo, user_avatar, autochat_integration_avatar, autochat_widget_icon) não são respeitados, então um workflow não consegue preencher esses campos. Use dynadata para um arquivo que você vai anexar ao campo de arquivo de um registro.
O que passos posteriores podem usar
workflow.step(N).statusworkflow.step(N).fileworkflow.step(N).signedUrlworkflow.step(N).contentTypeworkflow.step(N).size
workflow.step(N).file contém o objeto armazenado (bucket, fullPath, name, metadata), e workflow.step(N).signedUrl é uma URL de download temporária válida por cerca de 15 minutos.
Dicas
- Downloads são limitados a 500 MB — transferências maiores são abortadas com
download_size_limit_exceeded. - Os bytes baixados contam para a cota de storage da sua empresa, e o passo falha com
storage_quota_exceededquando o download não couber nela. - Uma resposta não-2xx faz o passo falhar (
http_client_errorouhttp_server_error), e o download inteiro deve terminar em até 5 minutos. - Nada fica para trás em caso de falha: um arquivo parcialmente armazenado é limpo automaticamente.
- Use Criar URL Assinada de Armazenamento (
actions/media/storage/signed-url) mais tarde quando precisar de um novo link de download depois que o inicial expirar. - O tipo de conteúdo é normalizado quando o arquivo é armazenado, e a saída
contentTypedo passo mostra o valor armazenado. Tipos renderizáveis ou inseguros (HTML, SVG, XML e tipos+xml, multipart, listas separadas por vírgula, valores malformados) são armazenados comoapplication/octet-stream. Documentos são armazenados sem parâmetros e precisam ser um tipo de documento suportado (PDF, texto simples, CSV, JSON, ZIP, Word, Excel, PowerPoint ou RTF); caso contrário,application/octet-stream. Imagens são armazenadas sem parâmetros. Áudio e vídeo mantêm apenas o parâmetrocodecs, entãoaudio/ogg; codecs=opuscontinua servindo para mensagens de voz. PassarcontentType=maps.get(workflow.step(0),'headers.content-type')continua funcionando; o valor apenas é normalizado.