Dashboard
Processos de monitoramento
Processos cadastrados na lista abaixo. O formulário técnico (SQL, templates, bloco) fica oculto até você abrir com Criar processo ou Editar em um processo.
Rascunhos (propostas da IA)
Itens criados pela IA ficam como rascunho até você aprovar. Use Testar para rodar o fluxo do bloco antes de aprovar, Editar para ajustar e Aprovar para ativar no bot.
Carregando…
Templates Meta (monitoramento)
Gerencie rascunhos de template Meta e reenvie para análise sem criar outro rascunho.
Carregando…
Ideias e implementações (IA)
Sugestões e implementações registradas pela IA. A documentação para a IA está em docs/ia/GUIA-SISTEMA-EBOT.md — a IA usa esse guia para saber como trabalhar no sistema e pode enviar ideias via POST /admin/ia/ideias.
Carregando…
Fluxo
Start (palavras-chave) → Menu → Opções (links) → Blocos em sequência. A primeira mensagem passa pelo Start antes do menu.
0. Start (palavras-chave)
Captura a primeira mensagem do usuário e redireciona conforme a regra. Use palavra-chave (contém, exato, começa com) ou Regex. Sem menu principal, o bot ainda processa palavras-chave e regex e chama o destino (bloco, menu, etc.). Ordem: a primeira regra que der match vale.
Nova regra
Quando não der nenhum match
Destino quando a mensagem do usuário não corresponder a nenhuma regra acima (ex.: menu principal, um bloco ou encerramento).
Vínculo por telefone
No primeiro contato, se não houver registro em bot_contato_vinculo, o bot cria um vínculo só com o número. Depois envia para o destino abaixo. O admin define pelos menus se quer cadastrar o contato (nome, CPF, etc.) ou não.
Sessão (retomada)
Se o usuário abandonar a conversa no meio de um bloco, após X minutos sem responder a sessão expira. Os dados (payload) são preservados. Quando ele mandar mensagem de novo, o bot envia a mensagem abaixo e retoma de onde parou. Use {bloco} na mensagem para o nome do bloco.
Desenvolvimento — menus de teste
Cadastre seu número WhatsApp para testar opções marcadas como somente desenvolvimento. Pacientes reais não veem essas opções.
1. Menus
Crie quantos menus precisar. Apenas um pode ser o principal (★). O envio no WhatsApp usa lista modelo (botão + itens) ou botões (até 3).
Criar novo menu
Lista: mensagem com botão que abre a lista de opções. Botões: até 3 opções como botões.
Como a mensagem será exibida no WhatsApp (lista ou botões).
Visualização
Opções
Escolha o menu acima
Bloco
Todos os blocos
Etapas
Selecione um bloco
Passos
Selecione uma etapa
Detalhes do passo
Texto, tipo de resposta e opções
Destinos
Verdadeiro / falso · próximo passo
Funções
Tabelas disponíveis para buscas e funções prontas (quase endpoints) reutilizáveis em blocos ou pelo bot.
Tabelas disponíveis
Cadastre tabelas do banco para usar em buscas ou ao criar funções.
JOINs são definidos na criação da função (Nova função), não aqui.
| ID | Tabela | Título | Ordem |
|---|
Editar instância ativa
Funções prontas
Funções completas com busca configurada. Use em blocos (em vez de montar busca manual) ou deixe o bot chamar automaticamente (ex: usuário manda só CPF).
| Chave | Título | Tabela | Trigger |
|---|
Modelos de dados
Conjuntos de campos reutilizáveis para confirmações e mensagens. Ex.: modelo "paciente" com nome, CPF, data de nascimento — uma vez definido, use em qualquer etapa de confirmação com modelo_chave: "paciente" e no texto use {payload._modelo_paciente}.
Modelos
Campos para listas WhatsApp
Mapeamento de campos ao exibir resultado de função em lista interativa. Define qual campo usar para id, título, descrição. Se a função não estiver aqui, o sistema usa fallback padrão. Execute scripts/fluxo-lista-campos.sql se a tabela não existir.
Novo / Editar mapeamento
Título alternativos: vírgula separada. Se o campo principal estiver vazio, tenta o próximo. Ex: nomepaciente,nome,name
Mapeamentos cadastrados
Carregando…
Contatos
Defina a fonte (query, endpoint ou bloco). Em baixo, as variáveis do sistema ligam a resposta ao nome na lista de Atendimento e Fila.
1. Fonte de dados
Ordem: identificações do bot e sessão → fonte principal abaixo.
2. Variáveis do sistema
Alimentam display_name na API — nome em Atendimento e Fila.
| Variável | Uso | Campo |
|---|---|---|
display_name | Nome na lista | |
phone | Match WhatsApp | |
busca_paciente_raw | Payload do bot | |
…nome | Subcampos sessão |
3. Testar
Filas de atendimento
Departamentos do fluxo (fila_atendente) e etiquetas na lista de conversas. id_externo é opcional (integração).
Destino fila_atendente com id da fila ou {"fila_chave":"sua_chave"}.
Nova fila
Config — horário das filas
Fora da carga horária o paciente entra na fila (próximo plantão) e recebe a mensagem configurada abaixo, em vez do texto padrão de encaminhamento.
Dias da semana (0=domingo … 6=sábado)
Horário por fila (opcional)
Marque horário próprio para substituir o horário global. Mensagem vazia usa a global.
Atendentes
Lista todos os usuários ativos do e-prontu da sua unidade. Vincule quem atende no WhatsApp (mesmo e-mail do login). A fila define o que aparece em Aguardando / Atendimento.
Fila (aguardando)
Contatos aguardando atendente. Nomes aparecem se a identificação estiver ativa em Pacientes.
Tickets
Tickets do e-bot (Meta direto). Status: aguardando, atendendo, resolvido.
Carregando…
Pré-agendamentos
| Data | Paciente | CPF | Especialidade | Médico | Data/ Hora | Status |
|---|
Agendamentos
Consultas da agenda clínica (e-prontu). Use os filtros para refinar por período, status e unidade.
| Protocolo | Data | Hora | Paciente | Procedimento | Profissional | Unidade | Status | |
|---|---|---|---|---|---|---|---|---|
| Carregando… | ||||||||
Agendamentos confirmados
Consultas com status V ou confirmação registrada via WhatsApp.
| Protocolo | Consulta | Paciente | Profissional | Unidade | Confirmado em | Via WhatsApp |
|---|---|---|---|---|---|---|
| Carregando… | ||||||
Filtros da agenda
Preferências padrão ao abrir Agendamentos e Confirmados. Salvas no e-bot (não alteram o e-prontu).
Cron / fila campanhas (Flutter)
O app Flutter enfileira em bioma.campanha_bot_*; o e-bot chama periodicamente o
campanhaBotDisparo/processarFila no PHP até zerar pendentes. PM2 mantém este processo ativo.
Logs runtime (Node)
Terminal em tempo real do processo e-bot (equivalente ao cmd local). Atualização automática via stream;
últimas ~1000 linhas em memória (reinício do serviço zera o buffer).
Disparos automáticos
Fluxo avançado: 1) criar listas → 2) criar eventos → 3) configurar automações.
1) Listas de disparo
2) Eventos (o que será enviado)
3) Automação (lista + evento + trigger)
Disparos cadastrados
Serviços automáticos
Cada card é um processo montado pela TI (fonte SQL + templates). Na pré-visualização, filtre a tabela,
crie sub-serviços (manual ou automático) e ative/pause cada um na lista abaixo da SQL gerada.
Ao criar um sub-serviço, templates e parâmetros do formulário são congelados naquele momento — alterar o processo pai não muda os sub-serviços já criados.
Placeholders {{…}} na SQL geram campos de configuração automaticamente (só os que existem na query).
Atendimento
Ajuda e alertas (som / notificação)
Lista de contatos que interagem com o eBot. Uma conversa por número (com ou sem 9º dígito). Som e notificação só disparam para a fila do seu cadastro (tipo User em Atendentes); Admin ouve todas. Não lidas: abrir a conversa não marca como lida — use "Marcar como lida" ou "Iniciar atendimento".
Escolha um contato na lista à esquerda.
Config API
Credenciais para integração com Meta (WhatsApp). Podem ser preenchidas aqui ou no arquivo .env. O valor salvo aqui tem prioridade.
Meta (WhatsApp Cloud API)
Dados obtidos no painel do app em developers.facebook.com → seu app → WhatsApp.
Onde: você inventa essa string. Use a mesma no Meta em WhatsApp → Configuração → Verificar token.
Onde: WhatsApp → Introdução (Gerar token de acesso) ou Configuração → Token permanente.
Onde: Configurações do app → Básico → Chave secreta do app.
Onde: WhatsApp → Introdução → Enviar e receber mensagens → número De → Identificação do número de telefone.
Onde: Business Manager → Contas do WhatsApp → ID da conta.
Meta da Prix (produção)
Conta WhatsApp da Prix (produção). Lista templates e variáveis no monitoramento com canal Prix. O envio continua pela API Prix.
Token com permissão de leitura nos templates da mesma WABA da Prix.
Phone number id do número de produção (mesmo da conexão Prix).
ID da WABA de produção, se a resolução automática falhar.
Integrações (hub)
Configure o e-bot como interlocutor central: recebe webhook da Meta, processa internamente e repassa para Prix e outros endpoints externos.
Interlocutor principal
X-Ebot-Hub-Forwarded: 1) não são reencaminhados novamente.
Integrações cadastradas
Logs da integração selecionada
Integração IA
Use um modelo (Llama/Ollama ou API compatível) para auxiliar o fluxo e interpretar o contexto das mensagens. A IA entra quando não houver match no menu ou conforme a opção abaixo. O sistema envia automaticamente a estrutura de menus (opções e destinos) para a IA; use os exemplos abaixo para “treinar” respostas comuns.
Ligar / Desligar IA
Com a IA desligada, ela não será usada na conversa nem na caixa "Solicitar à IA" abaixo.
Solicitar à IA
Digite o que você quer que a IA implemente. O sistema envia automaticamente o que a IA precisa (estrutura atual do bot, formato JSON aceito). A IA responde em JSON e o sistema aplica na hora (cria rascunhos). Você só vai em Rascunhos (IA) testar e aprovar.
Ex.: "Crie um menu para identificação e cadastro de paciente" → a IA gera menu, bloco e funções; tudo vira rascunho para você revisar. Para fluxos grandes, aumente Max tokens na Configuração abaixo.
Quando ativo, a IA vê as mensagens anteriores e você pode responder "sim", "crie o fluxo", etc. Use "Limpar conversa" para recomeçar.
Cada envio é um pedido independente. Se a IA perguntar algo, digite o pedido completo na próxima mensagem.
Histórico da IA
Rascunhos e ideias que a IA já criou ou registrou. Use os links para ir direto à seção de revisão.
Configuração
Ollama local: http://localhost:11434. API externa: URL completa do endpoint (ex.: https://api.openai.com/v1/chat/completions).
Instrução fixa que define o papel da IA (ex.: “Você auxilia o bot. Responda curto. Se identificar a opção do menu, termine com [OPCAO:valor].”).
Uma linha por exemplo: mensagem do usuário|opção. A IA usa esses exemplos para interpretar melhor. Ex.: quero agendar|1, qual meu exame|2.
Chat com IA
Converse com a IA para criar fluxos, menus, blocos, funções, ideias e regras de palavra-chave (Start). Abaixo de cada resposta, itens criados aparecem como chips clicáveis (abrem o JSON).
Config (afeta este chat)
Exportar fluxo atual (banco)
Fonte de verdade = PostgreSQL. Os arquivos FLUXO_*.json no Git podem estar desatualizados.
Use este export para backup e para ver exatamente o que o bot está rodando hoje (menus, blocos, etapas, passos, funções).
Importar / Aplicar JSON como rascunho
Cole aqui o JSON completo (ex.: FLUXO_BIOCLINICA_IA.json) e clique em aplicar. O sistema executará como se fosse a IA e criará tudo como rascunhos para você testar e aprovar.
Conversa
Interpretar (menu)
Quando o usuário digita algo que não bate com nenhuma opção do menu, a IA pode interpretar a intenção e mapear para uma opção. Configure aqui os toggles que afetam essa função.
Start (palavras-chave)
Regras aplicadas em qualquer estado: quando o usuário digitar a palavra-chave, o bot redireciona para o destino. A IA pode criar ou sugerir regras — use o Chat com IA e peça ex.: "Crie regra: palavra 'sair' → encerramento sair".
Logs 2.0 — Mapa de execução
Debugger visual do fluxo: cada etapa muda de cor conforme o motor passa por ela. Filtre por telefone, bloco e número da execução. Os Logs runtime e Logs WhatsApp (v1) continuam disponíveis no menu.
Logs
Histórico do WhatsApp: texto completo em bolhas (saída à direita, entrada à esquerda). Templates Meta mostram nome + parâmetros do corpo quando o JSON estiver no log.
| Data | Telefone | Direção | Mensagem |
|---|