Aller au contenu principal

workflows n8n

AI-Corporate peut lancer des workflows n8n via un webhook de production. C’est utile lorsque vous souhaitez démarrer un processus automatisé en dehors d’AI-Corporate, par exemple la création d’une tâche, la mise à jour d’un enregistrement CRM, le lancement d’un flux de reporting ou l’envoi de données de formulaire vers un autre système.

Exemple : article d’actualité sur le site web de l’entreprise​

Supposons que l’organisation ait créé un workflow n8n qui publie un article d’actualité sur le site WordPress de l’entreprise. Dans AI-Corporate, vous ne renseignez alors qu’un court texte, par exemple quelques phrases sur une étude de cas client, un événement ou une étape interne importante. Avec ce texte, vous démarrez le workflow dans n8n.

Le workflow n8n peut ensuite, par exemple :

  1. Transformer le court texte en un brouillon soigné avec un nœud LLM et un prompt adapté au ton de l’organisation.
  2. Faire créer une illustration appropriée avec un deuxième nœud LLM, par exemple aux couleurs de la marque et dans un style illustratif reconnaissable.
  3. Préparer ou publier le texte et l’image comme article de blog sur le site WordPress.

Ainsi, AI-Corporate et n8n travaillent ensemble : dans AI-Corporate, l’utilisateur choisit le workflow et renseigne les informations nécessaires. n8n exécute ensuite les étapes automatisées et veille à ce que l’article d’actualité arrive proprement sur le site.

Que fait cette intégration ?​

Vous démarrez un workflow n8n depuis l’aperçu des workflows. Seuls le webhook de production, POST et Header Auth sont obligatoires. Les champs et les retours depuis n8n sont facultatifs et peuvent être configurés indépendamment les uns des autres.

  • Si le workflow n’a pas de champs, le webhook est appelé immédiatement.
  • Si le workflow a des champs, un formulaire s’ouvre d’abord. L’utilisateur remplit les champs puis démarre le workflow avec le bouton.
  • Les valeurs saisies sont envoyées en JSON dans une requête POST vers le webhook n8n.
  • Sans retours, AI-Corporate confirme seulement que le workflow a été démarré et continue dans n8n. La fenêtre n’affiche pas de spinner et peut être fermée immédiatement.
  • Si cela a été activé lors de l’enregistrement, le workflow peut renvoyer des étapes intermédiaires ou la fin vers AI-Corporate.
  • Si une approbation a été activée lors de l’enregistrement, l’utilisateur peut faire un choix directement dans AI-Corporate. n8n reprend ensuite à partir de l’étape en attente.

Créer un workflow n8n dans AI-Corporate​

Un administrateur enregistre le workflow comme suit :

  1. Allez dans Assistenten.
  2. Ouvrez l’onglet Workflow assistenten.
  3. Dans la carte en haut, cliquez sur Nieuwe workflow et choisissez n8n workflow.
  4. Renseignez le nom du workflow et l’URL de production n8n.
  5. Configurez Header authentication avec un nom d’en-tête et une valeur secrète.
  6. Cochez sous Terugmeldingen uit n8n uniquement les éléments réellement construits dans ce workflow n8n : progression, approbation et/ou fin du workflow.
  7. Ajoutez éventuellement les champs à transmettre dans la requête POST.
  8. Enregistrez le workflow.

Les trois options de retour sont désactivées par défaut. Si vous ajoutez plus tard des callbacks ou une étape d’approbation dans n8n, mettez aussi à jour l’enregistrement dans AI-Corporate. La boîte de dialogue sait ainsi si elle doit seulement afficher une confirmation de démarrage ou continuer à attendre d’autres signaux.

Champs​

  • Les champs sont facultatifs.
  • Chaque champ a un nom de champ et un type.
  • Les types de champ pris en charge sont texte court, texte long, nombre, oui/non, date, un seul choix et plusieurs choix.
  • Pour Un seul choix et Plusieurs choix, ajoutez les options disponibles. Un seul choix s’affiche comme une liste de sélection compacte ; Plusieurs choix affiche des cases à cocher. La ou les valeurs choisies sont envoyées dans le corps JSON.
  • Les champs obligatoires doivent être remplis avant que le workflow puisse être démarré.
  • Le nom du champ devient la clé dans le corps JSON envoyé à n8n.

Créer un workflow compatible dans n8n​

  1. Créez un nouveau workflow dans n8n.
  2. Ajoutez d’abord un nœud Webhook.
  3. Donnez à ce nœud exactement le nom Start workflow. Les exemples d’expressions ci-dessous utilisent ce nom.
  4. Réglez HTTP Method sur POST.
  5. Choisissez Authentication: Header Auth et utilisez le même nom d’en-tête et la même valeur secrète que dans AI-Corporate.
  6. Réglez Respond ou Response Mode sur Immediately.
  7. Copiez l’URL de production dans le champ n8n productie-url dans AI-Corporate. N’utilisez pas l’URL de test avec /webhook-test/.
  8. Activez le workflow.

Les données reçues se trouvent sous body; les données techniques d’intégration se trouvent sous body.integration. Ne les supprimez pas dans un nœud Edit Fields, Set ou Code.

Exemple du corps JSON​

Si vous définissez des champs nommés prompt, klantnaam, doelgroepen et datum, n8n reçoit par exemple ce corps JSON. AI-Corporate ajoute automatiquement l’objet integration.

