workflows n8n
O AI-Public pode iniciar workflows n8n por meio de um webhook de produção. Isso é útil quando você quer iniciar um processo automatizado fora do AI-Public, por exemplo, criar uma tarefa, atualizar um registro de CRM, iniciar um fluxo de relatórios ou encaminhar dados de formulário para outro sistema.
Exemplo: artigo de notícias no site da organização
Suponha que a organização tenha criado um workflow n8n que publica um artigo de notícias no site WordPress. No AI-Public, você então preenche apenas um pequeno trecho de texto, por exemplo, algumas frases sobre uma reunião, projeto ou anúncio público. Com esse texto, você inicia o workflow no n8n.
O workflow n8n pode então, por exemplo:
- Transformar o texto curto em um rascunho bem escrito com um nó LLM e um prompt que se encaixe bem no tom da organização.
- Gerar uma ilustração adequada com um segundo nó LLM, por exemplo nas cores da identidade visual e em um estilo ilustrativo reconhecível.
- Preparar ou publicar o texto e a imagem como post de blog no site WordPress.
Assim, o AI-Public e o n8n trabalham juntos: no AI-Public, o usuário escolhe o workflow e preenche as informações necessárias. Em seguida, o n8n executa as etapas automatizadas e garante que o artigo de notícias chegue corretamente ao site.
O que esta integração faz?
Você inicia um workflow n8n a partir da visão geral de workflows. Apenas o webhook de produção, POST e Header Auth são obrigatórios. Campos e callbacks do n8n são opcionais e podem ser configurados de forma independente.
- Se o workflow não tiver campos, o webhook é chamado imediatamente.
- Se o workflow tiver campos, primeiro abre-se um formulário. O usuário preenche os campos e depois inicia o workflow com o botão.
- Os valores preenchidos são enviados como JSON em uma requisição POST para o webhook do n8n.
- Sem callbacks, o AI-Public apenas confirma que o workflow foi iniciado e continua no n8n. A janela não mostra spinner e pode ser fechada imediatamente.
- Se isso tiver sido ativado no registro, o workflow pode enviar etapas intermediárias ou o término para o AI-Public.
- Se a aprovação tiver sido ativada no registro, o usuário pode fazer uma escolha diretamente no AI-Public. O n8n então continua a partir da etapa de espera.
Criar um workflow n8n no AI-Public
Um administrador registra o workflow da seguinte forma:
- Vá para Assistentes.
- Abra a aba Assistentes de workflow.
- Na carta no topo, clique em Novo workflow e escolha workflow n8n.
- Preencha o nome do workflow e a URL de produção do n8n.
- Configure Header authentication com um nome de header e um valor secreto de header.
- Em Callbacks do n8n, marque apenas os componentes que realmente foram construídos neste workflow n8n: progresso, aprovação e/ou o fim do workflow.
- Adicione, se necessário, os campos que devem ser enviados na requisição POST.
- Salve o workflow.
As três opções de callback ficam desativadas por padrão. Se você adicionar callbacks ou uma etapa de aprovação no n8n mais tarde, atualize também o registro no AI-Public. Assim, a janela saberá se deve mostrar apenas uma confirmação de início ou continuar aguardando outros sinais.
Campos
- Os campos são opcionais.
- Cada campo tem um nome de campo e um tipo.
- Os tipos de campo suportados são texto curto, texto longo, número, sim/não, data, uma escolha e múltiplas escolhas.
- Em Uma escolha e Múltiplas escolhas, adicione as opções disponíveis. Uma escolha é exibida como uma lista suspensa compacta; Múltiplas escolhas exibe caixas de seleção. O valor ou os valores escolhidos são enviados no corpo JSON.
- Campos obrigatórios devem ser preenchidos antes que o workflow possa ser iniciado.
- O nome do campo se torna a chave no corpo JSON enviado ao n8n.
Criar um workflow compatível no n8n
- Crie um novo workflow no n8n.
- Adicione como primeiro node um Webhook.
- Dê a esse node exatamente o nome Start workflow. As expressões de exemplo abaixo usam esse nome.
- Defina HTTP Method como POST.
- Escolha Authentication: Header Auth e use o mesmo nome de header e valor secreto que no AI-Public.
- Defina Respond ou Response Mode como Immediately.
- Copie a Production URL para o campo n8n productie-url no AI-Public. Não use a test-url com
/webhook-test/. - Ative o workflow.
Os dados recebidos ficam em body; os dados técnicos da integração ficam em body.integration. Não os remova em um node 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-Public adiciona automaticamente o objeto integration.
{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["inwoners", "medewerkers"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}
O token de callback pertence a uma única execução. Não o armazene em logs, configuração fixa ou outros sistemas.
Opcional: enviar progresso e conclusão
O AI-Public só pode mostrar o que o n8n informar. Use esses callbacks apenas se, no registro, você tiver ativado Reportar progresso intermediário e/ou Reportar o fim do workflow.
Configure cada node de callback da seguinte forma:
-
Escolha Method: POST.
-
Clique em URL e selecione Expression, depois cole:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Escolha Authentication: None.
-
Ative Send Headers e adicione os headers abaixo.
-
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
Por exemplo, envie 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": "Het document wordt gemaakt."
}
- Use um
eventIdúnico para cada evento dentro da mesma execução. - Use um
step.labelclaro em holandês; esse texto é exibido no app. - Se você ativou Reportar o fim do workflow, envie sempre no final
type: "completed",type: "failed"outype: "rejected". - Em
completed, você pode adicionar um objetooutputcom o resultado. - Em
failed, envie também uma mensagem de erro compreensível. A execução então também será interrompida no app.
Opcional: solicitar aprovação no app
Use um node Wait do n8n com On Webhook Call quando o workflow só puder continuar após uma escolha. Antes do node Wait, envie um callback com type: "approval_required":
Configure o node Wait com Resume: On Webhook Call, HTTP Method: POST e Authentication: Header Auth. Selecione a mesma credencial Header Auth usada em Start workflow. Depois do node Wait, adicione um node 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": "Mag de workflow doorgaan?",
"context": "Controleer eerst het gegenereerde document.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Goedkeuren" },
{ "value": "reject", "label": "Afwijzen" }
]
}
}
O usuário verá as escolhas na janela de execução. Após uma escolha, o node Wait recebe, entre outros, decision. Depois disso, use por exemplo um node Switch para determinar o próximo passo correto.
Um valor de escolha pode conter apenas letras, números, _ e -. O rótulo pode conter texto legível normal.
Definir a URL de callback de produção
A URL de callback de produção para o AI-Public é:
https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback
Não cole esta URL como texto fixo em cada node de callback. No campo URL do node HTTP Request, escolha Expression e use:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
Assim, o AI-Public fornece automaticamente a URL de produção correta a cada início. A URL fixa acima é usada para verificar, durante os testes, se a expressão aponta para o AI-Public e não para o AI-School ou AI-Corporate.
As callables triggerCustomN8nWorkflow, triggerN8nWorkflow e resumeN8nWorkflow são chamadas pelo próprio app. Você não precisa configurar essas URLs no n8n.
Tratar erros
Envie erros esperados com um callback do tipo failed. Para erros inesperados de nodes, crie também um Error Workflow central:
-
Crie um novo workflow com um node Error Trigger.
-
Depois, adicione um node HTTP Request com Method: POST.
-
Em URL, insira esta URL fixa de produção:
https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowExecutionFailed -
Escolha Authentication: None e adicione o header
n8n-handihow-namecom o valor secreto padrão do administrador da plataforma. -
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 }}"
}
- Ative o Error Workflow.
- Abra as configurações do workflow normal e selecione este em Error Workflow.
Logo após Start workflow, envie pelo menos um callback com executionId: "{{ $execution.id }}". Só assim o AI-Public pode associar um erro inesperado à execução correta.
Limitações importantes
- Apenas triggers de webhook são suportados.
- Apenas URLs de webhook de produção são suportadas.
- URLs de teste com
/webhook-test/são recusadas. - Apenas POST é suportado.
- Apenas autenticação genérica por header é suportada.
- O valor do header é tratado como segredo na aplicação.
- Tokens de callback e URLs de retomada são processados apenas no lado do servidor e não ficam diretamente disponíveis para usuários.
- O tenant é determinado no lado do servidor com base no usuário autenticado, não a partir de um valor enviado pelo navegador.
Solução de problemas
- 404 ou webhook não registrado: ative o workflow no n8n e use a URL de produção.
- Erro de autenticação: verifique se o nome e o valor do header são exatamente iguais nos dois sistemas.
- Dados ausentes: verifique se os nomes dos campos na aplicação correspondem às chaves que o n8n espera.
- Nenhuma requisição no n8n: verifique se o workflow começa com um trigger de webhook e usa POST.
- A janela de execução continua carregando: se você ativou Reportar o fim do workflow, verifique se o n8n envia um último callback
completed,failedourejected. Se você não espera callbacks, desative todas as três opções no registro. - Nenhum progresso visível: verifique se Reportar progresso intermediário está ativado no registro, se o objeto
integrationfoi preservado e se cada callback tem umeventIdúnico. - Os botões de aprovação não funcionam: verifique o node Wait,
resumeUrl, a autenticação por header e os caracteres permitidos emchoices[].value.