# Enviar Mensagem

Endpoints para envio de mensagens do WhatsApp com diferentes tipos de conteúdo.

## Campos Opcionais Comuns

Todos os endpoints de envio de mensagem suportam os seguintes campos opcionais:

- **`delay`** *(integer)*: Atraso em milissegundos antes do envio
  - Durante o atraso aparecerá "Digitando..." ou "Gravando áudio..." dependendo do tipo
  - Exemplo: `5000` (5 segundos)

- **`readchat`** *(boolean)*: Marcar chat como lido após envio
  - Remove o contador de mensagens não lidas do chat
  - Exemplo: `true`

- **`readmessages`** *(boolean)*: Marcar últimas mensagens recebidas como lidas
  - Marca as últimas 10 mensagens **recebidas** (não enviadas por você) como lidas
  - Útil para confirmar leitura de mensagens pendentes antes de responder
  - Diferente do `readchat` que apenas remove contador de não lidas
  - Exemplo: `true`

- **`replyid`** *(string)*: ID da mensagem para responder
  - Cria uma resposta vinculada à mensagem original
  - Suporte varia por tipo de mensagem

- **`viewOnce`** *(boolean)*: Recomendado quando quiser mídia de visualização única
  - Use em `/send/media` com `type` compatível (`image`, `video`, `videoplay`, `ptv`, `audio`, `myaudio`, `ptt`)
  - Nos demais endpoints de envio, o campo é aceito, mas é ignorado silenciosamente
  - Exemplo: `"3A12345678901234567890123456789012"`

- **`mentions`** *(string)*: Números para mencionar (apenas para envio em grupos)
  - Números específicos: `"5511999999999,5511888888888"`
  - Compatibilidade para mencionar todos: `"all"`
  - Menção nativa a todos: inclua `@all` ou `@todos` diretamente no texto da mensagem
  - `@todos` é normalizado para `@all` antes do envio

- **`forward`** *(boolean)*: Marca a mensagem como encaminhada no WhatsApp
  - Adiciona o indicador "Encaminhada" na mensagem
  - Exemplo: `true`

- **`track_source`** *(string)*: Origem do rastreamento da mensagem
  - Identifica o sistema ou fonte que está enviando a mensagem
  - Útil para integrações (ex: "chatwoot", "crm", "chatbot")
  - Exemplo: `"chatwoot"`

- **`track_id`** *(string)*: ID para rastreamento da mensagem
  - Identificador livre para acompanhar a mensagem em sistemas externos
  - Permite correlacionar mensagens entre diferentes plataformas
  - **Nota**: O sistema aceita valores duplicados - não há validação de unicidade
  - Use o mesmo ID em várias mensagens se fizer sentido para sua integração
  - Exemplo: `"msg_123456789"`

- **`async`** *(boolean)*: Envia pela fila interna sem bloquear a requisição
  - Resposta 200 indica que a mensagem entrou na fila; o envio real pode falhar depois
  - Em caso de falha, pesquise em `/message/find` com `status=failed`

## Diagnóstico de limites do WhatsApp

Em alguns casos, o WhatsApp pode recusar novas conversas por regras próprias de volume, qualidade ou limitação temporária.

Quando isso acontecer, a resposta de erro pode incluir:
- `error_source: "whatsapp_server"`
- `provider: "whatsapp"`
- `provider_code: 463`
- `error_key`
- `message`
- `message_ptbr`
- `provider_message`
- `provider_message_ptbr`
- `diagnostics_endpoint`
- `details.new_chat_message_capping`
- `details.reachout_timelock`

Para consultar o estado atual desses limites para a conta atualmente conectada, use:
- `GET /instance/wa_messages_limits`

### Envio para Grupos
- **`number`** *(string)*: Para enviar mensagem para grupo, use o ID do grupo que termina com `@g.us`
  - Exemplo: `"120363012345678901@g.us"`
  - **Como obter o ID do grupo:**
    - Use o `chatid` do webhook recebido quando alguém envia mensagem no grupo
    - Use o endpoint `GET /group/list` para listar todos os grupos e seus IDs

## Placeholders Disponíveis

Campos textuais das operações de envio que documentam esse recurso aceitam os placeholders abaixo:

### Campos de Nome
- **`{{name}}`**: Nome consolidado do chat, usando a primeira opção disponível:
  1. Nome do lead (`lead_name`)
  2. Nome completo do lead (`lead_fullName`)
  3. Nome do contato no WhatsApp (`wa_contactName`)
  4. Nome do perfil do WhatsApp (`wa_name`)

- **`{{first_name}}`**: Primeira palavra válida do nome consolidado (mínimo 2 caracteres)

### Campos do WhatsApp
- **`{{wa_name}}`**: Nome do perfil do WhatsApp
- **`{{wa_contactName}}`**: Nome do contato como salvo no WhatsApp

### Campos do Lead
- **`{{lead_name}}`**: Nome do lead
- **`{{lead_fullName}}`**: Nome completo do lead
- **`{{lead_personalid}}`**: ID pessoal (CPF, CNPJ, etc)
- **`{{lead_email}}`**: Email do lead
- **`{{lead_status}}`**: Status atual do lead
- **`{{lead_notes}}`**: Anotações do lead
- **`{{lead_assignedAttendant_id}}`**: ID do atendente designado

### Campos Personalizados
Os 20 campos personalizados são acessíveis somente por `{{lead_field01}}` até `{{lead_field20}}`.
`/instance/updateFieldsMap` configura o rótulo de cada campo, mas não cria um novo nome de placeholder.
Por exemplo, mesmo que `lead_field01` receba o rótulo `empresa`, use `{{lead_field01}}`, não `{{empresa}}`.

### Exemplo de Uso
```
Olá {{first_name}}! Empresa: {{lead_field01}}.
Seu email {{lead_email}} está correto?
```

**💡 Dica**: Use `/chat/find` para buscar dados do chat e ver os campos disponíveis antes de enviar mensagens com placeholders.

