Pular para o conteúdo principal

Type Message Router (Subflow)

Mensagens do WhatsApp podem conter diversos tipos de anexos (áudios, imagens, arquivos, contatos, localização). Cada tipo precisa de processamento específico antes de ser enviado para a IA. Este subflow resolve:

  • Transcrever áudios automaticamente
  • Converter imagens para base64 (para análise visual com LLMs)
  • Extrair metadados de arquivos, contatos e localizações
  • Normalizar todos os tipos para formato texto que a IA possa processar

O Que Este Fluxo Faz

Fluxo de Processamento

  1. Recebe trigger do workflow Chatwoot Messages
  2. Filtra contato de desenvolvimento:
    • Se for contato de dev → Envia para workflow de desenvolvimento
    • Caso contrário → Continua processamento normal
  3. Divide anexos com Split Out (processa cada anexo separadamente)
  4. Identifica tipo via Switch e roteia para processamento específico:

Tipo: Image

  1. Busca imagem no Chatwoot (via data_url)
  2. Extrai dados binários e converte para base64
  3. Salva base64 na tabela message:
    • content: Base64 da imagem
    • type: "image"
    • processed: 0

Tipo: Audio

  1. Busca áudio no Chatwoot (via data_url)
  2. Envia para OpenAI Whisper API (modelo gpt-4o-transcribe)
  3. Recebe transcrição em texto
  4. Salva na tabela message:
    • content: "Transcrição de audio: {texto}"
    • type: "text"
  5. Cria anotação privada no Chatwoot com a transcrição

Tipo: File

  1. Extrai URL do arquivo
  2. Salva na tabela message:
    • content: "URL do arquivo: {url}"
    • type: "text"

Tipo: Contact

  1. Extrai nome e telefone do contato compartilhado
  2. Salva na tabela message:
    • content: "Nome do Contato: {nome}, Telefone: {telefone}"
    • type: "text"

Tipo: Location

  1. Extrai coordenadas (latitude e longitude)
  2. Salva na tabela message:
    • content: "Latitude: {lat}, Longitude: {long}"
    • type: "text"

Setup

1. Configurar Credenciais OpenAI

  1. No N8N, vá em Credentials > HTTP Header Auth
  2. Crie credencial "OpenAI Inci Brasil":
    • Name: Authorization
    • Value: Bearer sk-YOUR-OPENAI-API-KEY

2. Configurar Credencial Chatwoot (User)

Para criar anotações privadas no Chatwoot:

  1. Crie um usuário bot no Chatwoot
  2. Gere um Access Token em Settings > Profile Settings
  3. No N8N, crie credencial HTTP Header Auth:
    • Name: api_access_token
    • Value: {TOKEN}

3. Configurar Banco de Dados

Este subflow usa a mesma tabela message do workflow principal. Veja o schema completo em Chatwoot Messages.

4. Webhook de Desenvolvimento (Opcional)

O nó Send Event to Developers permite testar anexos em ambiente separado:

  1. Crie um contato de teste no Chatwoot (anote o contact_id)
  2. Atualize o Switch com o ID do contato
  3. Configure o workflow de desenvolvimento (ID: SPN4OG0dHzRkvXlh)

Observações Importantes

  • ✅ Este é um subflow, executado por Chatwoot Messages
  • ✅ Áudios são transcritos automaticamente com OpenAI Whisper
  • ✅ Imagens são convertidas para base64 para análise visual
  • ⚠️ Transcrição de áudio consome créditos da OpenAI
  • ⚠️ Imagens grandes podem exceder limites de base64
  • ⚠️ Retry configurado para busca de anexos (5 tentativas com 5s de espera)
  • ⚠️ Todos os tipos são convertidos para texto antes do processamento com IA

Workflows Relacionados