client.message.send(to, content, options?). O argumento content é um WaSendMessageContent:
type — a biblioteca valida e preenche os campos de protocolo para você) ou um Proto.IMessage bruto (você mesmo monta o protobuf). O mesmo send() aceita ambos.
Atalho
Uma string simples é enviada como uma mensagem de texto:Builders tipados
Cada builder é discriminado pelo seu campotype. Campos em negrito são obrigatórios.
Texto e mídia
Os builders de mídia também aceitam qualquer campo não-gerenciado da mensagem protobuf subjacente (por exemplo
caption, gifPlayback, ptt, fileName) via o mapeamento UserMediaFields. Campos gerenciados pelo protocolo (url, mediaKey, fileSha256, directPath, …) são preenchidos pelo builder.
mimetype é opcional. A ordem de resolução é: um mimetype explícito que você passa vence; senão o builder chama media.processor.detectMimetype (fornecido por @zapo-js/media-utils quando file-type está instalado); senão lança erro para image/video/audio/document/ptv. Stickers usam image/webp por padrão.
Interativos
target é um WaMessageTargetInput — uma WaMessageKey ({ remoteJid, id, fromMe, participant? }) ou um evento message recebido passado literalmente (sua key é usada). Os pais de poll/event exigem adicionalmente authorJid e o messageSecret de 32 bytes.
Para revoke, sender vs admin é auto-detectado por target.fromMe (false dispara um admin revoke). Não há opção subtype.
Proto.IMessage bruto
Para qualquer coisa sem um builder tipado, passe uma mensagem protobuf bruta. A biblioteca inspeciona o campo preenchido e resolve automaticamente os atributos da stanza — type da mensagem ([resolveMessageTypeAttr]), type de mídia, polltype, event_type, view_once e edit — então você só define o campo de conteúdo.
Texto
Mídia
Campos de mídia brutos exigem mídia previamente enviada (as chaves de criptografia, o
directPath e os digests já devem estar definidos). Para enviar a partir de bytes/um arquivo, use os builders de mídia tipados em vez disso — eles realizam o upload para você.Localização e contatos
Interativos e business
Enquetes e eventos (bruto)
Mensagens de criação de enquete e de evento auto-persistem seu
messageSecret para que votos/respostas posteriores possam ser criptografados.
Protocolo, edições e sistema
Wrappers
Estes envolvem uma mensagem interna; a biblioteca os desembrulha ao resolver os atributos:ephemeralMessage, viewOnceMessage, viewOnceMessageV2, deviceSentMessage, groupMentionedMessage, botInvokeMessage, documentWithCaptionMessage.
Para visualização única especificamente, prefira a opção de envio viewOnce em vez de embrulhar manualmente.
Cookbook de proto bruto
Payloads concretos declient.message.send(jid, …) para cada tipo bruto vivem no guia de envios proto brutos. Esta referência traz apenas as tabelas de mapeamento de tipos acima; o guia tem os exemplos de envio mais os cards de pagamento (PIX / review-and-pay).
Wrapper de mensagem temporária (ephemeralMessage)
Envolva qualquer mensagem para que ela herde o timer ephemeral do chat. Isto é uma mecânica de wrapper — a mensagem interna é o que efetivamente renderiza:protocolMessage + EPHEMERAL_SETTING), veja a seção Alternar mensagens temporárias no guia.