Automação WhatsApp com Typebot e IA: Múltiplas Instâncias

9 min de leitura Automação
Automação WhatsApp com Typebot e IA: Múltiplas Instâncias

A automação de vendas no WhatsApp deixou de ser um diferencial competitivo para se tornar uma necessidade básica em qualquer operação digital moderna. No entanto, a dependência exclusiva de APIs oficiais (como o Meta Cloud API) pode gerar custos elevados e limitações na personalização do fluxo conversacional. Para profissionais de TI e desenvolvedores que buscam controle total, escalabilidade e redução de custos, a abordagem self-hosted combinada com ferramentas de orquestração como o Typebot e engines de conexão baseadas em protocolos open-source é a solução ideal.

Neste tutorial técnico, demonstraremos como construir um ecossistema robusto de automação. Utilizaremos o Typebot para o design visual dos fluxos de conversa (chatbots IA) e uma engine de conexão via Baileys (através do projeto WPPConnect ou similar) para gerenciar a sessão do WhatsApp Web diretamente no servidor. A arquitetura proposta permite o envio de disparos em massa, integração com CRMs via Chatwoot e ativação inteligente através de webhooks.

1. Arquitetura do Sistema

Antes de executar qualquer comando, é fundamental entender a topologia da solução. O sistema será composto por três pilares principais:

  • Frontend de Automação (Typebot): Responsável pela lógica de negócio, ramificações condicionais e respostas baseadas em IA.
  • Engine de Conexão (Baileys/WPPConnect): Mantém a sessão do WhatsApp Web ativa no servidor, interpretando eventos de entrada e saída.
  • Banco de Dados e Infraestrutura: Gerenciamento de estado da sessão e persistência dos logs de conversação.

Esta separação de responsabilidades permite que você escale o Typebot independentemente do nó de conexão, garantindo alta disponibilidade para suas campanhas de vendas.

2. Preparação do Ambiente

Vamos utilizar Docker e Docker Compose para orquestrar os containers. Esta abordagem garante isolamento, portabilidade e facilidade na atualização dos componentes. Certifique-se de ter o Docker Engine e o Docker Compose instalados em seu servidor Linux (Ubuntu 22.04 LTS recomendado).

Crie um diretório dedicado ao projeto:

mkdir ~/whatsapp-automation
cd ~/whatsapp-automation

Dentro deste diretório, criaremos o arquivo docker-compose.yml. Este arquivo definirá os serviços necessários. Para este exemplo, focaremos na estrutura básica do Typebot e prepararemos o ambiente para a integração com a engine de mensagens.

3. Implementação do Typebot

O Typebot é uma ferramenta open-source de construção de fluxos de conversa. Para rodá-lo em produção, precisamos definir variáveis de ambiente seguras e persistência de dados.

Edite o arquivo docker-compose.yml e adicione a configuração do serviço Typebot:

version: '3.8'

services:
  typebot-builder:
    image: baptisteArno/typebot-builder:latest
    restart: always
    ports:
      - "3000:3000"
    environment:
      - NEXTAUTH_SECRET=seu_segredo_super_forte_aqui
      - DATABASE_URL=postgresql://typebot:sua_senha@db:5432/typebot
      - BLOB_STORAGE_PROVIDER=local
      - BLOB_STORAGE_PATH=/var/lib/typebot/blobs
    volumes:
      - typebot_data:/var/lib/typebot
    depends_on:
      - db

  typebot-viewer:
    image: baptisteArno/typebot-viewer:latest
    restart: always
    ports:
      - "3001:3000"
    environment:
      - NEXT_PUBLIC_TYPEBOT_BUILDER_URL=http://typebot-builder:3000
    depends_on:
      - typebot-builder

  db:
    image: postgres:15-alpine
    restart: always
    environment:
      - POSTGRES_USER=typebot
      - POSTGRES_PASSWORD=sua_senha
      - POSTGRES_DB=typebot
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  typebot_data:
  pgdata:

Após salvar o arquivo, inicialize os containers:

docker-compose up -d

Acesse http://seu-ip-servidor:3000 para criar sua conta de administrador no Typebot. Você estará pronto para desenhar seus fluxos de chatbots IA.

4. Integração com WhatsApp via Baileys

Aqui reside a complexidade técnica. O protocolo oficial da Meta é caro e rígido. Utilizaremos uma abordagem baseada em Baileys, que simula o comportamento do WhatsApp Web. Para facilitar a integração, recomendamos o uso de um wrapper como o wppconnect-server ou baileys-api, que expõe endpoints RESTful para comunicação com o Typebot.

Vamos adicionar o serviço de conexão ao nosso docker-compose.yml. Note que a sessão deve ser persistida, pois o QR Code muda a cada reinício se não houver backup.

  whatsapp-engine:
    image: wppconnect/wpp-server:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - SESSION_ID=meu_grupo_de_vendas
      - WEBHOOK_URL=http://typebot-builder:3000/api/webhook/whatsapp
      - WEBHOOK_EVENTS_MSG_UPDATE=true
    volumes:
      - ./sessions:/usr/src/app/sessions

Atenção: A pasta ./sessions deve existir no seu host para garantir que a autenticação não seja perdida entre reinicializações do container. Ao subir o serviço, acesse http://seu-ip-servidor:8080/ para escanear o QR Code com seu aplicativo de WhatsApp.

5. Configurando os Webhooks e Disparos

Com ambos os serviços rodando, precisamos conectar a entrada (mensagens recebidas) à lógica do Typebot e a saída (respostas automáticas) ao motor de envio.

