feat(n8n): reconstroi o fluxo em cima do Webhook do Canal (resolve imagem)
O 'Webhook do Canal' do Z-PRO (fora do ChatFlow, opcao 'Mensagens recebidas') manda o payload completo da mensagem, incluindo msg.image.url para fotos -- resolve a limitacao que bloqueava imagem. Novo endpoint orcamento-exames-canal-zpro substitui o antigo orcamento-exames-zpro (removido). Download da imagem autenticado com Bearer usando o bmToken do proprio payload. Volta ao envio assincrono via sub-workflow enviar_texto, ja que esse webhook e uma notificacao (nao e capturado/reenviado pelo Z-PRO como no ChatFlow). Prompt volta a aceitar foto normalmente. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -281,15 +281,63 @@ 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).
|
||||
|
||||
### Descoberta 5: "Webhook do Canal" resolve a imagem (solução final)
|
||||
|
||||
O Z-PRO tem, nas configurações do canal, uma opção **"Webhook do Canal"**
|
||||
independente do ChatFlow: `Habilitar Webhook do Canal` + `URL de destino` +
|
||||
toggle `Mensagens recebidas` (dispara a cada mensagem recebida pelo canal,
|
||||
"em paralelo ao webhook geral do tenant"). Payload real capturado:
|
||||
|
||||
```json
|
||||
{
|
||||
"method": "message",
|
||||
"msg": {
|
||||
"from": "5575...",
|
||||
"id": "wamid....",
|
||||
"timestamp": "...",
|
||||
"type": "image",
|
||||
"image": { "mime_type": "image/jpeg", "id": "...", "url": "https://lookaside.fbsbx.com/whatsapp_business/attachments/?..." }
|
||||
},
|
||||
"ticket": {
|
||||
"protocol": "...", "id": 469774, "status": "pending",
|
||||
"contact": { "name": "...", "number": "..." },
|
||||
"whatsapp": { "bmToken": "EAA..." }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Pra mensagem de texto, `msg` vem como `{ "type": "text", "text": { "body": "..." } }`
|
||||
em vez de `image`. O workflow foi reconstruído em cima desse webhook:
|
||||
|
||||
- Novo endpoint: `orcamento-exames-canal-zpro` (path completamente separado
|
||||
do antigo `orcamento-exames-zpro`, que foi removido).
|
||||
- Campos extraídos: `sessionId` (`ticket.protocol`), `telefone` (`msg.from`),
|
||||
`nomeContato` (`ticket.contact.name`), `entrada` (`msg.text.body`),
|
||||
`imagemUrl` (`msg.image.url`), `tipoMidia` (`msg.type`), `mediaToken`
|
||||
(`ticket.whatsapp.bmToken`).
|
||||
- A URL da imagem é do WhatsApp/Meta (`lookaside.fbsbx.com`) e exige
|
||||
autenticação — o node "Baixar imagem" manda `Authorization: Bearer
|
||||
{{ mediaToken }}` usando o `bmToken` do próprio payload.
|
||||
- Como esse webhook é uma notificação assíncrona (não é capturado e
|
||||
reenviado pelo Z-PRO como no mecanismo do ChatFlow), o envio da resposta
|
||||
voltou a ser feito via API, reaproveitando o sub-workflow
|
||||
`enviar_texto` (mesma lógica da primeira versão do desenho).
|
||||
- **Importante:** esse webhook dispara em paralelo a qualquer coisa que o
|
||||
ChatFlow também dispare para a mesma mensagem. Por isso as interações
|
||||
"Webhook Avançado" e "Mensagem" dos passos `Menu Orçamento` / `Menu
|
||||
Orçamento 2` no ChatFlow precisam ser removidas (ação do usuário, fora do
|
||||
n8n) — senão o cliente recebe duas respostas pra cada mensagem.
|
||||
- O prompt do `AI Agent` voltou a aceitar/pedir foto normalmente, já que a
|
||||
imagem agora chega de verdade.
|
||||
|
||||
### Ainda em aberto
|
||||
|
||||
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.
|
||||
- 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).
|
||||
|
||||
## Fora de escopo (por enquanto)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user