Skip to content

rodtanci/ChatWoot-Disparador-de-Campanhas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Disparador de Campanhas via WhatsApp 🚀

🌟 Introdução 🌟

O disparador de campanhas oferece uma forma eficiente e eficaz de gerenciar e enviar mensagens de campanha utilizando o ChatWoot. Esta solução é projetada para facilitar a comunicação com seus clientes, permitindo agendamento de campanhas, envio de mensagens personalizadas e acompanhamento de desempenho.

Funcionalidades

📱 Campanhas dentro do ChatWoot

Integração completa com o ChatWoot para gerenciar suas campanhas diretamente dentro da plataforma.

⏰ Agendamento e Disparo Imediato

  • Agende suas campanhas para uma data e hora específicas.
  • Opção para disparo imediato, permitindo envios em tempo real.

🖼️ Envio de Imagem

  • Possibilidade de incluir imagens nas mensagens da campanha.
  • Suporte para múltiplos formatos de imagem (JPEG e PNG).
  • Usar a variavel &img=linkdaimagem.jpg

📝 Envio de PDF

  • Possibilidade de incluir PDF junto com uma mensagem.
  • Usar a variavel &doc=linkdopdf.pdf

🎬 Envio de Video

  • Possibilidade de incluir video nas mensagens da campanha.
  • Usar a variavel &vid=linkdovideo.mp4

🔊 Envio de Audio

  • Possibilidade de incluir audio nas mensagens da campanha.
  • Usar a variavel &audio=linkdoaudio.mp3

📊 Limitador de Envios Diário por Empresa

  • Defina um limite diário de envios para cada empresa.
  • Evite sobrecarregar a utilização da VPS com o alto fluxo de mensagens.

⏳ Temporizador Randômico entre os Envios

  • Adicione um temporizador randômico entre os envios para evitar detecção como spam e bloquear o número.
  • (Lembrando que isso não é uma garantia de que você não possa perder seu número e sim uma solução para reduzir os riscos.)

🔄 Contador de Envios e Falhas

  • Conta número de envios ✅.
  • Conta número de falhas ❌.

🚫 Mensagem de Excesso de Limite Diário

  • Envio automático de uma mensagem quando o limite diário de envios for excedido.
  • Mantenha os administradores informados sobre o status das campanhas.

📋 Mensagem de Relatório da Campanha

  • Receba uma mensagem avisando que o disparo da campanha foi iniciado.
  • Receba um relatório detalhado ao final de cada campanha.
  • Inclui número total de envios e falhas.
  • Inclui número de disparos que restam no dia.
  • Inclui os números que não enviaram com o nome do contato.

📝 Personalização com Nome e Email do Contato

  • Use a variável (&nome) para personalizar as mensagens com o nome do contato.
  • Use a variável (&email) para personalizar as mensagens com o email do contato.
  • Aumente a personalização e eficácia das suas mensagens de campanha.

🏷️ Disparos através das Etiquetas dos Contatos

  • Utilize as etiquetas dos contatos para segmentar e direcionar suas campanhas de maneira eficiente.
  • Agrupe contatos com base em características específicas e envie mensagens direcionadas.

🎉 Benefícios 🎉

  • Automatização: Reduza o trabalho manual com a automação de campanhas. 🤖
  • Personalização: Melhore a experiência do cliente com mensagens personalizadas. 🎯
  • Eficiência: Acompanhe o desempenho em tempo real e otimize suas campanhas. 📊
  • Integração: Dispare campanhas diretamente pelo ChatWoot sem precisar abrir outro sistema, otimizando tempo e recursos. 🚀

📘 Tutorial de Automação de Disparo de Campanhas

Vamos começar o tutorial para fazer a automação do sistema de disparo de campanhas usando o n8n e a Evolution API junto ao ChatWoot.

Antes de iniciar, certifique-se de que você já tem instalado:

  • ChatWoot
  • n8n
  • Evolution API
  • pgAdmin ou outro de sua preferência para acessar o banco de dados do Postgres

