n8n 工作流
AI-Corporate 可以通过生产 webhook 启动 n8n 工作流。当你想在 AI-Corporate 之外启动自动化流程时,这很有用,例如创建任务、更新 CRM 记录、启动报告流或将表单数据转送到另一系统。
示例:公司网站上的新闻文章
假设组织已经创建了一个 n8n 工作流,将新闻文章发布到公司的 WordPress 网站。在 AI-Corporate 中你只需要输入一小段文本,例如关于客户案例、活动或内部里程碑的几句话。用这段文本即可在 n8n 中启动工作流。
n8n 工作流之后可以例如:
- 将短文本生成一段更好的初稿文本,使用一个 LLM 节点和一个适合组织语调的提示。
- 使用第二个 LLM 节点生成合适的插图,例如使用品牌颜色和易于辨识的插画风格。
- 将文本和图片准备好作为博客文章发布在 WordPress 网站上。
AI-Corporate 与 n8n 的协作方式:在 AI-Corporate 中用户选择工作流并填写所需信息。随后 n8n 执行自动化步骤,并确保新闻文章正确发布到网站。
此集成的作用?
你可以在工作流总览中启动一个 n8n 工作流。只有生产 webhook、POST 与 Header Auth 是必填的。来自 n8n 的字段和回调可以独立设定,属于可选。
- 若工作流没有字段,则 webhook 将立即被调用。
- 若工作流有字段,则先打开一个表单。用户填写字段后再通过按钮启动工作流。
- 填写的值将作为 JSON 在发送到 n8n webhook 的 POST 请求中一起发送。
- 如果没有回调,AI-Corporate 仅确认工作流已启动并在 n8n 中继续运行。窗口不显示加载指示器,可以直接关闭。
- 若在注册时开启了回传,工作流可以向 AI-Corporate 发送中途步骤或结束信息。
- 若在注册时开启了批准,则用户可以在 AI-Corporate 中直接做出选择。随后 n8n 将从等待步骤继续。
在 AI-Corporate 中创建 n8n 工作流
管理员按如下方式注册工作流:
- 转到 助手。
- 打开 工作流。
- 选择 新的 n8n 工作流。
- 输入工作流的名称和 n8n 生产地址。
- 在 Header authentication 中设置 header name 和 secret header value。
- 在 来自 n8n 的回传 下仅勾选在此 n8n 工作流中实际构建的部分:进度、批准和/或工作流结束。
- 如有需要,添加在 POST 请求中需要一起发送的字段。
- 保存工作流。
三种回传选项默认均为关闭。若稍后在 n8n 设置回调或批准步骤,请同时更新在 AI-Corporate 的注册。对话框因此可以只显示启动确认,或继续等待进一步信号。
字段
- 字段为可选。
- 每个字段有一个字段名和一个类型。
- 支持的字段类型为:短文本、长文本、数字、是/否、日期、单选、复选。
- 对于 单选 和 多选,请添加可用选项。单选 将显示为紧凑的单选列表;多选 显示为复选框。所选的值将随 JSON 体一起发送。
- 必填字段在工作流启动前必须填写。
- 字段名将成为发送到 n8n 的 JSON 体中的键。
在 n8n 中创建兼容工作流
- 在 n8n 中创建一个新工作流。
- 首先节点添加一个 Webhook。
- 将此节点命名为 Start workflow。下面的示例表达式使用此名称。
- 将 HTTP Method 设置为 POST。
- 选择 Authentication: Header Auth,并使用与 AI-Corporate 相同的 header 名称和值。
- 将 Respond 或 Response Mode 设置为 Immediately。
- 将 Production URL 复制到 AI-Corporate 中字段 n8n 生产地址,不要使用带有
/webhook-test/的测试 URL。 - 启用工作流。
接收到的数据在 body 下;技术集成数据在 body.integration 下。不要在 Edit Fields、Set 或 Code 节点中删除它们。
下面是 JSON 体的示例
如果你使用 prompt、klantnaam、doelgroepen 和 datum 这几个字段名,n8n 可能会收到如下 JSON 体。AI-Corporate 会自动添加 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"
}
}
回调令牌仅适用于一次执行。请勿将其记录在日志、固定配置或其他系统中。
可选:向进度和完成进行回传
AI-Corporate 只能显示 n8n 的回传。若在注册时开启了“中途进度回传”和/或“向 AI-Corporate 回传工作流结束”,请使用这些回调。
为每次回调节点按如下设置:
-
选择 Method: POST。
-
在 URL 上点击 Expression,并粘贴:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
选择 Authentication: None。
-
打开 Send Headers,并添加下述头信息。
-
打开 Send Body,选择 Body Content Type: JSON,并选择 Specify Body: Using JSON。
使用下列头信息:
Authorization: Bearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
Content-Type: application/json
例如在某个步骤开始时发送以下消息:
{
"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."
}
- 对同一次执行的每一个事件使用唯一的
eventId。 - 使用清晰的荷兰语
step.label;此文本会在应用中显示。 - 如果你开启了 Het einde van de workflow melden,请在结束时始终发送
type: "completed"、type: "failed"或type: "rejected"。 - 在
completed中可附加一个output对象以返回结果。 - 在
failed时发送可理解的错误信息。执行在应用中也将停止。
可选:在应用中请求批准
若工作流在你做出选择后才继续,可以使用 n8n 的 Wait 节点并设置 On Webhook Call。在 Wait 节点前发送包含 type: "approval_required" 的回调:
将 Wait 节点设为 Resume: On Webhook Call、HTTP Method: POST、Authentication: Header Auth。选择与 Start workflow 相同的 Header Auth 证书。Wait 节点后再添加一个 Switch 节点,在其中检查 {{ $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" }
]
}
}
用户会在执行窗口中看到选项。选择后 Wait 节点将返回包括 decision 在内的内容。然后可以使用一个 Switch 节点来决定后续。
一个选项值只能包含字母、数字、_ 和 -。标签可以包含普通可读文本。
生产回调 URL 设置
AI-Corporate 的生产回调 URL 为:
https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback
请勿将此 URL 作为固定文本放在每个回调节点中。在 HTTP Request 节点的 URL 字段中选择 Expression,并使用:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
AI-Corporate 因此在每次启动时自动提供正确的生产 URL。上方的固定 URL 用于测试时确认表达式指向 AI-Corporate,而非 AI-School 或 AI-Public。
调用端点 triggerCustomN8nWorkflow、triggerN8nWorkflow 和 resumeN8nWorkflow 将由应用自行调用。你无需在 n8n 中进行设置。
处理错误
返回预计的错误时,请使用回调类型 failed。对于意外的节点错误,请另建一个集中式错误工作流:
-
新建一个工作流并添加一个 Error Trigger 节点。
-
之后添加一个 HTTP Request 节点,方法为 POST。
-
在 URL 中填写固定生产 URL:
https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed -
选择 Authentication: None,并添加头信息
n8n-handihow-name,其值为平台管理员的秘密默认值。 -
选择 JSON 体并粘贴:
{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
- 启用错误工作流。
- 打开普通工作流的设置,在 Error Workflow 中选择此错误工作流。
Start workflow 之后,请直接发送至少一个回调,包含 executionId: "{{ $execution.id }}"。只有这样 AI-Corporate 才能将意外错误关联到正确的执行。
重要限制
- 仅支持 webhook 触发器。
- 仅支持生产 webhook URL。
- 测试 webhook URL(含
/webhook-test/)将被拒绝。 - 仅支持 POST。
- 仅支持通用 header 验证。
- header 值在应用中被视为机密。
- 回调令牌和 resume-url 仅在服务器端处理,对用户不可直接获取。
- tenant 在服务器端根据已登录用户确定,而不是浏览器传送的值。
问题排除
- 404 或 webhook 未注册:在 n8n 中激活工作流并使用生产 URL。
- 认证错误:检查 header 名称和值在两个系统中是否完全一致。
- 数据缺失:检查应用中的字段名是否与 n8n 期望的键一致。
- 在 n8n 中没有收到请求:检查工作流是否以 webhook 触发并使用 POST。
- 执行窗口一直旋转:若开启了“向工作流结束回传”,请检查 n8n 是否发送了最后的
completed、failed或rejected回调。如不期望回传,请将注册中的三个选项都关闭。 - 无进度显示:请检查注册时是否开启了“中途进展回传”,或
integration对象是否保持,以及每个回调是否具有唯一的eventId。 - 批准按钮无效:请检查 Wait 节点、
resumeUrl、头部认证以及choices[].value的允许字符。