使用OpenAI分析工作流错误并创建FreshDesk工单和Slack警报
高级
这是一个AI Summarization, Multimodal AI领域的自动化工作流,包含 16 个节点。主要使用 Set, Code, Merge, Slack, HttpRequest 等节点。 使用OpenAI分析工作流错误并创建FreshDesk工单和Slack警报
前置要求
- •Slack Bot Token 或 Webhook URL
- •可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "94fc2c6a7a77ded555aa833bb96d962eb52fa6fab7c08bc61fda4e8d5d10e8c1"
},
"nodes": [
{
"id": "bf182e19-4083-4344-ac68-329663a429c8",
"name": "错误触发器",
"type": "n8n-nodes-base.errorTrigger",
"position": [
-1104,
-128
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c1b77e3e-81a2-4c24-a6a1-798637afb053",
"name": "错误通知",
"type": "n8n-nodes-base.slack",
"position": [
368,
-128
],
"webhookId": "7846bf42-10f8-494f-9874-efcef323dc95",
"parameters": {
"text": "={{ $json.slack_text }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C08UZ06DYAE",
"cachedResultName": "n8n"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.3
},
{
"id": "c1e264c0-33fa-4d41-a02a-5c6e3e37611b",
"name": "多表:您可以连接多个表以实现有组织的数据结构",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-800,
96
],
"parameters": {
"jsonSchemaExample": "{\n \"analysis\": {\n \"issue\": \"Workflow execution failed at 'Node With Error' during manual execution, marked as retry attempt of execution #34\",\n \"reasoning\": \"This appears to be a persistent error that has caused multiple retry attempts. The fact that this is execution #231 retrying execution #34 suggests either a recurring issue or a stuck workflow that keeps failing at the same node. The generic 'Example Error Message' indicates this is sample data, but the pattern suggests a node configuration or data processing issue that prevents successful completion.\",\n \"confidence_level\": \"Medium\",\n \"error_category\": \"Configuration/Data Processing\"\n },\n \"solution\": {\n \"primary_fix\": \"Examine the 'Node With Error' configuration for missing required fields, incorrect data mappings, or authentication issues\",\n \"alternative_approaches\": [\n \"Check if the node has proper error handling configured\",\n \"Verify input data format and structure meets node requirements\",\n \"Review node credentials and permissions\"\n ],\n \"implementation_steps\": [\n \"Step 1: Open the 'Node With Error' in the n8n workflow editor\",\n \"Step 2: Review all required parameters and ensure they are properly configured\",\n \"Step 3: Check the input data format using the node's test functionality\",\n \"Step 4: Add error handling branches or 'Continue on Fail' if appropriate\",\n \"Step 5: Test the workflow in manual mode before enabling automatic execution\"\n ]\n },\n \"prevention\": {\n \"recommendations\": [\n \"Implement proper error handling with 'Continue on Fail' settings where appropriate\",\n \"Add data validation nodes before critical processing steps\",\n \"Set up workflow-level error notifications\"\n ],\n \"monitoring_suggestions\": [\n \"Monitor retry patterns to identify recurring issues\",\n \"Set up alerts for failed executions\",\n \"Regular review of execution logs for error trends\"\n ],\n \"best_practices\": [\n \"Use 'Set' nodes to validate and transform data before processing\",\n \"Implement timeout settings for external API calls\",\n \"Add logging nodes to track data flow at critical points\"\n ]\n },\n \"additional_context\": {\n \"requires_verification\": [\n \"Actual error message content\",\n \"Specific node type that's failing\",\n \"Input data structure and content\"\n ],\n \"assumptions_made\": [\n \"This is a configuration or data processing error\",\n \"The node requires specific input format or parameters\",\n \"Multiple retries suggest a persistent rather than transient issue\"\n ],\n \"follow_up_questions\": [\n \"What is the actual error message?\",\n \"What type of node is 'Node With Error'?\",\n \"What data is being passed to this node?\",\n \"Are there any authentication or API rate limiting issues?\"\n ]\n }\n}"
},
"typeVersion": 1.2
},
{
"id": "d03ba933-d017-41fb-9671-f3334b80a9a1",
"name": "调试器",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-880,
-128
],
"parameters": {
"text": "=You are an expert n8n workflow debugger. Analyze n8n execution errors using systematic reasoning: decompose the error, identify root causes from multiple perspectives, and provide actionable solutions.\nAlways respond in this JSON format:\njson{\n \"analysis\": {\n \"issue\": \"Brief problem description\",\n \"reasoning\": \"Why this occurred\",\n \"confidence_level\": \"High/Medium/Low\",\n \"error_category\": \"Authentication/Data Processing/API Limits/Configuration/etc\"\n },\n \"solution\": {\n \"primary_fix\": \"Main solution\",\n \"alternative_approaches\": [\"Alt 1\", \"Alt 2\"],\n \"implementation_steps\": [\"Step 1\", \"Step 2\", \"Step 3\"]\n },\n \"prevention\": {\n \"recommendations\": [\"Rec 1\", \"Rec 2\"],\n \"best_practices\": [\"Practice 1\", \"Practice 2\"]\n }\n}\nFocus on practical, n8n-specific solutions that can be implemented immediately.\nUSER PROMPT\nAnalyze this n8n workflow error and provide diagnostic analysis with actionable solutions:\n{{ $('Error Trigger').item.json.execution.id }}\n{{ $('Error Trigger').item.json.execution.url }}\n{{ $('Error Trigger').item.json.execution.retryOf }}\nError:\n{{ $json.execution.error.message }}\n{{ $json.execution.error.stack }}\n{{ $json.execution.lastNodeExecuted }}\n{{ $json.execution.mode }}\n{{ $json.execution.startedAt }}\n{{ $json.execution.stoppedAt }}\nWorkflow:\n{{ $json.workflow.id }}\n{{ $json.workflow.name }}\n{{ $json.workflow.active }}",
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "cb3430b5-fe77-4cc0-a895-d2f95e4aa598",
"name": "准备 Slack 消息",
"type": "n8n-nodes-base.code",
"position": [
144,
-128
],
"parameters": {
"jsCode": "// n8n Code Node: Generate Slack Message for Workflow Errors\n// Enhanced to include FreshDesk ticket information from merged input\n\n// Get the merged data from the current input (contains both ticket and analysis data)\nconst mergedData = $input.first().json;\n\n// Get execution data from the Error Trigger node (previous node in workflow)\nconst executionData = $('Error Trigger').first().json;\n\n// Debug: Log the input structure\nconsole.log('Merged data:', JSON.stringify(mergedData, null, 2));\nconsole.log('Execution data:', JSON.stringify(executionData, null, 2));\n\n// Extract execution details with safe access\nconst execution = executionData?.execution || {};\nconst workflow = executionData?.workflow || {};\n\n// Extract analysis details from merged data - using the clean variable names\nconst issueText = mergedData?.debugger_analysis_issue || 'No analysis available';\nconst reasoning = mergedData?.debugger_analysis_reasoning || 'No reasoning provided';\nconst confidenceLevel = mergedData?.debugger_analysis_level || 'Unknown';\nconst errorCategory = mergedData?.debugger_analysis_category || 'General';\nconst primaryFix = mergedData?.debugger_solution || 'No solution provided';\nconst implementationSteps = mergedData?.debugger_steps || ['No steps available'];\nconst alternativeApproaches = mergedData?.debugger_approaches || ['No alternatives available'];\nconst prevention = mergedData?.debugger_prevention || {};\n\n// Extract FreshDesk ticket details from merged data\nconst ticketId = mergedData?.id || 'Unknown';\nconst ticketSubject = mergedData?.subject || 'No subject available';\nconst ticketStatus = mergedData?.status || 'Unknown';\nconst ticketPriority = mergedData?.priority || 'Unknown';\nconst ticketCreatedAt = mergedData?.created_at || 'Unknown';\nconst ticketUrl = ticketId !== 'Unknown' ? `https://qlabs.freshdesk.com/a/tickets/${ticketId}` : '#';\n\n// Set default values for missing properties\nconst workflowName = mergedData?.workflow_name || workflow?.name || 'Unknown Workflow';\nconst executionId = execution?.id || 'Unknown';\nconst executionUrl = mergedData?.workflow_url || execution?.url || '#';\nconst lastNode = execution?.lastNodeExecuted || 'Unknown Node';\nconst executionMode = execution?.mode || 'unknown';\nconst errorMessage = mergedData?.workflow_error_message || execution?.error?.message || 'No error message available';\nconst errorStack = execution?.error?.stack || '';\n\nconst recommendations = prevention?.recommendations || ['No recommendations available'];\nconst bestPractices = prevention?.best_practices || ['No best practices available'];\n\n// Helper function to format arrays as bullet points\nfunction formatArray(array, prefix = \"• \") {\n if (!Array.isArray(array)) return 'No data available';\n return array.map(item => `${prefix}${item}`).join('\\n');\n}\n\n// Generate confidence emoji based on level\nfunction getConfidenceEmoji(level) {\n switch(level.toLowerCase()) {\n case 'high': return '🔴';\n case 'medium': return '🟡';\n case 'low': return '🟢';\n default: return '⚪';\n }\n}\n\n// Generate category emoji\nfunction getCategoryEmoji(category) {\n switch(category.toLowerCase()) {\n case 'configuration': return '⚙️';\n case 'authentication': return '🔐';\n case 'network': return '🌐';\n case 'data': return '📊';\n case 'data processing': return '📊';\n case 'timeout': return '⏰';\n default: return '❌';\n }\n}\n\n// Generate priority emoji\nfunction getPriorityEmoji(priority) {\n switch(priority) {\n case 1: return '🔥'; // Urgent\n case 2: return '🟡'; // High\n case 3: return '🟢'; // Medium\n case 4: return '🔵'; // Low\n default: return '⚪';\n }\n}\n\n// Generate status text\nfunction getStatusText(status) {\n switch(status) {\n case 2: return 'Open';\n case 3: return 'Pending';\n case 4: return 'Resolved';\n case 5: return 'Closed';\n default: return 'Unknown';\n }\n}\n\n// Build the Slack message\nconst slackMessage = {\n \"blocks\": [\n {\n \"type\": \"header\",\n \"text\": {\n \"type\": \"plain_text\",\n \"text\": \"🚨 n8n Workflow Error Alert\"\n }\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"section\",\n \"fields\": [\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Workflow:*\\n${workflowName}`\n },\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Execution ID:*\\n${executionId}`\n },\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Failed Node:*\\n${lastNode}`\n },\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Mode:*\\n${executionMode}`\n }\n ]\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Error Message:*\\n\\`\\`\\`${errorMessage}\\`\\`\\``\n }\n },\n {\n \"type\": \"actions\",\n \"elements\": [\n {\n \"type\": \"button\",\n \"text\": {\n \"type\": \"plain_text\",\n \"text\": \"View Execution\"\n },\n \"url\": executionUrl,\n \"style\": \"primary\"\n }\n ]\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*🎫 Support Ticket Created*`\n }\n },\n {\n \"type\": \"section\",\n \"fields\": [\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Ticket ID:*\\n#${ticketId}`\n },\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Status:*\\n${getStatusText(ticketStatus)}`\n },\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Priority:*\\n${getPriorityEmoji(ticketPriority)} Priority ${ticketPriority}`\n },\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Created:*\\n${new Date(ticketCreatedAt).toLocaleString()}`\n }\n ]\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Subject:*\\n${ticketSubject}`\n }\n },\n {\n \"type\": \"actions\",\n \"elements\": [\n {\n \"type\": \"button\",\n \"text\": {\n \"type\": \"plain_text\",\n \"text\": \"View Ticket\"\n },\n \"url\": ticketUrl,\n \"style\": \"primary\"\n }\n ]\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*${getCategoryEmoji(errorCategory)} AI Analysis*`\n }\n },\n {\n \"type\": \"section\",\n \"fields\": [\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Category:*\\n${errorCategory}`\n },\n {\n \"type\": \"mrkdwn\",\n \"text\": `*Confidence:*\\n${getConfidenceEmoji(confidenceLevel)} ${confidenceLevel}`\n }\n ]\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Issue:*\\n${issueText}`\n }\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Reasoning:*\\n${reasoning}`\n }\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": \"*🔧 Recommended Solution*\"\n }\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Primary Fix:*\\n${primaryFix}`\n }\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Implementation Steps:*\\n${formatArray(implementationSteps)}`\n }\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Alternative Approaches:*\\n${formatArray(alternativeApproaches)}`\n }\n },\n {\n \"type\": \"divider\"\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": \"*🛡️ Prevention Recommendations*\"\n }\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Recommendations:*\\n${formatArray(recommendations)}`\n }\n },\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": `*Best Practices:*\\n${formatArray(bestPractices)}`\n }\n },\n {\n \"type\": \"context\",\n \"elements\": [\n {\n \"type\": \"mrkdwn\",\n \"text\": `Generated at ${new Date().toLocaleString()} | Execution ID: ${executionId} | Ticket #${ticketId}`\n }\n ]\n }\n ]\n};\n\n// Also create a detailed text fallback for basic Slack integrations\nconst textMessage = `🚨 n8n Workflow Error Alert\n\n--- WORKFLOW DETAILS ---\nWorkflow: ${workflowName}\nExecution ID: ${executionId}\nFailed Node: ${lastNode}\nMode: ${executionMode}\nError Message: ${errorMessage}\n\n🔗 View Execution: ${executionUrl}\n\n--- SUPPORT TICKET ---\n🎫 Ticket ID: #${ticketId}\nStatus: ${getStatusText(ticketStatus)}\nPriority: ${getPriorityEmoji(ticketPriority)} Priority ${ticketPriority}\nSubject: ${ticketSubject}\nCreated: ${new Date(ticketCreatedAt).toLocaleString()}\n\n🔗 View Ticket: ${ticketUrl}\n\n--- AI ANALYSIS ---\n${getCategoryEmoji(errorCategory)} Category: ${errorCategory}\nConfidence: ${getConfidenceEmoji(confidenceLevel)} ${confidenceLevel}\n\nIssue: ${issueText}\n\nReasoning: ${reasoning}\n\n--- RECOMMENDED SOLUTION ---\n🔧 Primary Fix: ${primaryFix}\n\nImplementation Steps:\n${formatArray(implementationSteps)}\n\nAlternative Approaches:\n${formatArray(alternativeApproaches)}\n\n--- PREVENTION RECOMMENDATIONS ---\n🛡️ Recommendations:\n${formatArray(recommendations)}\n\nBest Practices:\n${formatArray(bestPractices)}\n\n--- \nGenerated at ${new Date().toLocaleString()} | Execution ID: ${executionId} | Ticket #${ticketId}`;\n\n// Return both formatted message and text fallback\nreturn [\n {\n json: {\n slack_blocks: slackMessage,\n slack_text: textMessage,\n execution_url: executionUrl,\n workflow_name: workflowName,\n error_category: errorCategory,\n confidence_level: confidenceLevel,\n ticket_id: ticketId,\n ticket_url: ticketUrl,\n ticket_status: getStatusText(ticketStatus),\n ticket_priority: ticketPriority\n }\n }\n];"
},
"typeVersion": 2
},
{
"id": "e8ea095f-4455-4e89-b29f-76497b41b5b4",
"name": "清理数据",
"type": "n8n-nodes-base.set",
"position": [
-528,
-128
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "58246464-a6cb-48e9-b2ce-20ba40c00a24",
"name": "workflow_url",
"type": "string",
"value": "={{ $('Error Trigger').item.json.execution.url }}"
},
{
"id": "12ad3719-0c46-435f-86fa-3892b26e8b5e",
"name": "workflow_name",
"type": "string",
"value": "={{ $('Error Trigger').item.json.workflow.name }}"
},
{
"id": "c27df7fa-6b42-4251-8353-f764bb6eeb33",
"name": "workflow_error_message",
"type": "string",
"value": "={{ $('Error Trigger').item.json.execution.error.message }}"
},
{
"id": "e4913f6b-ecff-4b1a-b723-9691d0325763",
"name": "debugger_analysis_issue",
"type": "string",
"value": "={{ $json.output.analysis.issue }}"
},
{
"id": "1ebb9237-1a59-473a-8b81-dc8ad4c37dbc",
"name": "debugger_analysis_reasoning",
"type": "string",
"value": "={{ $json.output.analysis.reasoning }}"
},
{
"id": "021419df-5e2c-42d7-812c-02d5420ed206",
"name": "debugger_analysis_level",
"type": "string",
"value": "={{ $json.output.analysis.confidence_level }}"
},
{
"id": "dc6894e2-6f11-4e8f-960b-89e140f69cf7",
"name": "debugger_analysis_category",
"type": "string",
"value": "={{ $json.output.analysis.error_category }}"
},
{
"id": "e9faf043-6d14-472d-848e-5f28b56954e0",
"name": "debugger_solution",
"type": "string",
"value": "={{ $json.output.solution.primary_fix }}"
},
{
"id": "98ef52e7-fd0d-4b22-8e60-95627b6acf39",
"name": "debugger_approaches",
"type": "array",
"value": "={{ $json.output.solution.alternative_approaches }}"
},
{
"id": "4d9f47ec-9ba1-46d9-b3ed-2900d6d9109f",
"name": "debugger_steps",
"type": "array",
"value": "={{ $json.output.solution.implementation_steps }}"
},
{
"id": "fcb4ce9d-151d-4ef5-ba9d-eb3341504e91",
"name": "debugger_prevention",
"type": "object",
"value": "={{ $json.output.prevention }}"
},
{
"id": "9be3b49b-7478-484d-b484-bd36afb8bb69",
"name": "context",
"type": "object",
"value": "={{ $json.output.additional_context }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9767ecb1-2782-4cd4-af7e-c7091359baf4",
"name": "创建 FreshDesk 工单",
"type": "n8n-nodes-base.httpRequest",
"position": [
-304,
-208
],
"parameters": {
"url": "https://yourcompany.freshdesk.com/api/v2/tickets",
"method": "POST",
"options": {},
"jsonBody": "={\n \"subject\": \"{{ $json.workflow_name }} - {{ $json.workflow_error_message }}\",\n \"description\": \"<h3>🔍 Debugger Analysis</h3><p><strong>Analysis Reasoning:</strong><br>{{ $json.debugger_analysis_reasoning }}</p><p><strong>Solution:</strong><br>{{ $json.debugger_solution }}</p><p><strong>Approaches:</strong><br>{{ $json.debugger_approaches.join(', ') }}</p><p><strong>Steps:</strong><br>{{ $json.debugger_steps.join('<br>• ') }}</p><hr><h3>🛡️ Prevention Measures</h3><p><strong>Recommendations:</strong><br>{{ $json.debugger_prevention.recommendations.join('<br>• ') }}</p><p><strong>Monitoring Suggestions:</strong><br>{{ $json.debugger_prevention.monitoring_suggestions ? $json.debugger_prevention.monitoring_suggestions.join('<br>• ') : 'None specified' }}</p><p><strong>Best Practices:</strong><br>{{ $json.debugger_prevention.best_practices.join('<br>• ') }}</p><hr><h3>📋 Context Information</h3><p><strong>Requires Verification:</strong><br>{{ $json.context.requires_verification.join('<br>• ') }}</p><p><strong>Assumptions Made:</strong><br>{{ $json.context.assumptions_made.join('<br>• ') }}</p><p><strong>Follow-up Questions:</strong><br>{{ $json.context.follow_up_questions.join('<br>• ') }}</p>\",\n \"email\": \"yourcompany.com\",\n \"priority\": ,\n \"status\": ,\n \"type\": \"Incident\",\n \"source\": \n}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "7b64dd18-6f92-46f2-8465-974cc2d3a25c",
"name": "合并",
"type": "n8n-nodes-base.merge",
"position": [
-80,
-128
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "42e67aed-53a8-4244-8703-5ff38f22b3d1",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2128,
-464
],
"parameters": {
"width": 640,
"height": 996,
"content": "## 🔍 AI 驱动的错误监控与支持工单系统"
},
"typeVersion": 1
},
{
"id": "03d6ec3b-c0c5-4b99-a141-d7a80edc78e5",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1264,
-464
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 1. 错误检测"
},
"typeVersion": 1
},
{
"id": "cb2547b9-76c5-4381-88da-1e5fd6a2f1e2",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-896,
-464
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 2. AI 驱动分析"
},
"typeVersion": 1
},
{
"id": "33c5b3e3-f221-402f-91f2-d766954bc0cc",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
-464
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 3. 数据标准化"
},
"typeVersion": 1
},
{
"id": "99362779-fb50-4208-8867-80f2db30038a",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
16
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 4. 支持工单创建"
},
"typeVersion": 1
},
{
"id": "be797f46-e4ff-4cab-a12c-c06ec5449278",
"name": "便签5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-464
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 5. 富通知创建"
},
"typeVersion": 1
},
{
"id": "d26dd783-1baa-43fd-a4a9-eb3cbc19fe00",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
336,
48
],
"parameters": {
"color": 7,
"width": 300,
"height": 240,
"content": "## 6. 即时团队警报"
},
"typeVersion": 1
},
{
"id": "8bb77acb-c2d7-4685-a357-d5a614f060ef",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
-368
],
"parameters": {
"color": 3,
"width": 460,
"height": 340,
"content": "### ⚠️ 设置要求!"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Merge": {
"main": [
[
{
"node": "Prep Slack Message",
"type": "main",
"index": 0
}
]
]
},
"Debugger": {
"main": [
[
{
"node": "Clean Data",
"type": "main",
"index": 0
}
]
]
},
"Clean Data": {
"main": [
[
{
"node": "Create FreshDesk Ticket",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Error Trigger": {
"main": [
[
{
"node": "Debugger",
"type": "main",
"index": 0
}
]
]
},
"Prep Slack Message": {
"main": [
[
{
"node": "Error Notifcation",
"type": "main",
"index": 0
}
]
]
},
"Create FreshDesk Ticket": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Debugger",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - AI 摘要总结, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
基于AI的会议研究与每日议程(Google日历、Attio CRM和Slack)
基于AI的会议研究与每日议程:使用Google日历、Attio CRM和Slack
If
Set
Code
+15
30 节点Harry Siggins
AI 摘要总结
Gitlab 代码审查模板
使用Gemini AI和JIRA上下文自动化GitLab合并请求代码审查
If
Set
Code
+10
41 节点Evgeny Agronsky
AI 摘要总结
自动化会议准备
使用 GPT-5 和 Gemini 研究从日历到 Slack 通过 Attio CRM 自动准备会议
If
Set
Code
+16
39 节点Harry Siggins
AI 摘要总结
Twitter数据抓取 - n8n Creator
使用Gemini 2.5 Pro自动生成Twitter情报摘要并推送到WhatsApp群组
Set
Code
Wait
+13
39 节点Daniel Lianes
AI 摘要总结
使用AI和Apify将LinkedIn帖子互动转化为合格潜在客户
使用AI和Apify将LinkedIn帖子互动转化为合格潜在客户
If
Set
Code
+10
26 节点Anna Bui
潜在客户开发
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
杂项