Passo 1: Criar uma Caixa de Entrada de Canal SMS do Tipo Bandwidth

  1. Acesse o ChatWoot: Faça login na sua conta do ChatWoot.
  2. Configurações: Vá para a seção de configurações.
  3. Caixas de Entrada: Selecione "Caixas de Entrada" no menu.
  4. Adicionar Nova Caixa de Entrada: Clique no botão "Adicionar Nova Caixa de Entrada".
  5. Escolher Tipo de Canal: Selecione "SMS" e escolha "Bandwidth" como o tipo de canal.
  6. Configurar Detalhes do Canal:
    • Nome da Caixa de Entrada: Disparador (ou o nome que preferir).
    • Número de telefone: +741963
    • ID da Conta: 741963
    • ID da aplicação: 741963
    • Chave API: 741963
    • Chave secreta API: 741963
  7. Salvar Configurações: Clique em "Criar canal Bandwidth" para criar a nova caixa de entrada.

Passo 2: Adicionar Colunas no Banco de Dados do ChatWoot

  1. Acesse o Banco de Dados: Use o pgAdmin ou outro software de sua preferência para acessar o banco de dados do ChatWoot.

  2. Adicionar Coluna na Tabela Accounts:

    • Execute o seguinte comando SQL para adicionar a coluna limite_disparo:
      ALTER TABLE accounts
      ADD COLUMN limite_disparo INTEGER NOT NULL DEFAULT 100;
  3. Adicionar Colunas na Tabela Campaigns:

    • Execute os seguintes comandos SQL para adicionar as colunas status_envia, enviou e falhou:
      ALTER TABLE campaigns
      ADD COLUMN status_envia INTEGER NOT NULL DEFAULT 0;
      
      ALTER TABLE campaigns
      ADD COLUMN enviou INTEGER NOT NULL DEFAULT 0;
      
      ALTER TABLE campaigns
      ADD COLUMN falhou INTEGER NOT NULL DEFAULT 0;
  4. Adicionar nova Tabela para guardar os envios que falharem:

    • Execute o seguinte comando SQL para adicionar a tabela campaigns_failled:
       -- Cria a sequência
       CREATE SEQUENCE campaigns_failled_id_seq;
       
       -- Cria a tabela com a coluna `id` usando a sequência criada
       CREATE TABLE campaigns_failled (
         id BIGINT PRIMARY KEY NOT NULL DEFAULT nextval('campaigns_failled_id_seq'::regclass),
         nomecontato TEXT NOT NULL,
         telefone CHARACTER VARYING NOT NULL,
         id_campanha INTEGER NOT NULL
       );

🛠️ OBRIGATORIO ❗ - 🚨 CORREÇÃO NO BANCO DE DADOS DO CHATWOOT ⚠️

Após aplicar esta correção é recomendavel recriar as etiquetas (marcadores).

  • Foi notado que os ID da tabela "labels" não condizia com os id ta tabela "tags" sendo assim criei algumas funções e triggers que corrigem esse problema.
  1. Criação das Funções de Replicação, Exclusão e Atualização

    Cria na raiz do banco de dados

    Função para replicar inserções:

    CREATE OR REPLACE FUNCTION replicate_labels_to_tags()
    RETURNS TRIGGER AS $$
    BEGIN
        INSERT INTO tags (id, name)
        VALUES (NEW.id, NEW.title);
        RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;

    Função para replicar exclusões:

    CREATE OR REPLACE FUNCTION delete_labels_from_tags_and_taggings()
    RETURNS TRIGGER AS $$
    BEGIN
        -- Exclui da tabela tags
        DELETE FROM tags WHERE id = OLD.id;
        -- Exclui da tabela taggings
        DELETE FROM taggings WHERE tag_id = OLD.id;
        RETURN OLD;
    END;
    $$ LANGUAGE plpgsql;

    Função para replicar atualizações:

    CREATE OR REPLACE FUNCTION update_labels_to_tags()
    RETURNS TRIGGER AS $$
    BEGIN
        UPDATE tags
        SET name = NEW.title
        WHERE id = NEW.id;
        RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;
  2. Criação dos Triggers

    Criar na tabela labels

    Trigger para inserções:

    CREATE TRIGGER after_insert_labels
    AFTER INSERT ON labels
    FOR EACH ROW
    EXECUTE FUNCTION replicate_labels_to_tags();

    Trigger para exclusões:

    CREATE TRIGGER after_delete_labels
    AFTER DELETE ON labels
    FOR EACH ROW
    EXECUTE FUNCTION delete_labels_from_tags_and_taggings();

    Trigger para atualizações:

    CREATE TRIGGER after_update_labels
    AFTER UPDATE ON labels
    FOR EACH ROW
    EXECUTE FUNCTION update_labels_to_tags();

