Docs / Fluxos

Fluxos de integração

Padrões recomendados para encadear validadores em conversas reais.

Fluxo 1 — Coleta de dados cadastrais

Padrão para chatbots de cadastro: nome → CPF → telefone → email.

1. POST /v1/extract/name
   → obtained: true  → salvar, seguir para CPF
   → obtained: false → usar suggestion_to_agent, perguntar de novo

2. POST /v1/extract/cpf
   → obtained: true, certain: true  → salvar, seguir para telefone
   → obtained: true, certain: false → confirmar com usuário
   → obtained: false → usar suggestion_to_agent

3. POST /v1/extract/phone
   → obtained: true → salvar, seguir para email
   → obtained: false → suggestion_to_agent

4. POST /v1/extract/email
   → obtained: true → cadastro completo ✓
   → obtained: false → suggestion_to_agent

Custo total por cadastro: 12 créditos (4 × 3 cr.)

Fluxo 2 — Negociação de parcelas

Resolve o "bug das 48 parcelas" usando validate_reply para interpretar contrapropostas.

1. Agente oferece: "Posso parcelar em 20x de R$100. Topa?"

2. POST /v1/extract/reply
   { agent_message: "...", user_reply: "Bora em 48?" }

   → reply_type: "counter_proposal"
     → extracted_value: "48", value_type: "quantity"
     → agente avalia se pode oferecer 48x

   → reply_type: "confirmation"
     → prosseguir com fechamento

   → reply_type: "rejection"
     → oferecer alternativa

   → reply_type: "handoff"
     → POST /v1/extract/handoff para confirmar urgência
     → transferir para humano

   → reply_type: "cancel"
     → POST /v1/extract/cancel-intent para classificar
     → acionar fluxo de retenção

Custo: 5 créditos por análise de resposta

Fluxo 3 — n8n / Make / Zapier

Use um nó HTTP Request apontando para o endpoint desejado.

# n8n — nó "HTTP Request"
Method:  POST
URL:     https://api.naluai.dev/v1/extract/cpf
Headers:
  Authorization: Bearer {{ $env.NALU_API_KEY }}
  Content-Type:  application/json
Body (JSON):
{
  "agent_input": "{{ $json.agent_question }}",
  "user_input":  "{{ $json.user_message }}",
  "language":    "pt-BR"
}

# Próximo nó: IF
# Condição: {{ $json.obtained }} === true
#   → ramo OK: salvar extracted_value
#   → ramo NOK: enviar suggestion_to_agent ao usuário

Fluxo 4 — Padrão de re-pergunta

Como usar suggestion_to_agent corretamente.

MAX_RETRIES = 3
retries = 0

loop:
  response = POST /v1/extract/{validator}
             { agent_input, user_input: coleta_atual, agent_context }

  if response.obtained:
    → usar extracted_value, sair do loop

  retries++
  if retries >= MAX_RETRIES:
    → escalar para humano ou abandonar coleta

  # Usar sugestão do NaLU como próxima mensagem do agente
  proxima_mensagem = response.suggestion_to_agent
  coleta_atual = aguardar_resposta_usuario(proxima_mensagem)
Boas práticas
  • • Sempre envie agent_context — melhora muito as sugestões contextuais
  • • Limite 3 tentativas por campo antes de escalar para humano
  • • Use certain: false para pedir confirmação, não para bloquear o fluxo
  • • validate_reply pode retornar handoff ou cancel — sempre trate esses casos