fix(n8n): usa canal/API dedicados deste projeto para o envio (nao mais compartilhado)
O envio estava saindo pelo canal do bot de agendamento (sub-workflow
enviar_texto, projeto diferente) -- por isso recebia num numero e
respondia por outro. Cria credencial httpHeaderAuth propria ('ZPRO API
Token - Orcamento de Exames') e troca o envio para uma chamada HTTP direta
dentro deste workflow, isolada do projeto de agendamento.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -330,14 +330,42 @@ em vez de `image`. O workflow foi reconstruído em cima desse webhook:
|
||||
- O prompt do `AI Agent` voltou a aceitar/pedir foto normalmente, já que a
|
||||
imagem agora chega de verdade.
|
||||
|
||||
### Teste ponta-a-ponta validado
|
||||
|
||||
Com uma imagem real de teste, o fluxo completo funcionou: download
|
||||
autenticado da mídia (44.9 kB, jpg) → IA de visão leu a imagem e
|
||||
identificou 2 exames da tabela + 1 fora da tabela (avisando que precisa de
|
||||
confirmação) → resposta enviada com sucesso pelo Z-PRO. Texto puro também
|
||||
validado (cliente manda "oi" → IA pede pra digitar/mandar os exames).
|
||||
|
||||
### Descoberta 6: canal/API errados no envio (corrigido)
|
||||
|
||||
O envio estava reaproveitando o sub-workflow `enviar_texto`
|
||||
(`Y4ndG7GuIUrmVRxV`), que pertence a **outro projeto** (bot de agendamento)
|
||||
e usa um ApiID/canal diferente — por isso as respostas saíam por um número
|
||||
errado (recebendo num número, respondendo por outro). O usuário criou um
|
||||
ApiID e token dedicados a este projeto. Correção aplicada:
|
||||
|
||||
- Nova credencial `httpHeaderAuth` **"ZPRO API Token - Orçamento de
|
||||
Exames"** (nome deliberadamente diferente de "ZPRO API Token - Canal QR -
|
||||
MC AGENDAMENTO", pra não confundir entre projetos), header `Authorization:
|
||||
Bearer <token>`.
|
||||
- O envio deixou de chamar o sub-workflow compartilhado — agora é uma
|
||||
chamada HTTP direta (`POST`) dentro deste próprio workflow, isolada,
|
||||
usando a URL `https://apigchat.gtigrupo.com.br/v2/api/external/<ApiID
|
||||
deste projeto>/` e a credencial acima.
|
||||
- Isso mantém este projeto completamente independente do de agendamento —
|
||||
nenhum node ou credencial é compartilhado entre os dois.
|
||||
|
||||
### Ainda em aberto
|
||||
|
||||
- Confirmar, depois de remover os passos antigos do ChatFlow, que não há
|
||||
mais resposta duplicada.
|
||||
- Validar ponta a ponta com uma foto real de pedido de exames (a extração
|
||||
do `imagemUrl`/`mediaToken` foi validada com uma imagem de teste, mas o
|
||||
fluxo completo — download autenticado + IA de visão — ainda não foi
|
||||
testado de ponta a ponta após esta reconstrução).
|
||||
- Remover as interações antigas "Webhook Avançado"/"Mensagem" dos passos
|
||||
`Menu Orçamento`/`Menu Orçamento 2` no ChatFlow (apontavam pro endpoint
|
||||
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.
|
||||
- Trocar a tabela de exames de exemplo pela lista real, direto no `system
|
||||
message` do node `AI Agent - Orçamento`.
|
||||
|
||||
## Fora de escopo (por enquanto)
|
||||
|
||||
|
||||
@@ -246,72 +246,34 @@
|
||||
"name": "Simple Memory"
|
||||
},
|
||||
{
|
||||
"id": "enviar-orcamento-zpro",
|
||||
"id": "enviar-orcamento-zpro-http",
|
||||
"name": "Enviar orçamento (Z-PRO)",
|
||||
"type": "n8n-nodes-base.executeWorkflow",
|
||||
"typeVersion": 1.3,
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4.4,
|
||||
"position": [
|
||||
900,
|
||||
-128
|
||||
],
|
||||
"parameters": {
|
||||
"workflowId": {
|
||||
"__rl": true,
|
||||
"mode": "id",
|
||||
"value": "Y4ndG7GuIUrmVRxV",
|
||||
"cachedResultName": "MCP Server - Mensageria ZPRO - enviar_texto"
|
||||
},
|
||||
"workflowInputs": {
|
||||
"mappingMode": "defineBelow",
|
||||
"value": {
|
||||
"number": "={{ $json.number }}",
|
||||
"body": "={{ $json.body }}",
|
||||
"externalKey": "={{ $json.externalKey }}",
|
||||
"isClosed": "={{ $json.isClosed }}"
|
||||
},
|
||||
"matchingColumns": [],
|
||||
"schema": [
|
||||
{
|
||||
"id": "number",
|
||||
"displayName": "number",
|
||||
"required": false,
|
||||
"defaultMatch": false,
|
||||
"display": true,
|
||||
"canBeUsedToMatch": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "body",
|
||||
"displayName": "body",
|
||||
"required": false,
|
||||
"defaultMatch": false,
|
||||
"display": true,
|
||||
"canBeUsedToMatch": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "externalKey",
|
||||
"displayName": "externalKey",
|
||||
"required": false,
|
||||
"defaultMatch": false,
|
||||
"display": true,
|
||||
"canBeUsedToMatch": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "isClosed",
|
||||
"displayName": "isClosed",
|
||||
"required": false,
|
||||
"defaultMatch": false,
|
||||
"display": true,
|
||||
"canBeUsedToMatch": true,
|
||||
"type": "boolean"
|
||||
}
|
||||
],
|
||||
"attemptToConvertTypes": false,
|
||||
"convertFieldsToString": false
|
||||
"method": "POST",
|
||||
"url": "https://apigchat.gtigrupo.com.br/v2/api/external/fc30a773-0089-43b9-8b05-a5d92c48eb9b/",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendBody": true,
|
||||
"contentType": "json",
|
||||
"specifyBody": "json",
|
||||
"jsonBody": "={{ JSON.stringify({ body: $json.body, number: $json.number, externalKey: $json.externalKey, isClosed: $json.isClosed }) }}",
|
||||
"options": {
|
||||
"timeout": 15000
|
||||
}
|
||||
}
|
||||
},
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "6IxSBH9y4fXsIoyA",
|
||||
"name": "ZPRO API Token - Orçamento de Exames"
|
||||
}
|
||||
},
|
||||
"onError": "continueErrorOutput"
|
||||
}
|
||||
],
|
||||
"connections": {
|
||||
|
||||
Reference in New Issue
Block a user