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 os tipos brutos comuns. Importe proto para os valores de enum:
Texto simples
Texto com menções + resposta
Texto com um preview de link manual
Localização estática
Localização ao vivo
Cartão de contato (vCard)
Múltiplos contatos
Convite de grupo
Botões (bruto)
Até três botões de quick-reply. O header é umoneof — escolha texto, imagem, vídeo, localização ou documento (pré-upload pra mídia):
Menu de lista (bruto)
Uma lista single-select de rows agrupadas em sections:Interactive native flow (bruto)
A superfície interativa moderna — botões cujos parâmetros são payloads ad-hoc codificados em JSON:Produto (bruto)
Envie um produto do catálogo. OproductImage interno precisa estar pré-uploadado:
Pedido (bruto)
Confirmação / consulta de pedido:Convite de admin de newsletter (bruto)
Convide um contato para ser co-admin de uma das suas newsletters:Reação (bruto)
Fixar / desafixar (bruto)
Manter / desfazer manter no chat (bruto)
Revogar / apagar para todos (protocolMessage)
Alternar mensagens temporárias (configuração ephemeral)
Enquete (bruto)
Solicitar um número de telefone
Wrapper de mensagem temporária (ephemeralMessage)
Envolva qualquer mensagem para que ela herde o timer ephemeral do chat:Wrapper de visualização única
Snippets que citam uma mensagem usam uma
key de { remoteJid, fromMe, id, participant? } (um proto.IMessageKey). Para os equivalentes tipados (reação, revogação, fixar, manter, enquete), prefira os builders — eles gerenciam o message secret e o encadeamento da key para você.