nalu-XXXXXXXXXX.
O NaLU é uma API REST. No N8N, qualquer API REST é chamada com o nó HTTP Request. Você manda o que o usuário digitou, o NaLU devolve o dado extraído e limpo — ou uma sugestão de como perguntar de novo.
Exemplo com validação de CPF. O processo é idêntico para todos os outros validadores — só muda a URL.
No painel do N8N, clique no + para adicionar nó. Busque por "HTTP Request" e selecione.
Troque cpf pelo validador que precisar: cep, name, email, etc.
Em Authentication, selecione Header Auth e configure:
Selecione Body → JSON e use expressões N8N para mapear os dados:
{
"user_input": "{{ $json.message }}",
"agent_input": "Qual o seu CPF?",
"agent_context": "Agente de cadastro de clientes",
"language": "pt-BR"
}
$json.message é o campo que vem do nó anterior com a resposta do usuário.
O nome exato depende do seu trigger (Webhook, Typebot, etc.) — use o painel de expressões do N8N para localizar.
Conecte um nó IF na saída do HTTP Request:
Dado extraído. Use $json.extracted_value no próximo passo do fluxo.
Não encontrou. Envie $json.suggestion_to_agent como resposta ao usuário e aguarde nova tentativa.
Exemplo: coletar CPF em um chatbot de cobrança via WhatsApp.
[ Webhook — mensagem do WhatsApp ]
↓
[ HTTP Request → NaLU /extract/cpf ]
body: { user_input: mensagem do usuário }
↓
[ IF: obtained === true ]
↓ TRUE ↓ FALSE
[ Salvar CPF no BD ] [ Enviar suggestion_to_agent ]
[ Próxima etapa ] [ Aguardar nova resposta ]
[ (volta para o Webhook) ]
O validate_reply analisa a resposta do usuário
no contexto do que o agente disse. Útil para detectar contrapropostas, confirmações e handoffs.
{
"agent_message": "Posso parcelar em 20x de R$100. Topa?",
"user_reply": "{{ $json.message }}",
"agent_context": "Agente de negociação de parcelas",
"language": "pt-BR"
}
A resposta inclui o campo reply_type. Use um nó Switch (em vez de IF) para rotear:
[ Switch: $json.reply_type ] "confirmation" → prosseguir com fechamento "counter_proposal" → avaliar nova proposta ($json.extracted_value) "rejection" → oferecer alternativa "handoff" → transferir para atendente humano "cancel" → acionar fluxo de retenção "unclear" → pedir esclarecimento
Todos acessíveis como $json.nome_do_campo no nó seguinte:
| Campo | O que contém |
|---|---|
| obtained | true/false — se o dado foi extraído |
| extracted_value | O dado limpo e normalizado (ex: "111.444.777-35") |
| certain | false = pedir confirmação antes de salvar |
| confidence | low / medium / high |
| suggestion_to_agent | Frase pronta para enviar ao usuário quando obtained=false |
| reply_type | Só validate_reply: confirmation, counter_proposal, handoff, etc. |
extracted_value, o validate_cep retorna um objeto com logradouro, bairro, cidade e estado separados — útil para preencher formulários.POST https://api.naluai.dev/v1/extract/cpf POST https://api.naluai.dev/v1/extract/cep POST https://api.naluai.dev/v1/extract/cnpj POST https://api.naluai.dev/v1/extract/email POST https://api.naluai.dev/v1/extract/phone POST https://api.naluai.dev/v1/extract/name POST https://api.naluai.dev/v1/extract/yes-no POST https://api.naluai.dev/v1/extract/birthdate POST https://api.naluai.dev/v1/extract/handoff POST https://api.naluai.dev/v1/extract/cancel-intent POST https://api.naluai.dev/v1/extract/company-name POST https://api.naluai.dev/v1/extract/plate-br POST https://api.naluai.dev/v1/extract/reply ← usa agent_message + user_reply