Passo 3: Importar Workflows no n8n

  1. Acesse o n8n: Faça login na sua instância do n8n.
  2. Adicionar Novo Workflow:
    • Clique em "Add Workflow".
  3. Importar Workflow:
    • Clique nos três pontinhos no canto superior direito.
    • Selecione "Import from File".
  4. Importar o Fluxo Disparador:
    • Importe o arquivo de workflow disparador.json.
  5. Importar o Fluxo Reset-Limite-Campanhas:
    • Repita os passos acima e importe o reset-limite-campanha.json.

Passo 4: Editar o Workflow Disparador no n8n

  1. Acesse o Workflow Disparador: No n8n, abra o workflow Disparador que você importou.
  2. Editar Nó Info_Base:
    • Preencha os seguintes campos com suas informações:
      • URL do ChatWoot
      • URL da Evolution API
      • Token de acesso da conta do ChatWoot
      • Global API KEY da Evolution API
      • Nome da Caixa de Entrada cadastrada na Evolution API que vai disparar as mensagens
      • ID da conta do ChatWoot
      • Email que vai receber o relatório
      • Número do WhatsApp que vai receber o relatório
  3. Editar Nó Buscar campanhas:
    • Edite "account_id" pelo id da instancia do ChatWoot.
    • Edite "inbox_id" pelo id da caixa de entrada do disparador que voce crio no Passo 1.
  4. Conectar Nós do Postgres ao Banco de Dados do ChatWoot:
    • Conecte todos os nós do Postgres ao banco de dados do ChatWoot, garantindo que as informações fluam corretamente entre os sistemas.

Passo 5: Editar o Workflow reset-limite-campanha no n8n

  1. Acesse o Workflow reset-limite-campanha: No n8n, abra o workflow reset-limite-campanha que você importou.
  2. Conectar Nós do Postgres ao Banco de Dados do ChatWoot:
    • Conecte todos os nós do Postgres ao banco de dados do ChatWoot, garantindo que as informações sejam atualizadas corretamente para resetar o limite de disparo diário.

Agora que os workflows foram importados, configurados e editados, sua automação de disparo de campanhas está pronta para funcionar!

📢 Cadastro de uma Nova Campanha no ChatWoot

Para criar uma campanha, siga os passos abaixo:

  1. Clique em Campanhas: Acesse a seção de Campanhas no ChatWoot.
  2. Clique em Única: Selecione a opção "Única".
  3. Clique em Criar uma campanha única: Adicione as informações da sua campanha.
    • Título: Insira o título da campanha.
    • Mensagem: Digite a mensagem que quer enviar na campanha.
      • Para adicionar o nome do contato à mensagem, digite &nome.
      • Para adicionar o email do contato à mensagem, digite &email.
      • Para adicionar uma imagem, digite &img=urldaimagemaqui.jpg.
      • Para adicionar um video, digite &vid=urldovideo.mp4.
      • Para adicionar um pdf, digite &doc=urldopdf.pdf.

Exemplo de uso imagem:

"Olá &nome, tudo bem? Você já viu esta bela paisagem?

