> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pingoai.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Integracoes de canais

> Como funciona API oficial, Baileys, Facebook e Instagram: rotas, envio, recebimento e fluxo interno.

## Visao geral

No ExclusiveDay, os canais se conectam por 3 caminhos principais:

1. **API oficial de mensagens** (HTTP com token).
2. **Baileys** (WhatsApp Web via event bus e handlers no channel).
3. **Meta (Facebook/Instagram)** via webhook e handlers do channel.

## 1) API oficial (HTTP)

Base no backend:

* Prefixo: `/api/messages`
* Arquivo de rotas: `Backend-1/src/routes/apiRoutes.ts`
* Registro no index: `Backend-1/src/routes/index.ts` com `routes.use("/api/messages", apiRoutes)`

### Rotas principais

* `POST /api/messages/send`
* `POST /api/messages/send-button`
* `POST /api/messages/send-list`
* `POST /api/messages/send/linkImage`
* `POST /api/messages/checkNumber`

### Autenticacao

* Middleware: `tokenAuth`
* Envio com token/bearer conforme padrao interno da API.

### Fluxo de envio (API oficial)

1. Cliente externo chama `POST /api/messages/send`.
2. Backend valida token e encaminha para `ApiController`.
3. Mensagem entra no fluxo de envio interno.
4. Backend publica comando/evento para o channel quando necessario.
5. Channel executa envio no conector do canal (Baileys ou Meta).

### Fluxo de recebimento

* Recebimento depende do canal de origem (webhook/meta ou sessao/baileys).
* Evento recebido passa por channel -> backend -> socket para frontend.

## 2) Baileys (WhatsApp Web)

### Componentes principais

* Handler de envio: `channel-2/src/handlers/baileys/baileys-send-message.handler.ts`
* Comandos/eventos Baileys: `channel-2/src/handlers/baileys/commands` e `events`
* Sessao WhatsApp: `channel-2/src/baileys/*`
* Event bus do channel: `channel-2/src/bus-rabbitmq/bus-rabbitmq.ts`

### Como envia

1. Backend gera comando de envio no fluxo de mensagem.
2. Command cai na fila do event bus RabbitMQ.
3. `BaileysSendMessageHandler` processa:
   * valida `whatsappId`
   * valida sessao conectada
   * chama `SendWhatsAppMessage`
4. Publica evento `BaileysMessageSent`.

### Como recebe

* Eventos recebidos do WhatsApp passam pelos listeners/handlers do channel.
* O processamento cria/atualiza ticket/mensagem.
* Backend publica no Socket.IO para atualizar o frontend em tempo real.

## 3) Facebook e Instagram (Meta)

No backend, o webhook da Meta entra pelas rotas:

* `GET /`
* `POST /`
* `GET /webhook`
* `POST /webhook`

Arquivo: `Backend-1/src/routes/webHookRoutes.ts`\
Registro em `routes/index.ts`:

* `routes.use("/", webHookRoutes)`
* `routes.use("/webhook", webHookRoutes)`

### Como envia (Meta)

* Handler: `channel-2/src/handlers/meta/meta-send-message.handler.ts`
* Fluxo:
  1. comando `MetaSendMessage`
  2. handler valida `whatsappId` e dados do ticket
  3. chama `SendMetaMessage`
  4. publica `MetaMessageSent`

### Como recebe (Meta webhook)

1. Meta chama webhook no backend (`/` ou `/webhook`).
2. `WebHookController` processa payload.
3. Backend/channel executam roteamento da mensagem.
4. Ticket e mensagens sao atualizados.
5. Frontend recebe evento por socket.

## 4) WhatsApp Microservice webhook

Existe uma rota dedicada:

* `POST /api/whatsapp-microservice/webhook`
* Arquivo: `Backend-1/src/routes/whatsappMicroserviceRoutes.ts`

Uso: entrada de eventos de um microservico de WhatsApp externo.

## 5) Rotas de operacao relacionadas a conexao

Arquivo: `Backend-1/src/routes/whatsappRoutes.ts`

* `GET /whatsapp/`
* `POST /whatsapp/`
* `POST /facebook/`
* `PUT /whatsapp/:whatsappId`
* `DELETE /whatsapp/:whatsappId`
* `POST /whatsapp-restart/`

Essas rotas sao para **gestao da conexao/canal**, nao para webhook.

## 6) Exemplo pratico por tipo de integracao

### Exemplo A - API oficial (envio texto)

* Chamada: `POST /api/messages/send`
* Resultado esperado: mensagem enfileirada/processada e refletida no ticket.

### Exemplo B - Baileys (envio por sessao conectada)

* Acao: enviar mensagem em ticket conectado no WhatsApp Web.
* Resultado esperado: handler Baileys processa e publica evento de envio concluido.

### Exemplo C - Facebook/Instagram (recebimento)

* Acao: mensagem entra pelo webhook Meta.
* Resultado esperado: ticket atualizado + evento em tempo real no frontend.

## 7) Checklist de validacao por canal

### API oficial

* token valido no endpoint
* retorno HTTP coerente
* mensagem persistida no ticket

### Baileys

* sessao conectada
* envio concluido sem erro de sessao
* evento em realtime no frontend

### Facebook/Instagram

* webhook respondendo 200
* payload processado sem erro
* criacao/atualizacao de ticket e mensagem
