Ir para o conteúdo principal

fluxos de n8n

AI-Corporate pode iniciar fluxos n8n via um webhook de produção. Isso é útil quando você quer iniciar um processo automatizado fora do AI-Corporate, por exemplo criar uma tarefa, atualizar um registro de CRM, iniciar um fluxo de relatório ou encaminhar dados de formulário para outro sistema.

Exemplo: artigo de notícias no site da empresa

Suponha que a organização tenha criado um fluxo n8n que publique um artigo de notícias no site WordPress da empresa. No AI-Corporate você insere apenas um breve texto, por exemplo alguns parágrafos sobre um caso de cliente, evento ou marco interno. Com esse texto você inicia o fluxo no n8n.

O fluxo do n8n pode, em seguida, por exemplo:

  1. Transformar o texto curto em um rascunho com uma node LLM e um prompt que combine com o tom da organização.
  2. Criar uma ilustração adequada com um segundo node LLM, por exemplo nas cores da marca e em um estilo ilustrativo reconhecível.
  3. Preparar ou publicar o texto e a imagem como uma postagem de blog no site WordPress.

É assim que AI-Corporate e n8n trabalham juntos: no AI-Corporate o usuário seleciona o fluxo de trabalho e preenche as informações necessárias. O n8n executa então as etapas automatizadas e garante que a notícia apareça de forma adequada no site.

O que faz esta integração?

Você inicia um fluxo de n8n a partir da visão geral do fluxo de trabalho. Apenas o webhook de produção, POST e Autenticação de cabeçalho são obrigatórios. Campos e feedbacks do n8n são opcionais e podem ser configurados independentemente.

  • Se o fluxo de trabalho não tiver campos, o webhook é acionado imediatamente.
  • Se o fluxo tiver campos, abre-se primeiro um formulário. O usuário preenche os campos e inicia o fluxo com o botão.
  • Os valores preenchidos são enviados como JSON em um POST para o webhook do n8n.
  • Sem feedbacks, o AI-Corporate apenas confirma que o fluxo foi iniciado e continua no n8n. A janela não mostra spinner e pode ser fechada imediatamente.
  • Se isso estiver ativado na configuração, o fluxo pode enviar de volta etapas intermediárias ou o final para o AI-Corporate.
  • Se a aprovação estiver ativada na configuração, o usuário pode fazer a escolha diretamente no AI-Corporate. O n8n continua então a partir da etapa aguardando.

Criar fluxo de n8n no AI-Corporate

Um administrador registra o fluxo de trabalho da seguinte maneira:

  1. Vá para Assistentes.
  2. Abra Fluxos de Trabalho.
  3. Escolha Novo fluxo de n8n.
  4. Preencha o nome do fluxo de trabalho e a URL de produção do n8n.
  5. Configure Autenticação de cabeçalho com um nome de cabeçalho e valor de cabeçalho secreto.
  6. Marque em Feedbacks de n8n apenas os itens que realmente foram construídos neste fluxo de n8n: progresso, aprovação e/ou o fim do fluxo.
  7. Adicione, se necessário, os campos que devem ser enviados no POST.
  8. Salve o fluxo de trabalho.

Todos os três opt-outs de feedback permanecem desativados por padrão. Se você adicionar callbacks ou uma etapa de aprovação no n8n depois, atualize também o registro no AI-Corporate. A caixa de diálogo saberá então se deve mostrar apenas uma confirmação de início ou esperar por sinais adicionais.

Campos

  • Campos são opcionais.
  • Cada campo tem um único nome de campo e um tipo.
  • Tipos de campo suportados são texto curto, texto longo, número, sim/não, data, uma opção e várias opções.
  • Em Uma opção e Várias opções adicione as opções disponíveis. Uma opção é exibida como uma lista de opções compacta; Várias opções mostra caixas de seleção. O valor escolhido ou os valores são enviados no corpo JSON.
  • Campos obrigatórios devem ser preenchidos antes que o fluxo possa ser iniciado.
  • O nome do campo torna-se a chave no corpo JSON enviado ao n8n.

Criar fluxo de trabalho compatível no n8n

  1. Crie no n8n um novo fluxo de trabalho.
  2. Adicione como primeiro node um Webhook.
  3. Dê exatamente o nome a este node: Start workflow. As expressões de exemplo abaixo usam esse nome.
  4. Defina HTTP Method como POST.
  5. Escolha Authentication: Header Auth e use o mesmo nome de cabeçalho e valor secreto usados no AI-Corporate.
  6. Defina Respond ou Response Mode como Immediately.
  7. Copie a Production URL para o campo n8n production-url no AI-Corporate. Não use a URL de teste com /webhook-test/.
  8. Ative o fluxo de trabalho.

Os dados recebidos ficam sob body; os dados de integração técnica ficam em body.integration. Não remova isso em uma node de Edit Fields, Set ou Code.

Exemplo do corpo JSON

Se você definir campos com os nomes prompt, klantnaam, doelgroepen e datum, o n8n receberá, por exemplo, este corpo JSON. O AI-Corporate adiciona automaticamente o objeto integration.

{
"prompt": "Faça um resumo curto da solicitação.",
"klantnaam": "Organização de Exemplo",
"doelgroepen": ["funcionários", "clientes"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "token-temporário-para esta execução"
}
}

O callback token pertence a uma única execução. Não o armazene em logs, configurações fixas ou outros sistemas.

Opcional: enviar progresso e conclusão

