Adonai · Versão 2.1.3

Seu robô no seu Cloudflare.

O painel e a API ficam juntos no Cloudflare Pages, com um Worker interno e login próprio. O envio pelo WhatsApp é executado pelo programa no computador.

Arquivo do pacote completoComo usar
1-SUBIR-NO-CLOUDFLARE.zipÉ o único ZIP enviado ao Cloudflare. Já está compilado.
2-BANCO-EXCLUSIVO.sqlInstala as tabelas e regras no novo Supabase.
3-EXECUTOR-WINDOWS.zipPrograma que roda no PC e abre o WhatsApp.
4-CODIGO-FONTE.zipProjeto editável, testes e configuração para deploy como Worker separado, se necessário.
5-DIAGNOSTICO-BANCO.sqlConsulta de leitura para investigar a instalação.
6-ATUALIZAR-PENDENCIAS.sqlInstala os recursos de revisão e contatos pulados da V1.
7-ATUALIZAR-TIMER-V2.sqlInstala a faixa de espera, o sorteio e o timer da V2.
8-OTIMIZAR-CONSULTAS-KENLO.sqlInstala o reaproveitamento de consultas e a espera automática da API.
9-CONTROLE-DA-FILA.sqlInstala Pular e continuar e Travar/Liberar envio por referência.

Atualizar da V2.1.2 para a V2.1.3: conferência da referência

  1. Mantenha o lote pausado e feche o executor.
  2. Suba só 1-SUBIR-NO-CLOUDFLARE.zip no mesmo Pages e pressione Ctrl+F5.
  3. Com o executor ainda fechado, busque a referência que parou em Fila e clique em Ver mensagem. A prévia não envia WhatsApp. Se a referência e a mensagem forem confirmadas, abra o executor e retome o mesmo lote.

Quem já está na V2.1.2 não precisa repetir SQL, mudar secrets ou reinstalar o executor.

O robô aproveita o cadastro certo quando ele vem junto com outros registros em uma única página, desde que referência, imobiliária e ID coincidam sem duplicidade. Se a identidade não puder ser confirmada, o painel mostra o motivo e mantém a pausa antes do envio.

Atualizar para a V2.1.2: controle da fila

  1. Deixe o lote pausado e feche o programa do robô após a ação atual terminar.
  2. No SQL Editor do Supabase exclusivo do robô, execute 9-CONTROLE-DA-FILA.sql. Quem já tem o SQL 8 não precisa repeti-lo.
  3. Suba somente 1-SUBIR-NO-CLOUDFLARE.zip no mesmo Pages, pressione Ctrl+F5 e abra o executor atual.

Na campanha, Pular AP0003 e continuar, por exemplo, registra a referência como pulada só no lote atual e segue para as demais no intervalo configurado. O botão aparece quando a referência voltou para a fila após erro antes da preparação da mensagem. Também funciona em um lote já pausado desse jeito na V2.1.1.

Em Fila, busque a referência e use Travar envio. Ela sai do lote se ainda estiver pendente e fica fora dos próximos até Liberar envio. Travar não retoma um lote pausado. Liberar não envia nada nem repõe a referência no lote que já a pulou. A opção Envios travados filtra os registros da página.

Uma referência em processamento pode ser travada após pausar o lote e aguardar o ponto seguro. Envios incertos continuam exigindo conferência. Os controles preservam os registros de envio e não alteram a Kenlo, o telefone do proprietário, a configuração do PC ou a sessão do WhatsApp.

Atualizar da V2.1.0 para a V2.1.1: consulta direta do imóvel

  1. Pause o lote e aguarde a ação atual terminar. Feche o programa do PC.
  2. Faça novo deployment no mesmo Pages com 1-SUBIR-NO-CLOUDFLARE.zip e pressione Ctrl+F5.
  3. Confira Versão 2.1.1 no menu. Abra o programa atual do PC, já no modo de envio, e retome o mesmo lote.

A instalação do SQL 8 da V2.1.0 continua válida. Mantenha os secrets, a sessão do WhatsApp e as configurações atuais.

