Área externa do portal

Pasta /webhook do BarberBot

Esta documentação cobre a pasta real /webhook do projeto, usada para atendimento conversacional, envio de mensagens e persistência do estado do chatbot. O objetivo é deixar claro o que existe ali de fato, como o fluxo conversa com agenda/financeiro e onde a manutenção normalmente quebra.

Listener externo Mensageria Persistência híbrida
Arquivos PHP em /webhook 3
Subdiretórios operacionais 1
Arquivos JSON em sessions/ 63
Lacunas no recorte /webhook 0

Estrutura auditada

O recorte /webhook é pequeno em quantidade de arquivos, mas sensível porque mistura entrada externa, escrita em disco, agenda, cliente e agendamento de mensagens.

Entrada principal do chatbot

Ponto que recebe o corpo bruto do evento, interpreta a conversa e dirige o fluxo de agenda, cadastro e resposta automática.

webhook/menuia.php Listener principal de eventos
  • Lê o JSON bruto com file_get_contents("php://input"), registra debug em menuia_debug.txt e valida tipo/instância do evento.
  • Carrega ../sistema/conexao.php, consulta config/usuarios/clientes/servicos/servicos_func/horarios_agd/agendamentos e cria estado persistente em sessions/*.json.
  • Usa o próprio /webhook/api-texto.php para enviar resposta imediata e ../ajax/confirmacao.php para agendar mensagem de confirmação quando o agendamento é criado.

Adaptadores de envio

Arquivos que não funcionam como endpoint isolado; são includes auxiliares acionados por outro script já com variáveis em memória.

webhook/api-texto.php Envio síncrono de mensagem
  • Escolhe o provedor pelo valor de $api: Menuia (create-message) ou WordMensagens (send-text).
  • Depende das variáveis já montadas pelo chamador: $api, $mensagem, $token, $instancia e $telefone.
  • É usado pelo menu de atendimento e por fluxos que precisam disparar mensagem imediatamente.
webhook/confirmacao.php Agendamento de confirmação
  • Agenda a confirmação de um atendimento futuro usando Menuia ou Enviame, conforme o provedor ativo.
  • No ramo Enviame, envia o callback para ../ajax/retorno.php, ligando o /webhook a outra área externa do projeto.
  • Também depende de variáveis de contexto já definidas pelo chamador: $mensagem, $data_envio, $id_envio, $instancia, $token, $telefone etc.

Persistência operacional

Área de runtime usada para manter o contexto da conversa entre uma mensagem e outra.

webhook/sessions/*.json Estado por cliente + profissional
  • Os nomes são gerados por hash de cliente|profissional e guardam passo atual, dados escolhidos e carimbos de tempo.
  • Não são páginas nem endpoints; são artefatos operacionais e devem ser tratados como dados temporários do servidor.
  • Em manutenção, vale auditar limpeza, permissão de escrita e risco de crescimento descontrolado da pasta.

Relações externas mais importantes

O /webhook não deve ser analisado isoladamente; estes encadeamentos explicam a maior parte dos bugs reais.

menuia.php
../sistema/conexao.php → config, usuarios, clientes, servicos, servicos_func, horarios_agd, agendamentos → /webhook/api-texto.php → ../ajax/confirmacao.php
api-texto.php
Menuia create-message OU WordMensagens send-text, usando variáveis do chamador
confirmacao.php
Menuia agendada OU Enviame agendar/texto → callback em ../ajax/retorno.php
sessions/*.json
Persistência local do estado da conversa entre eventos consecutivos

Achados reais de manutenção

Achados que ajudam o próximo dev a não confundir o papel desta pasta.

  • O listener aceita eventos dos tipos Chat, Sistema e Me; os demais são ignorados cedo no fluxo.
  • O arquivo menuia.php faz logging local em menuia_debug.txt, o que ajuda depuração mas também aumenta o volume de arquivos de runtime.
  • Há criação/atualização de cliente e agendamento dentro do listener, então o /webhook não é só mensageria: ele também persiste regra de negócio.
  • A sessão do chatbot é armazenada fora do banco, em JSON local, o que muda a forma de backup, limpeza e troubleshooting.

Pontos críticos de manutenção

Estes itens explicam por que o chatbot pode parar “sem erro” no painel administrativo.

  • menuia.php desliga display_errors, então falhas podem aparecer só em menuia_debug.txt ou no comportamento da conversa.
  • api-texto.php e confirmacao.php não são autocontidos; executar esses arquivos isoladamente gera comportamento inconsistente porque eles esperam variáveis do chamador.
  • A pasta sessions/ precisa de permissão de escrita no servidor. Sem isso, o fluxo perde contexto e o chatbot aparenta “esquecer” a conversa.
  • O /webhook real é diferente de pagamentos/webhook.php. Misturar os dois conceitos na manutenção costuma gerar diagnóstico errado.
  • O listener conversa com áreas de agenda e financeiro; um bug visível no chat pode estar, na verdade, em clientes, serviços, horários ou ajax/confirmacao.php.

Como seguir o fluxo na prática

Ordem recomendada de leitura para depuração:

  1. webhook/menuia.php — validar JSON bruto, tipo do evento, instância e log.
  2. webhook/sessions/*.json — conferir se a conversa está sendo persistida.
  3. ../sistema/conexao.php + tabelas de agenda/cliente — validar leituras e gravações.
  4. webhook/api-texto.php e webhook/confirmacao.php — revisar provedor e payload.
  5. ../ajax/confirmacao.php ou ../ajax/retorno.php — seguir o callback externo quando houver agendamento de mensagem.
Abrir cobertura final de /webhook