Enviando Mensagens
Todas as mensagens na MessageFy são enviadas através de um único endpoint:content.type no corpo da requisição. Isso permite uma interface unificada para todos os tipos de conteúdo suportados.
Estrutura do Package
Toda mensagem enviada é encapsulada em um Package — o envelope padrão da API. O Package contém o identificador do canal e o conteúdo polimórfico:uuid
required
Identificador do canal pelo qual a mensagem será enviada. O canal deve estar ativo e vinculado a sua conta.
string
ID de rastreamento definido pelo cliente. Útil para correlacionar a requisição com eventos recebidos via webhook.
object
required
Conteúdo polimórfico da mensagem. O campo
type determina qual tipo de mensagem será enviado.Resposta
Ao enviar uma mensagem com sucesso, a API retorna umpackageId que identifica unicamente aquele envio:
Endereçamento (Address)
O campoto em todas as mensagens define o destinatário. O formato depende do tipo de canal.
string
required
Tipo do endereço. Valores:
WHATSAPP, EMAIL, SMS.string
Número de telefone no formato internacional (código do país + DDD + número), sem
+ ou espaços. Exemplo: 5511999999999.string
JID (Jabber ID) do WhatsApp. Para contatos individuais:
número@s.whatsapp.net. Para grupos: id@g.us.string
LID (LinkedID) do WhatsApp. Identificador alternativo que o WhatsApp pode usar no lugar do JID em endereços recebidos. Presente principalmente em mensagens recebidas.
string
Nome do contato (opcional, usado para exibição).
Prefira sempre o
jid. Em canais whatsapp-web (provider whatsmeow), o envio usa
exclusivamente o campo jid — o number sozinho não é suficiente. O number como
alternativa ao jid funciona apenas em canais do WhatsApp oficial (WABA). Para mensagens
em grupos, use sempre o jid com sufixo @g.us.Outros tipos de endereço
Além deWHATSAPP, o campo type do endereço aceita:
Campos Comuns
Todos os tipos de mensagem herdam estes campos opcionais:integer
default:"0"
Estratégia de entrega, enviada como número:
0 = DEFAULT, 10 = TRANSACIONAL,
20 = MARKETING. Afeta a priorização e roteamento interno. Enviar o nome como string
(ex.: "TRANSACIONAL") causa erro 400 de desserialização.byte
default:"0"
Prioridade da mensagem, de 1 (mais alta) a 5 (mais baixa). Valor 0 indica prioridade padrão.
datetime
Data/hora limite para entrega da mensagem. Mensagens não entregues até o prazo serão descartadas.
boolean
default:"false"
Marca a mensagem como encaminhada. Também é preenchido nas mensagens recebidas para indicar conteúdo repassado.
object
Mensagem citada (resposta). Permite enviar a mensagem como resposta a uma mensagem anterior.
boolean
default:"false"
Marca a mensagem como vinda de um canal/newsletter do WhatsApp (JID @newsletter).
boolean
default:"false"
Marca a mensagem como vinda de uma lista de transmissão (JID @broadcast). Inclui status/stories.
boolean
default:"false"
Marca a mensagem como vinda de um grupo em modo somente-admin (announce).
boolean
default:"false"
Marca a mensagem como vinda do grupo “Avisos” de uma comunidade do WhatsApp.
Responder a uma mensagem (quotedMessage)
Para enviar uma mensagem como resposta a outra:participant deve ser o LID do autor da mensagem citada:
string
ID da mensagem original que está sendo citada.
string
Autor da mensagem original que está sendo citada. Em grupos, use o LID do autor
(ex.:
252780317044848@lid) — não use o JID, ou a mensagem será entregue sem a citação.
Em conversas individuais, use o JID do autor (ex.: 5511999999999@s.whatsapp.net).
O LID do autor chega nos webhooks de mensagem recebida em content.from.lid.string
Texto ou descrição do conteúdo da mensagem original.
string
Tipo da mensagem original (
TEXT, IMAGE, etc.).string
Miniatura (base64) da mensagem original, quando disponível.
boolean
default:"false"
true quando a citação é uma resposta a um status (story).Tipos de Mensagem
A tabela abaixo lista todos os tipos de mensagem suportados:Operações sobre Mensagens
Além do envio, a API permite operar sobre mensagens já enviadas:Exemplo Completo
Ciclo de Vida da Mensagem
Após o envio, cada mensagem passa por uma sequência de status que você pode acompanhar via webhooks. O diagrama abaixo mostra o fluxo completo:MESSAGE_SENT
Enviado quando a mensagem é aceita pelo servidor do WhatsApp. Confirma que a mensagem saiu do MessageFy e está a caminho do destinatário.O
messageId retornado neste webhook é o identificador definitivo da mensagem no WhatsApp.
Use-o para rastrear os status subsequentes (entrega, leitura, etc.).MESSAGE_DELIVERED
Enviado quando a mensagem é entregue no dispositivo do destinatário (ticks cinzas duplos).Múltiplas mensagens podem ser confirmadas como entregues em um único webhook.
Isso acontece quando o destinatário fica online e recebe várias mensagens de uma vez.
MESSAGE_READ
Enviado quando o destinatário lê a mensagem (ticks azuis).Se o destinatário desativou a confirmação de leitura nas configurações de privacidade
do WhatsApp, este webhook não será enviado.
MESSAGE_PLAYED
Enviado quando o destinatário reproduz uma mensagem de áudio ou vídeo.Recebendo Mensagens
Quando uma mensagem chega no WhatsApp conectado ao seu canal, o MessageFy envia um webhook para a URL configurada. O campocontent.type indica o tipo da mensagem recebida.
Estrutura geral
Toda mensagem recebida chega dentro do mesmo envelope Package. O envelope carrega os identificadores de rastreamento e ocontent polimórfico, cujo type indica o tipo da mensagem.
Os endereços em from/to seguem o mesmo formato polimórfico do envio (type + campos do canal):
Campos do envelope
Campos comuns do content
O campo
isFromMe é true quando a mensagem foi enviada pelo próprio dispositivo
(por exemplo, se o usuário enviou uma mensagem pelo celular enquanto o canal está conectado).
Isso permite sincronizar mensagens enviadas de outros dispositivos vinculados.Os endereços recebidos podem vir identificados por
jid (Jabber ID) e/ou lid (LinkedID).
Use number para o telefone e name para o nome de exibição, quando presentes.Anúncios Click-to-WhatsApp (metaReferralAds)
Quando o usuário inicia a conversa clicando em um anúncio do Facebook/Instagram (Click-to-WhatsApp Ads), a primeira mensagem recebida traz o objetometaReferralAds com o contexto do anúncio:
Tipos de mensagem recebida
Exemplos por tipo
TEXT - Mensagem de texto
TEXT - Mensagem de texto
IMAGE - Imagem
IMAGE - Imagem
Imagens, vídeos, áudios, documentos e stickers não incluem o arquivo binário diretamente
no webhook. Quando o download fica pronto, você recebe um evento separado
DOWNLOAD_AVAILABLE com a URL em externalDownloadUrl.VIDEO - Vídeo
VIDEO - Vídeo
Assim como imagens, o arquivo de vídeo não é incluído diretamente no webhook.
Você receberá um evento
DOWNLOAD_AVAILABLE com a URL para download.AUDIO - Áudio
AUDIO - Áudio
isPTT indica que o áudio é uma nota de voz push-to-talk (gravada no microfone),
e não um arquivo de áudio enviado da galeria.DOCUMENT - Documento
DOCUMENT - Documento
STICKER - Figurinha
STICKER - Figurinha
LOCATION - Localização
LOCATION - Localização
CONTACT_MESSAGE - Cartão de contato
CONTACT_MESSAGE - Cartão de contato
ORDER - Pedido do catálogo
ORDER - Pedido do catálogo
Os valores
totalAmount1000 e items[].price estão em milésimos da moeda: divida por
1000 para obter o valor real (ex.: 13500 = R$ 13,50). As imagens dos itens (imageUrl) são
URLs presigned do StorageFy que podem chegar via evento DOWNLOAD_AVAILABLE.REACTION - Reação
REACTION - Reação
Download de mídia (DOWNLOAD_AVAILABLE)
Para mensagens de mídia (imagem, vídeo, áudio, documento, sticker), o arquivo binário não é incluído diretamente no webhook. Quando o upload para o StorageFy é concluído, um evento separadoDOWNLOAD_AVAILABLE é enviado com a URL de download em externalDownloadUrl: