Nodes and media
Suporte a imagens e mídia
O canal WhatsApp é executado via Baileys Web. Este documento registra as regras atuais de tratamento de mídia para envios, Gateway e respostas de agentes.
Objetivos
- Enviar mídia com legendas opcionais via
openclaw message send --media. - Permitir que respostas automáticas da caixa de entrada web incluam mídia junto com texto.
- Manter limites por tipo sensatos e previsíveis.
Superfície da CLI
openclaw message send --media <path-or-url> [--message <caption>]--mediaé opcional; a legenda pode ficar vazia para envios somente com mídia.--dry-runimprime o payload resolvido;--jsonemite{ channel, to, messageId, mediaUrl, caption }.
Comportamento do canal WhatsApp Web
- Entrada: caminho de arquivo local ou URL HTTP(S).
- Fluxo: carregar em um Buffer, detectar o tipo de mídia e montar o payload correto:
- Imagens: redimensionar e recomprimir para JPEG (lado máximo de 2048px), mirando
channels.whatsapp.mediaMaxMb(padrão: 50 MB). - Áudio/Voz/Vídeo: passagem direta até 16 MB; áudio é enviado como nota de voz (
ptt: true). - Documentos: qualquer outra coisa, até 100 MB, com o nome de arquivo preservado quando disponível.
- Imagens: redimensionar e recomprimir para JPEG (lado máximo de 2048px), mirando
- Reprodução estilo GIF do WhatsApp: envie um MP4 com
gifPlayback: true(CLI:--gif-playback) para que clientes móveis reproduzam em loop inline. - A detecção de MIME prioriza bytes mágicos, depois cabeçalhos e depois a extensão do arquivo.
- A legenda vem de
--messageoureply.text; legenda vazia é permitida. - Logs: modo não detalhado mostra
↩️/✅; modo detalhado inclui tamanho e caminho/URL de origem.
Pipeline de resposta automática
getReplyFromConfigretorna{ text?, mediaUrl?, mediaUrls? }.- Quando há mídia presente, o remetente web resolve caminhos locais ou URLs usando o mesmo pipeline de
openclaw message send. - Várias entradas de mídia são enviadas sequencialmente se fornecidas.
Mídia de entrada para comandos
- Quando mensagens web de entrada incluem mídia, o OpenClaw baixa para um arquivo temporário e expõe variáveis de templating:
{{MediaUrl}}pseudo-URL para a mídia de entrada.{{MediaPath}}caminho temporário local gravado antes de executar o comando.
- Quando um sandbox Docker por sessão está habilitado, a mídia de entrada é copiada para o workspace do sandbox e
MediaPath/MediaUrlsão reescritos para um caminho relativo comomedia/inbound/<filename>. - O entendimento de mídia (se configurado via
tools.media.*outools.media.modelscompartilhado) é executado antes do templating e pode inserir blocos[Image],[Audio]e[Video]emBody.- Áudio define
{{Transcript}}e usa a transcrição para análise de comandos, para que comandos de barra ainda funcionem. - Descrições de vídeo e imagem preservam qualquer texto de legenda para análise de comandos.
- Se o modelo de imagem primário ativo já oferecer suporte nativo a visão, o OpenClaw pula o bloco de resumo
[Image]e passa a imagem original ao modelo.
- Áudio define
- Por padrão, somente o primeiro anexo correspondente de imagem/áudio/vídeo é processado; defina
tools.media.<cap>.attachmentspara processar vários anexos.
Limites e erros
Limites de envio de saída (envio pelo WhatsApp web)
- Imagens: até
channels.whatsapp.mediaMaxMb(padrão: 50 MB) após recompressão. - Áudio/voz/vídeo: limite de 16 MB; documentos: limite de 100 MB.
- Mídia grande demais ou ilegível → erro claro nos logs e a resposta é ignorada.
Limites de entendimento de mídia (transcrição/descrição)
- Padrão de imagem: 10 MB (
tools.media.image.maxBytes). - Padrão de áudio: 20 MB (
tools.media.audio.maxBytes). - Padrão de vídeo: 50 MB (
tools.media.video.maxBytes). - Mídia grande demais pula o entendimento, mas as respostas ainda seguem com o corpo original.
Observações para testes
- Cubra fluxos de envio + resposta para casos de imagem/áudio/documento.
- Valide a recompressão de imagens (limite de tamanho) e a flag de nota de voz para áudio.
- Garanta que respostas com várias mídias se desdobrem em envios sequenciais.
Relacionados
Was this useful?