api/service/hub_adaptor/n8n/README.md
n8n 是一个强大的工作流自动化平台,本适配器实现了与 n8n webhook 的完整集成,支持文件上传和复杂参数传递。
{baseurl}/webhook/{workflow_id}file_id:xxx 格式参数{
"type": 1009,
"name": "n8n工作流",
"base_url": "http://localhost:5678",
"key": "your-api-key"
}
{
"agent_type": "workflow",
"model": "workflow-d3c8ffe7-f052-4f51-a7b3-2e226d0b4d0c",
"name": "n8n智能助手"
}
curl --location --request POST '/v1/workflow/run' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"parameters": {
"query": "你是谁"
},
"model": "workflow-d3c8ffe7-f052-4f51-a7b3-2e226d0b4d0c"
}'
curl --location --request POST '/v1/workflow/run' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"parameters": {
"query": "分析这个文档",
"document": "file_id:123",
"options": {
"language": "zh-CN",
"format": "summary"
},
"images": ["file_id:456", "file_id:789"]
},
"model": "workflow-d3c8ffe7-f052-4f51-a7b3-2e226d0b4d0c"
}'
当参数中包含 file_id:xxx 格式时,系统会自动:
file_id:123 格式转换后的文件对象格式:
{
"filename": "document.pdf",
"mimeType": "application/pdf",
"data": "base64编码的文件内容",
"size": 1024000,
"extension": ".pdf",
"originalId": 123
}
在 n8n 中创建一个 Webhook 节点,配置如下:
在 n8n 工作流中,可以通过以下方式处理文件:
// 获取文件数据
const fileData = $json.document;
if (fileData && fileData.data) {
// 解码 base64 数据
const buffer = Buffer.from(fileData.data, 'base64');
// 获取文件信息
const filename = fileData.filename;
const mimeType = fileData.mimeType;
const size = fileData.size;
// 处理文件内容...
}
n8n 工作流应该返回数组格式的响应:
[
{
"output": "处理结果",
"query": "原始查询",
"status": "success"
}
]
[
{
"output": "我是DeepSeek Chat,由深度求索公司开发的智能助手!",
"query": "你是谁"
}
]
{
"workflow_output_data": {
"output": "我是DeepSeek Chat,由深度求索公司开发的智能助手!",
"query": "你是谁"
},
"execute_id": "n8n-exec-102",
"channel_id": 1,
"model_name": "workflow-d3c8ffe7-f052-4f51-a7b3-2e226d0b4d0c"
}
系统会记录详细的执行日志:
[INFO] n8n工作流请求转换 - WorkflowID: xxx, Parameters: {...}
[INFO] n8n工作流文件处理成功 - 原始ID: 123, 文件名: test.pdf
[INFO] n8n工作流处理完成 - ExecuteID: xxx, 输出字段数: 2
可以直接使用 curl 测试 n8n webhook:
curl --location --request POST 'http://localhost:5678/webhook/your-workflow-id' \
--header 'Authorization: your-api-key' \
--header 'Content-Type: application/json' \
--data-raw '{"query": "测试"}'
确保 n8n 工作流返回正确的数组格式响应,包含必要的字段。
如遇到问题,请检查:
更多技术细节请参考源码注释和测试用例。