{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["medewerkers", "klanten"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}

Le token de callback appartient à une seule exécution. Ne le stockez pas dans des logs, une configuration fixe ou d’autres systèmes.

Optionnel : renvoyer la progression et la fin​

AI-Corporate peut seulement afficher ce que n8n renvoie. Utilisez ces callbacks uniquement si vous avez activé Tussentijdse voortgang melden et/ou Het einde van de workflow melden lors de l’enregistrement.

Configurez chaque nœud de callback comme suit :

  1. Choisissez Method: POST.

  2. Dans URL, cliquez sur Expression et collez :

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

  4. Activez Send Headers et ajoutez les en-têtes ci-dessous.

  5. Activez Send Body et choisissez Body Content Type: JSON et Specify Body: Using JSON.

Utilisez ces en-têtes :

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

Envoyez par exemple ce message lorsqu’une étape commence :

{
"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."
}
  • Utilisez un eventId unique pour chaque événement au sein de la même exécution.
  • Utilisez un step.label clair en néerlandais ; ce texte est affiché dans l’application.
  • Si vous avez activé Het einde van de workflow melden, envoyez toujours à la fin type: "completed", type: "failed" ou type: "rejected".
  • Ajoutez éventuellement un objet output avec le résultat lors de completed.
  • En cas de failed, envoyez un message d’erreur compréhensible. L’exécution s’arrête alors aussi dans l’application.

Optionnel : demander une approbation dans l’application​

Utilisez un nœud n8n Wait avec On Webhook Call lorsque le workflow ne peut continuer qu’après un choix. Envoyez avant le nœud Wait un callback avec type: "approval_required" :

Configurez le nœud Wait sur Resume: On Webhook Call, HTTP Method: POST et Authentication: Header Auth. Sélectionnez les mêmes identifiants Header Auth que pour Start workflow. Ajoutez après le nœud Wait un nœud Switch et vérifiez-y {{ $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" }
]
}
}

L’utilisateur voit les choix dans la fenêtre d’exécution. Après un choix, le nœud Wait reçoit notamment decision. Utilisez ensuite par exemple un nœud Switch pour déterminer la suite appropriée.

Une valeur de choix ne peut contenir que des lettres, des chiffres, _ et -. Le libellé peut contenir du texte lisible normal.

Définir l’URL de callback de production​

L’URL de callback de production pour AI-Corporate est :

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

Ne collez pas cette URL comme texte fixe dans chaque nœud de callback. Dans le champ URL du nœud HTTP Request, choisissez Expression et utilisez :

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

AI-Corporate fournit ainsi automatiquement la bonne URL de production à chaque démarrage. L’URL fixe ci-dessus sert à vérifier pendant les tests que l’expression pointe vers AI-Corporate et non vers AI-School ou AI-Public.

Les callables triggerCustomN8nWorkflow, triggerN8nWorkflow et resumeN8nWorkflow sont appelés par l’application elle-même. Vous n’avez pas besoin de configurer ces URL dans n8n.

Gestion des erreurs​

Renvoyez les erreurs attendues avec un callback de type failed. Pour les erreurs de nœud inattendues, créez en plus un Error Workflow central :

  1. Créez un nouveau workflow avec un nœud Error Trigger.

  2. Ajoutez ensuite un nœud HTTP Request avec Method: POST.

  3. Renseignez cette URL de production fixe dans URL :

    https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Choisissez Authentication: None et ajoutez l’en-tête n8n-handihow-name avec la valeur secrète standard de l’administrateur de la plateforme.

  5. Choisissez un corps JSON et collez :

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Activez le Error Workflow.
  2. Ouvrez les paramètres du workflow normal et sélectionnez-le sous Error Workflow.

Envoyez immédiatement après Start workflow au moins un callback avec executionId: "{{ $execution.id }}". Ce n’est qu’ainsi qu’AI-Corporate peut associer une erreur inattendue à la bonne exécution.

Limitations importantes​

  • Seuls les déclencheurs webhook sont pris en charge.
  • Seules les URL de webhook de production sont prises en charge.
  • Les URL de webhook de test avec /webhook-test/ sont refusées.
  • Seul POST est pris en charge.
  • Seule l’authentification generic header est prise en charge.
  • La valeur de l’en-tête est traitée comme secrète dans l’application.
  • Les callbacktokens et les resume-url's sont traités uniquement côté serveur et ne sont pas directement accessibles aux utilisateurs.
  • Le tenant est déterminé côté serveur à partir de l’utilisateur connecté, et non à partir d’une valeur envoyée par le navigateur.

Dépannage​

  • 404 ou webhook non enregistré : activez le workflow dans n8n et utilisez l’URL de production.
  • Erreur d’authentification : vérifiez que le nom et la valeur de l’en-tête sont exactement identiques dans les deux systèmes.
  • Données manquantes : vérifiez que les noms de champs dans l’application correspondent aux clés attendues par n8n.
  • Aucune requête dans n8n : vérifiez que le workflow commence par un webhook trigger et utilise POST.
  • La fenêtre d’exécution reste ouverte : si vous avez activé Het einde van de workflow melden, vérifiez que n8n envoie bien un dernier callback completed, failed ou rejected. Si vous n’attendez aucun retour, désactivez les trois options lors de l’enregistrement.
  • Aucune progression visible : vérifiez que Tussentijdse voortgang melden est activé lors de l’enregistrement, que l’objet integration est conservé et que chaque callback a un eventId unique.
  • Les boutons d’approbation ne fonctionnent pas : vérifiez le nœud Wait, resumeUrl, l’authentification par en-tête et les caractères autorisés dans choices[].value.