fix(n8n): so processa mensagens quando o ticket esta no fluxo de Orcamento
O Webhook do Canal dispara pra toda mensagem do numero, entao o bot estava respondendo (pedindo exames) pra qualquer coisa -- CPF, agendamento, resultado de exame etc. Filtra por ticket.stepChatFlow, so seguindo quando o ticket esta parado no passo Menu Orcamento ou Menu Orcamento 2; qualquer outra coisa e ignorada sem resposta. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -357,6 +357,29 @@ ApiID e token dedicados a este projeto. Correção aplicada:
|
||||
- Isso mantém este projeto completamente independente do de agendamento —
|
||||
nenhum node ou credencial é compartilhado entre os dois.
|
||||
|
||||
### Descoberta 7: filtro por fluxo/fila (o bot respondia a qualquer mensagem)
|
||||
|
||||
Como o "Webhook do Canal" dispara pra **toda mensagem do número** (não só
|
||||
pra quem está no menu de Orçamento), o bot estava respondendo pra qualquer
|
||||
coisa — cliente mandando foto do CPF, pedindo agendamento, etc. — sempre
|
||||
pedindo exames. Isso não reflete o atendimento real: o cliente manda
|
||||
mensagem, recebe o menu de filas, escolhe "Orçamento", e só a partir daí a
|
||||
automação deve agir.
|
||||
|
||||
Correção: o payload do webhook traz `ticket.stepChatFlow`, identificando em
|
||||
qual passo do ChatFlow o ticket está parado. Os passos `Menu Orçamento` e
|
||||
`Menu Orçamento 2` (os únicos dois pontos do ChatFlow que levam a essa
|
||||
automação) têm ids fixos: `node-1787312722889` e `node-1787312980617`.
|
||||
Adicionado o node **"Está no fluxo de Orçamento?"**, logo após extrair os
|
||||
campos: só segue adiante (pro resto do pipeline) se `stepChatFlow` for um
|
||||
desses dois; qualquer outra coisa cai num `NoOp` e é ignorada — sem
|
||||
resposta nenhuma, deixando pra fila/fluxo correspondente cuidar.
|
||||
|
||||
**Risco conhecido:** esse filtro depende dos ids de step atuais do
|
||||
ChatFlow. Se o `Menu Orçamento`/`Menu Orçamento 2` forem recriados (não só
|
||||
editados) no editor do Z-PRO, os ids mudam e o filtro precisa ser
|
||||
atualizado no node `Está no fluxo de Orçamento?`.
|
||||
|
||||
### Ainda em aberto
|
||||
|
||||
- Remover as interações antigas "Webhook Avançado"/"Mensagem" dos passos
|
||||
@@ -364,6 +387,9 @@ ApiID e token dedicados a este projeto. Correção aplicada:
|
||||
antigo, que não existe mais no n8n — não causam mais duplicidade, mas
|
||||
ficam como chamada morta até serem removidas).
|
||||
- Confirmar que o número de envio agora bate com o número que recebe.
|
||||
- Validar que o filtro por `stepChatFlow` realmente bloqueia mensagens fora
|
||||
do fluxo de Orçamento (CPF, agendamento, resultado de exame etc.) e não
|
||||
bloqueia as de dentro.
|
||||
- Trocar a tabela de exames de exemplo pela lista real, direto no `system
|
||||
message` do node `AI Agent - Orçamento`.
|
||||
|
||||
|
||||
@@ -66,6 +66,12 @@
|
||||
"name": "mediaToken",
|
||||
"type": "string",
|
||||
"value": "={{ ($json.body.ticket.whatsapp && $json.body.ticket.whatsapp.bmToken) || '' }}"
|
||||
},
|
||||
{
|
||||
"id": "campo-stepchatflow",
|
||||
"name": "stepChatFlow",
|
||||
"type": "string",
|
||||
"value": "={{ $json.body.ticket.stepChatFlow || '' }}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -80,6 +86,59 @@
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "if-esta-em-orcamento",
|
||||
"name": "Está no fluxo de Orçamento?",
|
||||
"type": "n8n-nodes-base.if",
|
||||
"typeVersion": 2.3,
|
||||
"position": [
|
||||
-240,
|
||||
0
|
||||
],
|
||||
"parameters": {
|
||||
"conditions": {
|
||||
"options": {
|
||||
"version": 2,
|
||||
"leftValue": "",
|
||||
"caseSensitive": true,
|
||||
"typeValidation": "strict"
|
||||
},
|
||||
"combinator": "or",
|
||||
"conditions": [
|
||||
{
|
||||
"id": "cond-step-menu-orcamento-1",
|
||||
"leftValue": "={{ $json.stepChatFlow }}",
|
||||
"rightValue": "node-1787312722889",
|
||||
"operator": {
|
||||
"type": "string",
|
||||
"operation": "equals"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cond-step-menu-orcamento-2",
|
||||
"leftValue": "={{ $json.stepChatFlow }}",
|
||||
"rightValue": "node-1787312980617",
|
||||
"operator": {
|
||||
"type": "string",
|
||||
"operation": "equals"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "noop-fora-orcamento",
|
||||
"name": "Não é fluxo de Orçamento - ignora",
|
||||
"type": "n8n-nodes-base.noOp",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
-240,
|
||||
200
|
||||
],
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"conditions": {
|
||||
@@ -357,7 +416,18 @@
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "É mensagem de imagem?",
|
||||
"node": "Está no fluxo de Orçamento?",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Montar corpo da resposta": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Enviar orçamento (Z-PRO)",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
@@ -375,11 +445,18 @@
|
||||
]
|
||||
]
|
||||
},
|
||||
"Montar corpo da resposta": {
|
||||
"Está no fluxo de Orçamento?": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Enviar orçamento (Z-PRO)",
|
||||
"node": "É mensagem de imagem?",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"node": "Não é fluxo de Orçamento - ignora",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user