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.
../sistema/conexao.php → config, usuarios, clientes, servicos, servicos_func, horarios_agd, agendamentos → /webhook/api-texto.php → ../ajax/confirmacao.php
Menuia create-message OU WordMensagens send-text, usando variáveis do chamador
Menuia agendada OU Enviame agendar/texto → callback em ../ajax/retorno.php
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:
webhook/menuia.php— validar JSON bruto, tipo do evento, instância e log.webhook/sessions/*.json— conferir se a conversa está sendo persistida.../sistema/conexao.php+ tabelas de agenda/cliente — validar leituras e gravações.webhook/api-texto.phpewebhook/confirmacao.php— revisar provedor e payload.../ajax/confirmacao.phpou../ajax/retorno.php— seguir o callback externo quando houver agendamento de mensagem.