Fluxo de Mensagens
Mensagem Recebida (WhatsApp → Agent)
Lead envia mensagem
|
Go-Whatsmeow recebe
|
Webhook → webhook_whatsapp:3000/events
|
Publica na fila "events" (RabbitMQ)
|
marie_ai consumer consome
|
+----+----+
| |
| Salva evento no MongoDB
| |
| Upsert contato e chat
| |
| Avalia triggers
| |
| CRM sync (move deal para "on_interaction" se aplicavel)
| |
| Pausa follow-up/remarketing
| |
| Processa com agent (LangChain ReAct)
| |
| Agent responde
| |
+→ Envia resposta via GOWA API → WhatsApp
Webhook RD Station (Lead → Primeira Mensagem)
Lead converte em formulario
|
RD Station envia webhook
|
POST /api/webhook/rdstation
|
Valida payload + busca RD Event config
|
Upsert contato + chat
|
Salva custom fields no conversation state
|
Processa com agent (usando message + system_prompt do RD Event)
|
Envia resposta via GOWA API → WhatsApp
|
Atualiza lead no RD Station (custom fields)
|
Move deal para stage configurado
|
Inicia follow-up (se trigger = "webhook")
|
Atribui agent ao chat
CRM Sync (3 Pontos)
Sync A — Consumer (Passivo)
Quando lead responde, move deal de on_new_contact/on_follow_up/on_remarketing para on_interaction.
Sync B — Agent Tools (Ativo)
mark_meeting_scheduled→ move paraon_meetingclassify_no_interest→ move paraon_remarketingschedule_meeting→ auto-move paraon_meeting
Sync C — Timeout Job (Temporal)
Polling a cada 5 minutos. Move deals sem interacao para on_follow_up apos timeout configurado.
Deal Notes
Notas hardcoded sao adicionadas automaticamente no deal do RD Station em eventos-chave:
| Evento | Nota |
|---|---|
| Reuniao agendada | [Marie AI] Reuniao agendada: "{titulo}" em {data} com {responsavel} |
| Reuniao cancelada | [Marie AI] Reuniao cancelada: "{titulo}" que estava agendada para {data} |
| Reuniao atualizada | [Marie AI] Reuniao atualizada: "{titulo}" \| novo horario: {data} |
| Task agendada | [Marie AI] Task agendada: "{descricao}" para {data} |
| Task cancelada | [Marie AI] Task cancelada (ID: {id}) |
| Transicao de stage | [Marie AI] {motivo} |