A preparação de um imóvel passa a usar uma consulta exata por referência, com property_reference, no endereço de produção documentado da Kenlo. Ela não percorre páginas da carteira para localizar cada imóvel. Um filtro não confirmado ou uma resposta vazia interrompe a preparação antes de enviar, sem recorrer a uma varredura completa. Os identificadores do imóvel e da imobiliária continuam sendo conferidos.

A faixa de 65 a 80 segundos, se já escolhida, continua sendo a espera entre mensagens. Os prazos de consultas já registrados são respeitados. Uma cota indisponível na Kenlo ainda pode gerar HTTP 429. A nova versão registra separadamente uma resposta HTTP recebida e uma espera reaproveitada sem nova chamada. O diagnóstico contém o tipo de consulta, o prazo e o identificador de rastreamento, sem chaves nem dados do proprietário.

Atualizar da V2.0 para a V2.1: menos consultas Kenlo

  1. Pause o lote, aguarde a ação em andamento terminar e feche o programa do robô no PC.
  2. No Supabase exclusivo do robô, execute somente 8-OTIMIZAR-CONSULTAS-KENLO.sql. Os arquivos 6 e 7 continuam obrigatórios, mas não precisam ser repetidos se já foram aplicados. Não repita o SQL 2.
  3. Faça novo deployment no mesmo Pages com 1-SUBIR-NO-CLOUDFLARE.zip e pressione Ctrl+F5.
  4. Abra novamente o programa do PC. O executor atual continua compatível. Se o lote já estava pausado, clique em Retomar uma vez.

Não há secrets novos. Mantenha o login, o modo de envio, a sessão do WhatsApp e a faixa de segundos já escolhida.

Imóveis conferidos são reaproveitados por até 10 minutos; contatos, por até 30 minutos. Ler esses dados não renova o prazo. Na V2.1.1, cada imóvel sem dados recentes é buscado diretamente pela referência. Dados vencidos exigem nova consulta. O status do cliente não impede o envio; a elegibilidade do imóvel continua sendo conferida.

A atualização geral da carteira aguarda o lote terminar, dando prioridade às consultas da campanha. Se a Kenlo devolver limite de consultas, o robô mantém a referência na fila, mostra uma contagem e retoma automaticamente do ponto salvo. Pausar e Parar continuam disponíveis. Uma pausa manual e um envio incerto nunca são retomados automaticamente.

O botão Conferir contato na Kenlo, para números pulados, consulta novamente mesmo com dados recentes guardados. O histórico passa a mostrar se os dados foram consultados ou reaproveitados, e o diagnóstico inclui o prazo de espera da API. Os bancos dos demais projetos continuam separados. Outros apps que usam a mesma chave ainda podem consumir o limite da Kenlo.

Atualizar para V2: intervalo entre mensagens

  1. Com o robô parado, abra o SQL Editor do Supabase exclusivo dele e execute 7-ATUALIZAR-TIMER-V2.sql.
  2. Faça novo deployment no mesmo Pages usando 1-SUBIR-NO-CLOUDFLARE.zip.
  3. Abra o painel e pressione Ctrl+F5. Mantenha o programa do PC e as configurações atuais.

Se já estava na 1.0.6 ou 1.0.7, basta o novo SQL 7. Se ainda não instalou os recursos de revisão e contatos pulados, execute o SQL 6 antes dele. Não repita o SQL 2 em um banco já instalado.

Escolher a faixa de espera

Em Intervalo entre mensagens, informe Mínimo: 20 e Máximo: 30, por exemplo. Depois de confirmar cada envio, o robô sorteia uma espera de 20 a 30 segundos: pode sair 22, depois 28, depois 24. Os valores podem se repetir. A contagem fica na própria campanha e a execução segue automaticamente.

A faixa fica salva ao iniciar o lote e vale para todo ele. Para outro lote, você pode escolher outra faixa. Os campos aceitam segundos inteiros; valores iguais criam uma espera fixa, e 0 nos dois campos desliga a espera.

Você pode pausar ou parar durante a contagem. Recarregar a página preserva o tempo restante. O último item encerra o lote imediatamente; se outro lote começar logo em seguida, ele também considera o tempo desde o envio anterior. As consultas e a confirmação do WhatsApp têm seu próprio tempo além da espera sorteada.

