# 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.

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

Envie essa configuração para [POST /webhook](/reference/updateWebhook.md), 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.

| Campo | Tipo | Significado |
|---|---|---|
| `EventType` | string | **Obrigatório.** Tipo de evento, por exemplo connection ou messages. |
| `owner` | string | **Obrigatório.** Consulte o objeto ou exemplo correspondente. |
| `token` | string | **Obrigatório.** Token da instância; dado sensível. |
| `BaseUrl` | string | **Obrigatório.** Consulte o objeto ou exemplo correspondente. |
| `instanceName` | string | Consulte o objeto ou exemplo correspondente. |
| `newsletter` | object | Identificação do canal. |
| `newsletter.jid` | string | JID do canal, quando incluído na projeção. |
| `newsletter.id` | string | Parte de usuário do JID do canal. |
| `newsletter.chatid` | string | JID completo do canal. |
| `newsletter.server` | string | Domínio do identificador, newsletter. |
| `message` | object | Mensagem normalizada. Campos disponíveis variam conforme o tipo e a origem. |
| `message.id` | string | Identificador retornado pelo sistema; preserve como string. |
| `message.messageid` | string | ID da mensagem no WhatsApp. |
| `message.chatid` | string | JID do contato, grupo ou canal. |
| `message.sender` | string | JID do remetente. |
| `message.senderName` | string | Nome disponível do remetente. |
| `message.fromMe` | boolean | Mensagem enviada pela conta conectada. |
| `message.wasSentByApi` | boolean | Origem na API quando esse campo estiver presente na mensagem. |
| `message.isGroup` | boolean | Identifica conversa de grupo. |
| `message.messageType` | string | Tipo de mensagem normalizado. |
| `message.text` | string | Texto ou legenda disponível. |
| `message.messageTimestamp` | integer | Timestamp da mensagem em milissegundos Unix. |
| `message.content` | variável | Conteúdo específico do tipo de mensagem; não possui um formato único. |
| `message.status` | string | Estado disponível da mensagem; pode estar vazio. |
| `message.isNewsletter` | boolean | Indica mensagem de canal. |
| `message.newsletterServerId` | integer | ID de servidor da mensagem de canal. |
| `message.newsletterMeta` | variável | Metadados 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

```json
{
  "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](/docs/integrations-webhooks#diagnostico) e implemente a reconciliação necessária. Eventos repetidos ou fora de ordem ainda precisam ser tolerados pelo receptor.

## Referências

- [Introdução, configuração e catálogo](/docs/integrations-webhooks)
- [Autenticação](/docs/authentication)
- [Contrato OpenAPI completo](/openapi-bundled.json)