&img=https://img.freepik.com/fotos-gratis/paisagem-de-nevoeiro-matinal-e-montanhas-com-baloes-de-ar-quente-ao-nascer-do-sol_335224-794.jpg"

Exemplo de uso pdf:

"Olá &nome, tudo bem? Segue o nosso catalogo em PDF?

&doc=https://evolution-api.com/files/evolution-api.pdf"

Exemplo de uso video:

"Olá &nome, tudo bem? Você já viu esse vídeo??_

&vid=https://evolution-api.com/files/video.mp4"

  1. Selecionar Caixa de Entrada: No campo "Selecionar caixa de entrada", selecione a caixa de SMS que você criou no início do tutorial.
  2. Público: Selecione a etiqueta que está atribuída aos contatos que quer disparar a campanha.
  3. Horário Agendado: Selecione o dia e a hora que quer disparar a campanha. Caso queira disparar a campanha na mesma hora, selecione a data e a hora atual.
  4. Clique em Criar: Finalize a criação da campanha.

Agora tudo está pronto para enviar a sua campanha!


📅 Roadmap do Projeto

Versão 1.1 🚀

Mensagem de Início de Disparo

  • Implementar uma mensagem que indique o início do disparo da campanha para notificar os usuários sobre o processo inicial.

Correção no limitador

  • Correção no limitador de disparo, foi encontrado um erro que ele rouba 1 limite da conta quando chega em 1.

Versão 1.2 💡

Relatório de Finalização por Email

  • Adicionar funcionalidade para enviar um relatório por email ao final da campanha, detalhando métricas e resultados.

Inclusão do Limite de Disparos Diários no Relatório

  • Introduzir no relatório o número restante de disparos diários disponíveis, fornecendo transparência sobre os limites e uso.

Versão 1.3 📊

Adicionando variável

  • Vamos adicionar a variável &email para conseguir personalizar mais ainda a mensagem.

Versão 1.4 🚨

Relatório de Falhas de Envio

  • Desenvolver um relatório específico que liste os contatos que falharam no envio, incluindo nome e telefone, para análise e correção.

Versão 1.5 📑

Envio de PDF

  • Incluir a inserção de um arquivo pdf dentro da campanha.

Versão 1.6 🎬

Envio de VIDEO

  • Incluir a inserção de video dentro da campanha.

Versão 1.7 🔊

Envio de AUDIO

  • Incluir a inserção de audio dentro da campanha.

Versão 1.8 🏷️🏷️

Multiplas etiquetas

  • Disparar campanha para mais de uma etiqueta.

Versão 1.9 📇💬 (Já disponível)

Buscar etiquetas na conversa

  • Agora alem de buscar a etiqueta do contato ele busca nas conversas. Envia campanha para grupos
  • Agora suas campanhas tambem serão enviadas para grupos do whatsapp.

Versão 2.0 🌟

Envio de Mensagens Dinâmicas

  • Possibilidade de cadastrar mais de uma mensagem dentro do template para disparar de forma aleatória, evitando bloqueio do número.

Disparo por Múltiplos Números de WhatsApp

  • Permitir o disparo de campanhas através de mais de um número de WhatsApp, melhorando a capacidade de gestão e distribuição das mensagens.

Considerações Finais 🛠️

  • Este roadmap pode ser ajustado conforme novas ideias surjam ou prioridades se alterem durante o desenvolvimento. Cada etapa visa melhorar a funcionalidade e a eficiência do disparador de campanhas, proporcionando uma experiência mais completa e eficaz aos usuários.

📝 Apoio ao Projeto

Quem quiser apoiar o projeto com dicas de melhorias e reportar alguma falha pode me acionar pelo grupo do WhatsApp.

https://chat.whatsapp.com/H2as2v9yHre8U2gjNaCWRc

Caso alguém queira contribuir de forma monetária, o chave PIX aleatoria: a0db6d5c-625b-4846-ba9a-3e06ccc6b1d4

About

Disparando campanhas direto do ChatWoot com N8N + Evolution API

Resources

Stars

Watchers

Forks

Packages

No packages published