Cliente ativo ou inativo continua permitido. O robô confere a elegibilidade do imóvel com dados da Kenlo, respeitando o prazo de reaproveitamento da V2.1. A V2 mantém a confirmação visual e os contatos pulados da V1.

Recurso da 1.0.6: pular contato sem WhatsApp

Para um número sem WhatsApp, use Pular: número sem WhatsApp. O contato sai dos próximos lotes, a ocorrência fica tratada e você segue com os demais. Não precisa mudar nada na Kenlo. O histórico mantém Pulado: sem WhatsApp, separado dos envios realizados.

  1. Deixe o robô parado, sem um lote enviando.
  2. No SQL Editor do Supabase exclusivo do robô, execute o novo 6-ATUALIZAR-PENDENCIAS.sql deste pacote. Ele já inclui a atualização anterior e pode ser repetido se você usou o arquivo 6 da 1.0.5. Não execute o SQL 2 novamente.
  3. Faça novo deployment no mesmo Pages com 1-SUBIR-NO-CLOUDFLARE.zip e pressione Ctrl+F5. Mantenha as variáveis e os secrets.

O executor 1.0.4 continua compatível. Pode manter o programa do PC como está, sem instalar dependências, reconfigurar ou vincular o WhatsApp novamente.

O número pulado permanece fora da fila mesmo depois de reimportar os imóveis. Se futuramente houver outro telefone na Kenlo, use Conferir contato na Kenlo pelo histórico ou no filtro Pulados: sem WhatsApp da fila. A consulta não envia mensagem. Ao encontrar um número diferente que não foi pulado, os imóveis elegíveis do contato voltam à fila.

As demais pendências continuam abrindo automaticamente no fim do lote e permanecem visíveis até serem tratadas. Envios incertos param imediatamente e exigem conferir a conversa. O botão Pular não serve para dispensar um envio incerto. Timeout na consulta antes do envio pausa para Retomar, sem pular o imóvel.

Preparar sem o celular

Na tela Conexões, use Verificar conexões e Conferir Kenlo. O campo confirmado para bairro comercial pode ser cadastrado no Cloudflare como Texto. Atualizar Kenlo importa os imóveis. Ver mensagem e Conferir até 10 sem enviar consultam o cadastro sem criar lote ou enviar mensagens.

1. Suba o painel e o backend

  1. Abra o painel do Cloudflare e vá a Workers & Pages.
  2. Crie uma aplicação Pages pela opção de upload de arquivos, também chamada Direct Upload ou Drag and drop.
  3. Escolha um nome, por exemplo adonai-robo-proprietarios.
  4. Envie 1-SUBIR-NO-CLOUDFLARE.zip. Se você baixou somente o ZIP de upload, envie adonai-cloudflare-upload-v2.1.3.zip diretamente. Ambos contêm os mesmos arquivos.
  5. Conclua o deploy. O endereço será informado pelo Cloudflare, normalmente com final .pages.dev. Você também poderá vincular seu domínio.

Não é necessário instalar Node.js no computador para fazer esse upload. O ZIP contém index.html, config.js, _worker.js e _routes.json na raiz. O backend fica no _worker.js; ele já vem compilado e atende as rotas da aplicação.

2. Defina o login do robô

No projeto Pages, abra Settings > Variables and Secrets > Add, no ambiente Production. Adicione:

Nome exatoTipoValor
PANEL_USERNAMETextoUsuário que você escolher. Sugestão: admin.
PANEL_PASSWORDSecret, opção EncryptSua senha, com pelo menos 8 caracteres. Não há senha pronta no pacote.
SESSION_SECRETSecret, opção EncryptValor aleatório de pelo menos 32 caracteres. Pode ser gerado no botão abaixo.
ROBOT_LIVE_ENABLEDTextofalse nesta fase.

Depois de salvar as variáveis, faça um novo deployment com o mesmo ZIP. Abra a URL do projeto e entre com o usuário e a senha definidos. Sem o banco conectado, o painel entra em simulação, com dados fictícios e sem enviar mensagens.

Gerar os dois segredos técnicos

Este botão funciona localmente, usando o navegador. Copie os valores para os secrets correspondentes. Guarde-os no seu gerenciador de senhas; os valores abaixo não são salvos ao fechar este arquivo.

