fix(skill): simplify n8n action router
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
"type": "n8n-nodes-base.webhook",
|
||||
"typeVersion": 2.1,
|
||||
"position": [
|
||||
-820,
|
||||
-360,
|
||||
0
|
||||
],
|
||||
"parameters": {
|
||||
@@ -18,252 +18,30 @@
|
||||
"options": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "normalize-request",
|
||||
"name": "normalize-request",
|
||||
"type": "n8n-nodes-base.set",
|
||||
"typeVersion": 3.4,
|
||||
"position": [
|
||||
-560,
|
||||
0
|
||||
],
|
||||
"parameters": {
|
||||
"mode": "manual",
|
||||
"includeOtherFields": false,
|
||||
"assignments": {
|
||||
"assignments": [
|
||||
{
|
||||
"id": "action",
|
||||
"name": "action",
|
||||
"type": "string",
|
||||
"value": "={{$json.body.action || ''}}"
|
||||
},
|
||||
{
|
||||
"id": "args",
|
||||
"name": "args",
|
||||
"type": "object",
|
||||
"value": "={{$json.body.args || {}}}"
|
||||
},
|
||||
{
|
||||
"id": "request_id",
|
||||
"name": "request_id",
|
||||
"type": "string",
|
||||
"value": "={{$json.body.request_id || ''}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"dotNotation": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "route-action",
|
||||
"name": "route-action",
|
||||
"type": "n8n-nodes-base.switch",
|
||||
"typeVersion": 3.4,
|
||||
"type": "n8n-nodes-base.code",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
-300,
|
||||
-40,
|
||||
0
|
||||
],
|
||||
"parameters": {
|
||||
"mode": "rules",
|
||||
"rules": {
|
||||
"values": [
|
||||
{
|
||||
"conditions": {
|
||||
"options": {
|
||||
"caseSensitive": true,
|
||||
"typeValidation": "strict",
|
||||
"version": 2
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"leftValue": "={{$json.action}}",
|
||||
"rightValue": "append_log",
|
||||
"operator": {
|
||||
"type": "string",
|
||||
"operation": "equals"
|
||||
}
|
||||
}
|
||||
],
|
||||
"combinator": "and"
|
||||
},
|
||||
"renameOutput": true,
|
||||
"outputKey": "append_log"
|
||||
},
|
||||
{
|
||||
"conditions": {
|
||||
"options": {
|
||||
"caseSensitive": true,
|
||||
"typeValidation": "strict",
|
||||
"version": 2
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"leftValue": "={{$json.action}}",
|
||||
"rightValue": "notify",
|
||||
"operator": {
|
||||
"type": "string",
|
||||
"operation": "equals"
|
||||
}
|
||||
}
|
||||
],
|
||||
"combinator": "and"
|
||||
},
|
||||
"renameOutput": true,
|
||||
"outputKey": "notify"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"fallbackOutput": "extra",
|
||||
"renameFallbackOutput": "unknown"
|
||||
}
|
||||
"mode": "runOnceForEachItem",
|
||||
"language": "javaScript",
|
||||
"jsCode": "const body = $json.body ?? {};\nconst action = body.action ?? '';\nconst args = body.args ?? {};\nconst requestId = body.request_id ?? '';\n\nlet statusCode = 200;\nlet responseBody;\n\nif (action === 'append_log') {\n if (typeof args.text === 'string' && args.text.length > 0) {\n responseBody = {\n ok: true,\n request_id: requestId,\n result: {\n action: 'append_log',\n status: 'accepted',\n preview: { text: args.text },\n },\n };\n } else {\n statusCode = 400;\n responseBody = {\n ok: false,\n request_id: requestId,\n error: { code: 'invalid_request', message: 'required args are missing' },\n };\n }\n} else if (action === 'notify') {\n if (typeof args.message === 'string' && args.message.length > 0) {\n responseBody = {\n ok: true,\n request_id: requestId,\n result: {\n action: 'notify',\n status: 'accepted',\n preview: {\n title: typeof args.title === 'string' ? args.title : '',\n message: args.message,\n },\n },\n };\n } else {\n statusCode = 400;\n responseBody = {\n ok: false,\n request_id: requestId,\n error: { code: 'invalid_request', message: 'required args are missing' },\n };\n }\n} else {\n statusCode = 400;\n responseBody = {\n ok: false,\n request_id: requestId,\n error: { code: 'unknown_action', message: 'action is not supported' },\n };\n}\n\nreturn {\n json: {\n status_code: statusCode,\n response_body: responseBody,\n },\n};"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "append-log-response",
|
||||
"name": "append-log-response",
|
||||
"type": "n8n-nodes-base.set",
|
||||
"typeVersion": 3.4,
|
||||
"position": [
|
||||
-20,
|
||||
-180
|
||||
],
|
||||
"parameters": {
|
||||
"mode": "manual",
|
||||
"includeOtherFields": false,
|
||||
"assignments": {
|
||||
"assignments": [
|
||||
{
|
||||
"id": "status_code",
|
||||
"name": "status_code",
|
||||
"type": "number",
|
||||
"value": "={{$json.args.text ? 200 : 400}}"
|
||||
},
|
||||
{
|
||||
"id": "response_body",
|
||||
"name": "response_body",
|
||||
"type": "object",
|
||||
"value": "={{ $json.args.text ? { ok: true, request_id: $json.request_id || '', result: { action: 'append_log', status: 'accepted', preview: { text: $json.args.text } } } : { ok: false, request_id: $json.request_id || '', error: { code: 'invalid_request', message: 'required args are missing' } } }}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"dotNotation": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "respond-append-log",
|
||||
"name": "respond-append-log",
|
||||
"id": "respond-openclaw-action",
|
||||
"name": "Respond to Webhook",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.5,
|
||||
"position": [
|
||||
240,
|
||||
-180
|
||||
],
|
||||
"parameters": {
|
||||
"respondWith": "json",
|
||||
"responseBody": "={{$json.response_body}}",
|
||||
"options": {
|
||||
"responseCode": "={{$json.status_code}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "notify-response",
|
||||
"name": "notify-response",
|
||||
"type": "n8n-nodes-base.set",
|
||||
"typeVersion": 3.4,
|
||||
"position": [
|
||||
-20,
|
||||
260,
|
||||
0
|
||||
],
|
||||
"parameters": {
|
||||
"mode": "manual",
|
||||
"includeOtherFields": false,
|
||||
"assignments": {
|
||||
"assignments": [
|
||||
{
|
||||
"id": "status_code",
|
||||
"name": "status_code",
|
||||
"type": "number",
|
||||
"value": "={{$json.args.message ? 200 : 400}}"
|
||||
},
|
||||
{
|
||||
"id": "response_body",
|
||||
"name": "response_body",
|
||||
"type": "object",
|
||||
"value": "={{ $json.args.message ? { ok: true, request_id: $json.request_id || '', result: { action: 'notify', status: 'accepted', preview: { title: $json.args.title || '', message: $json.args.message } } } : { ok: false, request_id: $json.request_id || '', error: { code: 'invalid_request', message: 'required args are missing' } } }}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"dotNotation": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "respond-notify",
|
||||
"name": "respond-notify",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.5,
|
||||
"position": [
|
||||
240,
|
||||
0
|
||||
],
|
||||
"parameters": {
|
||||
"respondWith": "json",
|
||||
"responseBody": "={{$json.response_body}}",
|
||||
"options": {
|
||||
"responseCode": "={{$json.status_code}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "unknown-action-response",
|
||||
"name": "unknown-action-response",
|
||||
"type": "n8n-nodes-base.set",
|
||||
"typeVersion": 3.4,
|
||||
"position": [
|
||||
-20,
|
||||
180
|
||||
],
|
||||
"parameters": {
|
||||
"mode": "manual",
|
||||
"includeOtherFields": false,
|
||||
"assignments": {
|
||||
"assignments": [
|
||||
{
|
||||
"id": "status_code",
|
||||
"name": "status_code",
|
||||
"type": "number",
|
||||
"value": 400
|
||||
},
|
||||
{
|
||||
"id": "response_body",
|
||||
"name": "response_body",
|
||||
"type": "object",
|
||||
"value": "={{ { ok: false, request_id: $json.request_id || '', error: { code: 'unknown_action', message: 'action is not supported' } } }}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"dotNotation": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "respond-unknown-action",
|
||||
"name": "respond-unknown-action",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.5,
|
||||
"position": [
|
||||
240,
|
||||
180
|
||||
],
|
||||
"parameters": {
|
||||
"respondWith": "json",
|
||||
"responseBody": "={{$json.response_body}}",
|
||||
@@ -275,17 +53,6 @@
|
||||
],
|
||||
"connections": {
|
||||
"Webhook": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "normalize-request",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"normalize-request": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
@@ -300,54 +67,7 @@
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "append-log-response",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"node": "notify-response",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"node": "unknown-action-response",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"append-log-response": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "respond-append-log",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"notify-response": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "respond-notify",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"unknown-action-response": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "respond-unknown-action",
|
||||
"node": "Respond to Webhook",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
@@ -355,7 +75,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"pinData": {},
|
||||
"settings": {
|
||||
"executionOrder": "v1"
|
||||
},
|
||||
@@ -365,5 +84,5 @@
|
||||
"note": "After import, set Webhook authentication to Header Auth and bind a local credential using x-openclaw-secret. Secrets are intentionally not embedded in the workflow export."
|
||||
},
|
||||
"active": false,
|
||||
"versionId": "openclaw-action-v1"
|
||||
"versionId": "openclaw-action-v2"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user