AI-Corporate pode apenas mostrar o que o n8n retornar. Use esses callbacks apenas se, na configuração, você habilitou Notificar progresso intermediário e/ou Notificar o fim do fluxo.

Configure cada node de callback da seguinte forma:

  1. Escolha Method: POST.

  2. Clique em URL em Expression e cole:

    {{ $('Start workflow').first().json.body.integration.callbackUrl }}
  3. Escolha Authentication: None.

  4. Ative Send Headers e adicione os seguintes headers.

  5. Ative Send Body e escolha Body Content Type: JSON e Specify Body: Using JSON.

Use estes headers:

Authorization: Bearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
Content-Type: application/json

Envie, por exemplo, esta mensagem quando uma etapa começar:

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "document-maken-gestart",
"type": "progress",
"executionId": "{{ $execution.id }}",
"step": {
"id": "document_maken",
"label": "Document maken"
},
"message": "O documento está sendo criado."
}
  • Use um eventId único para cada evento dentro da mesma execução.
  • Use um rótulo de passo claro em holandês; esse texto será exibido no app.
  • Se você ativou Notificar o fim do fluxo, envie sempre no fim type: "completed", type: "failed" ou type: "rejected".
  • Em completed, opcionalmente inclua um objeto output com o resultado.
  • Em failed envie uma mensagem de erro compreensível. A execução também deverá parar no app.

Opcional: solicitar aprovação no app

Use um nó n8n Wait com On Webhook Call quando o fluxo só puder continuar após uma escolha. Envie antes do Wait um callback com type: "approval_required":

Configure o nó Wait para Resume: On Webhook Call, HTTP Method: POST e Authentication: Header Auth. Selecione a mesma credencial de Header Auth que em Start workflow. Adicione depois do Wait um nó Switch e verifique {{ $json.body.decision }}.

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "controle-document",
"type": "approval_required",
"executionId": "{{ $execution.id }}",
"step": {
"id": "controle_document",
"label": "Document controleren"
},
"approval": {
"question": "A workflow pode continuar?",
"context": "Primeiro verifique o documento gerado.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Aprovar" },
{ "value": "reject", "label": "Rejeitar" }
]
}
}

O usuário verá as opções na janela de execução. Após uma escolha, a node Wait receberá entre outras coisas decision. Em seguida, use, por exemplo, um nó Switch para determinar o seguimento correto.

Um valor de escolha pode conter apenas letras, números, _ e -. O rótulo pode conter texto legível comum.

Configurar a URL de callback de produção

A URL de callback de produção para AI-Corporate é:

https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback

Não insira esta URL como texto fixo em cada node de callback. Escolha no campo de URL do nó de HTTP Request a opção Expression e use:

{{ $('Start workflow').first().json.body.integration.callbackUrl }}

O AI-Corporate fornecerá automaticamente a URL de produção correta a cada início. A URL fixa acima é usada apenas para testes, para verificar se a expressão aponta para o AI-Corporate e não para o AI-School ou AI-Public.

As chamadas triggerCustomN8nWorkflow, triggerN8nWorkflow e resumeN8nWorkflow são chamadas pela própria aplicação. Você não precisa configurá-las no n8n.

Tratamento de erros

Envie erros esperados com um callback do tipo failed. Para erros de nó inesperados, crie também um fluxo de Erro central:

  1. Crie um novo fluxo com um nó Error Trigger.

  2. Em seguida adicione um nó HTTP Request com Method: POST.

  3. Preencha a URL com esta URL de produção fixa:

    https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Escolha Authentication: None e adicione o cabeçalho n8n-handihow-name com o valor secreto padrão do administrador da plataforma.

  5. Escolha um corpo JSON e cole:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Ative o Fluxo de Erro.
  2. Abra as configurações do fluxo de trabalho comum e selecione este fluxo em Error Workflow.

Envie imediatamente após o Start workflow pelo menos um callback com executionId: "{{ $execution.id }}". Somente assim o AI-Corporate consegue vincular uma falha inesperada à execução correta.

Limitações importantes

  • Apenas gatilhos de webhook são suportados.
  • Apenas URLs de webhook de produção são suportadas.
  • URLs de webhook de teste com /webhook-test/ são rejeitadas.
  • Apenas POST é suportado.
  • Apenas autenticação de cabeçalho genérica é suportada.
  • O valor do cabeçalho é tratado como segredo pela aplicação.
  • Tokens de callback e URLs de resume são processados apenas no servidor e não estão disponíveis diretamente para usuários.
  • O tenant é determinado no servidor a partir do usuário logado, não a partir de um valor enviado pelo navegador.

Solução de problemas

  • 404 ou webhook não registrado: ative o fluxo no n8n e use a URL de produção.
  • Erro de autenticação: verifique se o nome do cabeçalho e o valor são exatamente iguais em ambos os sistemas.
  • Dados ausentes: verifique se os nomes dos campos na aplicação correspondem às chaves esperadas pelo n8n.
  • Sem requisição no n8n: verifique se o fluxo começa com um webhook trigger e usa POST.
  • A janela de execução permanece girando: se você ativou Notificar o fim do fluxo, verifique se o n8n envia um callback final completed, failed ou rejected. Se você não espera feedbacks, desative as três opções na configuração.
  • Progresso não visível: verifique se Notificar progresso intermediário está ativado na configuração, ou se o objeto integration é mantido e se cada callback possui um eventId único.
  • Botões de aprovação não funcionam: verifique o node Wait, resumeUrl, autenticação de cabeçalho e os caracteres permitidos em choices[].value.
WhatsApp