No painel do Typebot, crie um novo bot. Configure o endpoint de webhook para apontar para o wpp-server. A estrutura de payload deve seguir o padrão JSON exigido pela engine Baileys:

{
  "chatId": "[email protected]",
  "body": "Olá! Como posso ajudar você hoje?"
}

Para disparos em massa, o Typebot permite a utilização de variáveis globais ou integração com bancos de dados externos. Você pode exportar sua lista de contatos, formatá-la em CSV e utilizar um script Python ou Node.js para iterar sobre os números e acionar o webhook do Typebot individualmente.

Exemplo de script simples para disparo via cURL:

while IFS=',' read -r numero mensagem; do
  curl -X POST http://seu-ip-servidor:8080/message/sendText \
  -H "Content-Type: application/json" \
  -d "{\"chatId\": \"${numero}@s.whatsapp.net\", \"textMessage\": { \"text\": \"${mensagem}\" }}"
done < contatos.csv

Este método, embora básico, ilustra como a automação pode ser orquestrada via linha de comando, permitindo agendamentos através do cron.

6. Integração com Chatwoot para Gestão Omnichannel

Em cenários de vendas reais, é crucial ter um humano no loop quando o bot não consegue resolver a dúvida ou quando o lead demonstra alta intenção de compra. O Chatwoot atua como uma caixa de entrada unificada.

O Chatwoot possui suporte nativo a integrações via API e webhooks. A estratégia aqui é configurar o Typebot para detectar intents complexas e, nesse caso, encaminhar a conversa para o Chatwoot.

No docker-compose.yml, adicione o serviço do Chatwoot:

  chatwoot:
    image: chatwoot/chatwoot:latest
    restart: always
    ports:
      - "3002:3000"
    environment:
      - SECRET_KEY_BASE=seu_segredo_chatwoot
      - DB_HOST=db-chatwoot
      - REDIS_URL=redis://redis-chatwoot:6379
    depends_on:
      - db-chatwoot
      - redis-chatwoot

  db-chatwoot:
    image: postgres:15-alpine
    environment:
      - POSTGRES_USER=chatwoot
      - POSTGRES_PASSWORD=senha_chatwoot
      - POSTGRES_DB=chatwoot
    volumes:
      - cw_pgdata:/var/lib/postgresql/data

  redis-chatwoot:
    image: redis:7-alpine
    volumes:
      - cw_redis_data:/data

Após a subida, configure o webhook de entrada no Chatwoot para receber as mensagens do WhatsApp. Quando uma mensagem chega via Baileys, ela é encaminhada ao Typebot. Se o bot identificar que deve transferir para um atendente, ele utiliza a API do Chatwoot para criar ou atualizar o contato e atribuir a conversa a uma fila de vendas.

7. Segurança e Boas Práticas

A automação de WhatsApp exige rigoroso controle de segurança para evitar banimentos e vazamentos de dados.

  1. Criptografia em Trânsito: Sempre que possível, use Nginx ou Traefik como reverse proxy com certificados SSL (Let's Encrypt) expostos publicamente. Nunca exponha as portas 8080 ou 3000 diretamente na internet sem autenticação.
  2. Rate Limiting: Configure limites de requisições nos seus endpoints para evitar que um loop infinito no seu script de disparos sobrecarregue o servidor ou dispare os filtros anti-spam da Meta.
  3. Isolamento de Rede: Utilize redes Docker personalizadas para garantir que o banco de dados e a engine de mensagens não sejam acessíveis diretamente pela interface web pública.

Exemplo de configuração básica de Nginx:

server {
    listen 80;
    server_name bot.suaempresa.com;

    location / {
        proxy_pass http://typebot-builder:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

8. Monitoramento e Logs

Para manter a saúde do sistema, é vital monitorar os logs dos containers. O Docker fornece comandos nativos poderosos para essa tarefa.

Verifique o status de todos os serviços:

docker-compose ps

Acompanhe os logs em tempo real para debugar erros de conexão ou falhas no envio de mensagens:

docker-compose logs -f whatsapp-engine

Para ambientes de produção mais robustos, considere integrar o Prometheus e Grafana. A engine Baileys expõe métricas básicas de saúde da conexão (como "isConnected" e "qrCodeGenerated") que podem ser coletadas para alertar a equipe de TI antes que o bot pare de funcionar.

9. Considerações Finais sobre Escalabilidade

A arquitetura apresentada é modular. Se você precisar escalar o envio de mensagens, pode adicionar múltiplos containers whatsapp-engine, cada um com uma sessão de WhatsApp diferente (números diferentes), balanceados por um serviço de roteamento. O Typebot atua como a camada inteligente única, decidindo para qual número de engine direcionar a resposta.

Esta abordagem self-hosted oferece controle total sobre os dados dos seus clientes, evitando a dependência de plataformas terceiras que podem alterar preços ou políticas de uso unilateralmente. Ao combinar Typebot, Baileys e Chatwoot, você constrói uma máquina de vendas resiliente, customizável e pronta para o mercado brasileiro.

Lembre-se sempre de respeitar a LGPD ao coletar dados via chatbots IA. Inclua cláusulas de consentimento claras no início dos fluxos do Typebot e permita que o usuário solicite a exclusão de seus dados a qualquer momento através de comandos específicos (ex: digitar "sair" ou "excluir").

Com esta base sólida, sua equipe de desenvolvimento pode começar a implementar integrações mais complexas, como conexão com ERPs via APIs REST ou análise de sentimento usando modelos de IA locais para priorizar leads quentes.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000