Mensagens de canais

Evento: newsletter_messages · Transporte: POST para o seu receptor

Receba mensagens de canais/newsletters disponíveis para a sessão.

Diferenças em relação a messages

O payload inclui newsletter e message. Preserve o JID terminado em @newsletter. O ID normalizado da mensagem combina informações do ID e do identificador de servidor; não reconstrua esse valor por conta própria.

Use message.isNewsletter, newsletterServerId e os identificadores retornados para reconhecer esse fluxo. A API não transforma toda alteração de canal em mensagem: stanzas de protocolo/reações podem ser ignoradas pelo emissor; consulte as rotas específicas de newsletter para atualizar o estado.

O evento não garante histórico completo nem substitui a consulta de mensagens recentes do canal.

Habilitar este evento

Adicione newsletter_messages à lista events do webhook da instância. Preserve os outros eventos de que sua integração precisa.

{
  "enabled": true,
  "url": "https://seu-sistema.example/hooks/whatsapp",
  "events": [
    "newsletter_messages"
  ]
}

Envie essa configuração para POST /webhook, usando o header token. O JSON acima configura a assinatura; os exemplos de entrega abaixo são o que seu servidor recebe.

Campos do payload

O envelope comum vem na raiz. Campos condicionais podem estar ausentes ou nulos conforme o evento; não use a tabela como obrigação de presença de todos os campos.

CampoTipoSignificado
EventTypestringObrigatório. Tipo de evento, por exemplo connection ou messages.
ownerstringObrigatório. Consulte o objeto ou exemplo correspondente.
tokenstringObrigatório. Token da instância; dado sensível.
BaseUrlstringObrigatório. Consulte o objeto ou exemplo correspondente.
instanceNamestringConsulte o objeto ou exemplo correspondente.
newsletterobjectIdentificação do canal.
newsletter.jidstringJID do canal, quando incluído na projeção.
newsletter.idstringParte de usuário do JID do canal.
newsletter.chatidstringJID completo do canal.
newsletter.serverstringDomínio do identificador, newsletter.
messageobjectMensagem normalizada. Campos disponíveis variam conforme o tipo e a origem.
message.idstringIdentificador retornado pelo sistema; preserve como string.
message.messageidstringID da mensagem no WhatsApp.
message.chatidstringJID do contato, grupo ou canal.
message.senderstringJID do remetente.
message.senderNamestringNome disponível do remetente.
message.fromMebooleanMensagem enviada pela conta conectada.
message.wasSentByApibooleanOrigem na API quando esse campo estiver presente na mensagem.
message.isGroupbooleanIdentifica conversa de grupo.
message.messageTypestringTipo de mensagem normalizado.
message.textstringTexto ou legenda disponível.
message.messageTimestampintegerTimestamp da mensagem em milissegundos Unix.
message.contentvariávelConteúdo específico do tipo de mensagem; não possui um formato único.
message.statusstringEstado disponível da mensagem; pode estar vazio.
message.isNewsletterbooleanIndica mensagem de canal.
message.newsletterServerIdintegerID de servidor da mensagem de canal.
message.newsletterMetavariávelMetadados específicos do canal, quando disponíveis.

Exemplos de entrega

Exemplos ilustrativos com identificadores fictícios. O conteúdo específico e os campos opcionais variam.

Mensagem de canal

{
  "EventType": "newsletter_messages",
  "owner": "5511999999999",
  "token": "INSTANCE_TOKEN",
  "BaseUrl": "https://seu-servidor.example",
  "instanceName": "Atendimento",
  "newsletter": {
    "jid": "120363000000000001@newsletter",
    "id": "120363000000000001",
    "chatid": "120363000000000001@newsletter",
    "server": "newsletter"
  },
  "message": {
    "id": "MSG_CANAL:42",
    "messageid": "MSG_CANAL",
    "chatid": "120363000000000001@newsletter",
    "isNewsletter": true,
    "isGroup": false,
    "fromMe": false,
    "messageType": "Conversation",
    "text": "Atualização do canal",
    "messageTimestamp": 1788868800000,
    "newsletterServerId": 42
  }
}

Responder ao webhook

Seu receptor deve aceitar o POST JSON e devolver uma resposta 2xx rapidamente, após validar e registrar o recebimento. O corpo da resposta não é um comando para a API. Processe trabalho demorado separadamente.

O worker não repete automaticamente uma entrega HTTP malsucedida. Consulte diagnóstico de webhooks e implemente a reconciliação necessária. Eventos repetidos ou fora de ordem ainda precisam ser tolerados pelo receptor.

Referências