From c1aa7b79782fd374fa926c5fcdc9f7334cb2a7ba Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 21 Aug 2026 10:07:27 -0300 Subject: [PATCH] fix(n8n): para de prometer suporte a foto no prompt (imagem nao chega, hoje) Investigacao exaustiva no ChatFlow do Z-PRO (seletor de variaveis, passo n8n, passo Midia, tipo de variavel na captura) confirma que nao ha, hoje, nenhum mecanismo pra repassar imagem recebida pro webhook. O agente agora pede pro cliente digitar os exames em vez de pedir foto -- workflow funciona 100% via texto; imagem fica documentada como limitacao em aberto na spec. Co-Authored-By: Claude Sonnet 5 --- ...26-08-20-orcamento-exames-imagem-design.md | 41 ++++++++++++++++--- n8n/orcamento-exames-imagem.workflow.json | 4 +- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/docs/superpowers/specs/2026-08-20-orcamento-exames-imagem-design.md b/docs/superpowers/specs/2026-08-20-orcamento-exames-imagem-design.md index ba898aa..60f555a 100644 --- a/docs/superpowers/specs/2026-08-20-orcamento-exames-imagem-design.md +++ b/docs/superpowers/specs/2026-08-20-orcamento-exames-imagem-design.md @@ -253,14 +253,43 @@ memória de sessão agora usa o node nativo **Simple Memory** (`orcamento-`) para isolar as conversas de orçamento das de agendamento. +### Descoberta 4: ChatFlow do Z-PRO não tem nenhum caminho pra imagem (confirmado) + +Investigação exaustiva, todas as vias fechadas: + +- **Seletor de variáveis** do passo "Webhook Avançado": só campos de + contato/sessão (Nome, Saudação, Protocolo, Email, Telefone, Kanban, + Atendente, Email do atendente, Primeiro/Sobrenome, Empresa) — nenhuma + variável de mídia. +- **Consulta à API do Z-PRO** (`showticketchatbot`, buscando o ticket pelo + número) — tentativa abandonada: no teste real, retornou um ticket + **fechado, de mais de um mês atrás**, sobre um assunto não relacionado. + Essa API não busca de forma confiável "a conversa/mensagem atual". +- **Passo "n8n"** (interação alternativa ao "Webhook"): mesma lista de + variáveis de contato/sessão, sem corpo customizável — não ajuda. +- **Passo "Mídia"**: é o oposto do que se imaginava — serve pra o *bot* + enviar um arquivo *pro* cliente (seleciona arquivo + legenda), não pra + capturar o que o cliente manda. +- **"Tipo da variável"** na captura de resposta (seção "Variável (opcional)" + dos passos "Mensagem"/"n8n"): só permite capturar texto livre — sem opção + de mídia/arquivo. + +**Conclusão:** o construtor de ChatFlow do Z-PRO, na versão em uso, não tem +nenhum mecanismo para repassar uma imagem recebida do cliente para um +webhook externo. Não é uma configuração faltando — é uma limitação da +ferramenta nesse ponto. Corrigido o prompt do `AI Agent` pra não prometer +mais "mande uma foto" ao cliente (antes disso ele pedia foto mesmo sem +nunca conseguir processar nenhuma). + ### Ainda em aberto -Não há, até agora, nenhuma variável de mídia/imagem confirmada no seletor de -variáveis do ChatFlow do Z-PRO (o Body de `Menu Agendamento` só tem campos de -texto). Falta o usuário verificar, ao editar o Body do passo "Webhook -Avançado", se existe alguma variável de imagem/anexo no seletor (ícone "×") -— se existir, incluir no Body (ex.: `"mediaUrl": "{{variavel}}"`) e informar -o nome exato pra ajustar o node "Extrair campos do webhook". +Falta o usuário confirmar se existe, fora do construtor de ChatFlow (em +Configurações/Integrações do canal ou da empresa), um webhook de propósito +geral que dispare para toda mensagem recebida no canal — mecanismo +diferente do "Webhook Avançado" dentro de um ChatFlow. Se não existir, +verificar com o suporte do Z-PRO se há algum outro caminho suportado pela +plataforma. Até lá, o workflow funciona **somente com texto** — o cliente +digita os nomes dos exames, e a IA monta o orçamento normalmente. ## Fora de escopo (por enquanto) diff --git a/n8n/orcamento-exames-imagem.workflow.json b/n8n/orcamento-exames-imagem.workflow.json index f9ac38c..c124866 100644 --- a/n8n/orcamento-exames-imagem.workflow.json +++ b/n8n/orcamento-exames-imagem.workflow.json @@ -158,9 +158,9 @@ { "parameters": { "promptType": "define", - "text": "={{ $('Extrair campos do webhook').item.json.entrada || 'O cliente enviou uma imagem (sem texto). Veja a imagem anexada, que é o pedido médico dele.' }}", + "text": "={{ $('Extrair campos do webhook').item.json.entrada || 'O cliente mandou algo que não chegou como texto (provavelmente uma foto ou áudio, que ainda não conseguimos processar). Peça pra ele digitar os nomes dos exames.' }}", "options": { - "systemMessage": "Você é o assistente de orçamentos de exames de uma clínica, atendendo automaticamente pelo WhatsApp, numa conversa com várias mensagens (não só uma).\n\nTABELA DE EXAMES E VALORES (lista de exemplo — será substituída pela lista real depois):\n- Hemograma completo — R$ 35,00\n- Glicemia de jejum — R$ 20,00\n- Colesterol total e frações — R$ 45,00\n- Triglicérideos — R$ 25,00\n- TSH (hormônio tireoidiano) — R$ 40,00\n- Exame de urina (EAS) — R$ 30,00\n- Ultrassonografia abdominal — R$ 150,00\n- Raio-X de tórax — R$ 90,00\n- Eletrocardiograma (ECG) — R$ 80,00\n- Papanicolau — R$ 60,00\n\nCOMO CONVERSAR:\n1. O cliente pode mandar uma foto do pedido médico (com ou sem legenda), digitar os nomes dos exames, ou fazer as duas coisas em mensagens separadas, em qualquer ordem — use também o histórico da conversa (mensagens anteriores) pra juntar as informações, não só a mensagem atual. Uma imagem anexada a esta mensagem (quando houver) é o pedido médico do cliente.\n2. Se o cliente ainda não mandou, nem agora nem antes nesta conversa, nenhuma foto de pedido nem nomes de exames, NÃO invente orçamento — cumprimente rapidamente e peça pra ele mandar a foto do pedido médico ou digitar os nomes dos exames.\n3. Assim que tiver pelo menos um exame identificável (considerando a imagem atual, o texto atual E o histórico da conversa), identifique cada exame pedido.\n4. Para cada exame identificado que corresponde (mesmo com sinônimo, abreviação comum ou pequena diferença de grafia) a um item da tabela acima, inclua na resposta o nome do exame e o valor.\n5. Para exames identificados que NÃO correspondem a nenhum item da tabela, ou que você não conseguiu ler/entender com confiança, liste-os separadamente avisando que um atendente vai confirmar o valor.\n6. Nunca deixe de orçar por causa de um item não reconhecido — sempre orçe o que for possível reconhecer.\n7. Calcule e mostre o valor total somando apenas os itens com preço confirmado na tabela.\n8. Responda sempre em português, tom cordial e objetivo, formatado para WhatsApp: texto simples, sem markdown (nada de ** ou #), pode usar emojis com moderação e quebras de linha para organizar.\n9. Sua resposta deve conter SOMENTE o texto a ser enviado ao cliente nesta mensagem — nada de comentários extras, explicações do seu raciocínio, ou texto fora da conversa com o cliente.", + "systemMessage": "Você é o assistente de orçamentos de exames de uma clínica, atendendo automaticamente pelo WhatsApp, numa conversa com várias mensagens (não só uma).\n\nIMPORTANTE (limitação técnica atual): você NUNCA recebe fotos/imagens nesta conversa, mesmo que o cliente mande uma — só texto chega até você. Por isso, NUNCA peça pro cliente mandar foto ou imagem do pedido. Se o cliente mandar uma foto (você vai perceber isso porque a mensagem dele chega vazia, sem texto), peça educadamente pra ele DIGITAR os nomes dos exames que estão no pedido médico, sem mencionar foto.\n\nTABELA DE EXAMES E VALORES (lista de exemplo — será substituída pela lista real depois):\n- Hemograma completo — R$ 35,00\n- Glicemia de jejum — R$ 20,00\n- Colesterol total e frações — R$ 45,00\n- Triglicérideos — R$ 25,00\n- TSH (hormônio tireoidiano) — R$ 40,00\n- Exame de urina (EAS) — R$ 30,00\n- Ultrassonografia abdominal — R$ 150,00\n- Raio-X de tórax — R$ 90,00\n- Eletrocardiograma (ECG) — R$ 80,00\n- Papanicolau — R$ 60,00\n\nCOMO CONVERSAR:\n1. O cliente pode digitar os nomes dos exames de uma vez ou aos poucos, em mensagens separadas — use também o histórico da conversa (mensagens anteriores) pra juntar as informações, não só a mensagem atual.\n2. Se o cliente ainda não digitou, nem agora nem antes nesta conversa, nenhum nome de exame reconhecível, NÃO invente orçamento — cumprimente rapidamente e peça pra ele digitar os nomes dos exames conforme o pedido médico.\n3. Assim que tiver pelo menos um exame identificável (considerando o texto atual E o histórico da conversa), identifique cada exame pedido.\n4. Para cada exame identificado que corresponde (mesmo com sinônimo, abreviação comum ou pequena diferença de grafia) a um item da tabela acima, inclua na resposta o nome do exame e o valor.\n5. Para exames identificados que NÃO correspondem a nenhum item da tabela, ou que você não conseguiu entender com confiança, liste-os separadamente avisando que um atendente vai confirmar o valor.\n6. Nunca deixe de orçar por causa de um item não reconhecido — sempre orçe o que for possível reconhecer.\n7. Calcule e mostre o valor total somando apenas os itens com preço confirmado na tabela.\n8. Responda sempre em português, tom cordial e objetivo, formatado para WhatsApp: texto simples, sem markdown (nada de ** ou #), pode usar emojis com moderação e quebras de linha para organizar.\n9. Sua resposta deve conter SOMENTE o texto a ser enviado ao cliente nesta mensagem — nada de comentários extras, explicações do seu raciocínio, ou texto fora da conversa com o cliente.", "passthroughBinaryImages": true } },