3. Conecte o banco exclusivo e a Kenlo

  1. Crie o novo projeto Supabase dedicado a este robô.
  2. No SQL Editor desse novo projeto, execute 2-BANCO-EXCLUSIVO.sql uma única vez. Depois execute 6-ATUALIZAR-PENDENCIAS.sql, 7-ATUALIZAR-TIMER-V2.sql, 8-OTIMIZAR-CONSULTAS-KENLO.sql e 9-CONTROLE-DA-FILA.sql. Use o banco novo, pois a instalação não é uma migração dos seus projetos existentes.
  3. No mesmo ambiente Production do Cloudflare, adicione as variáveis abaixo e faça novo deployment.
Nome exatoTipoValor
SUPABASE_URLTextoURL HTTPS do novo projeto Supabase.
SUPABASE_SECRET_KEYSecretSecret key do novo projeto. Aceita também a chave service_role legada.
KENLO_API_KEYSecretValor do acesso X-API-Key da Kenlo.
KENLO_USER_INFOSecretValor completo de x-user-info da integração Kenlo.
KENLO_COMMERCIAL_NEIGHBORHOOD_FIELDTextoCampo do bairro comercial confirmado no retorno real da API.
EXECUTOR_TOKENSecretSegundo valor do gerador acima. Será usado para vincular o PC.
ROBOT_SENDER_PHONETextoNúmero dedicado, formato 55 + DDD + celular, somente dígitos.
ROBOT_TEST_RECIPIENTTextoOutro número seu para receber a mensagem única de teste.

O mapeamento da Kenlo ainda precisa ser validado com uma resposta real da API, especialmente o bairro comercial e o contato principal. A aplicação interrompe a preparação se os dados essenciais não corresponderem ao formato esperado.

As chaves ficam no backend. Não edite config.js para inserir credenciais. Nesse pacote, frontend e backend usam o mesmo domínio; não é necessário configurar CORS nem informar um endereço separado de API.

4. Instale o executor no Windows

  1. Instale Node.js 22 ou superior no PC e extraia 3-EXECUTOR-WINDOWS.zip em uma pasta.
  2. Abra 1-Instalar.cmd e aguarde a instalação das dependências e do navegador.
  3. Abra 2-Configurar.cmd. Informe a URL HTTPS do seu Pages e o mesmo EXECUTOR_TOKEN cadastrado no Cloudflare. Comece pelo modo de conexão, sem envio de campanha.
  4. Abra 3-Iniciar-Robo.cmd. O navegador ficará visível. Vincule a conta WhatsApp dedicada pelo QR Code, disponível também na tela Conexões do painel.
  5. Para o teste, feche o executor normal e abra 4-Testar-WhatsApp.cmd. Ele envia uma única mensagem ao número próprio configurado e não usa a fila de imóveis. Confira o envio no celular da conta remetente e no destinatário.

5. Faça o primeiro lote acompanhado

Depois de validar o banco, os retornos da Kenlo, a mensagem de teste e o número remetente, altere ROBOT_LIVE_ENABLED para true no Cloudflare e faça um novo deployment. Configure o executor para o modo de campanha, reabra-o e deixe-o rodando.

No painel, peça a atualização da Kenlo, revise os imóveis e execute primeiro um lote pequeno. O comando Executar 10 da fila reserva dez imóveis, processa somente esse lote e para. Pausar, retomar e parar ficam disponíveis na mesma tela.

O horário padrão de envio é das 08:00 às 18:00, horário de São Paulo. Para ajustar, configure ROBOT_START_HOUR e ROBOT_END_HOUR no formato HH:MM.

Referências já enviadas ficam registradas. Quando um envio fica incerto, o robô aguarda sua conferência no WhatsApp antes de continuar. As mensagens enviadas usam a conta vinculada e seguem a sincronização normal do WhatsApp com o celular.

O que já foi verificado: compilação, login próprio, proteção das APIs, regras da mensagem, controle de lotes e funções do banco em testes locais. O upload na sua conta Cloudflare e as integrações reais com Supabase, Kenlo e WhatsApp ainda dependem da configuração dos seus acessos.

Se algo não abrir