自动化 Zendesk 中待处理工单的跟进
高级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 16 个节点。主要使用 If, Code, Cron, Gmail, ClickUp 等节点。 Zendesk 待处理工单跟进系统,集成 Gmail、Google Sheets 和 ClickUp
前置要求
- •Google 账号和 Gmail API 凭证
- •Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "zBLlqGzoj4ODSM0v",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "自动化 Zendesk 中待处理工单的跟进",
"tags": [],
"nodes": [
{
"id": "616e5acf-cab7-4ef6-a01a-68f158495148",
"name": "工作流概述",
"type": "n8n-nodes-base.stickyNote",
"position": [
-912,
-80
],
"parameters": {
"width": 300,
"height": 304,
"content": "## 🎯 工作流概览"
},
"typeVersion": 1
},
{
"id": "4023e848-11cd-4b1e-aa2c-591c83a337cb",
"name": "计划触发器",
"type": "n8n-nodes-base.cron",
"position": [
-576,
-16
],
"parameters": {
"triggerTimes": {
"item": [
{
"mode": "custom",
"cronExpression": "0 0 20 * * 1-5"
}
]
}
},
"typeVersion": 1
},
{
"id": "8033211b-22c8-4cc8-89cf-863df591cbfc",
"name": "数据检索信息",
"type": "n8n-nodes-base.stickyNote",
"position": [
-416,
144
],
"parameters": {
"width": 280,
"height": 240,
"content": "## 📊 数据检索"
},
"typeVersion": 1
},
{
"id": "59b8a5f0-f5be-4e72-b06e-db5eb64d2047",
"name": "获取待处理工单",
"type": "n8n-nodes-base.zendesk",
"position": [
-352,
-16
],
"parameters": {
"options": {
"status": "pending"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"zendeskApi": {
"id": "gyKfBorFigBI1uj8",
"name": "Zendesk account vivek"
}
},
"typeVersion": 1
},
{
"id": "39631916-8779-4cf8-b25b-28d0a6aec0ff",
"name": "过滤逻辑",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
-288
],
"parameters": {
"width": 280,
"height": 256,
"content": "## 🔍 智能过滤"
},
"typeVersion": 1
},
{
"id": "47f63b74-86d7-4548-80ce-dedacbe5c2e8",
"name": "过滤待处理工单",
"type": "n8n-nodes-base.if",
"position": [
-128,
-16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "condition1",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "pending"
}
]
}
},
"typeVersion": 2
},
{
"id": "d536f781-1ad8-45e5-a935-76bf15893c32",
"name": "数据处理",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
128
],
"parameters": {
"width": 280,
"height": 256,
"content": "## 🛠️ 数据处理"
},
"typeVersion": 1
},
{
"id": "41703a6c-69a3-4b5b-ad23-8c3355a4dee1",
"name": "格式化工单数据",
"type": "n8n-nodes-base.code",
"position": [
96,
-16
],
"parameters": {
"jsCode": "// N8N Code Node - Zendesk Ticket Formatter\n// This code processes Zendesk ticket data and formats it into clean JSON structure\n\n// Function to format individual ticket data\nfunction formatTicketData(ticketData) {\n const createdAt = new Date(ticketData.created_at);\n const updatedAt = new Date(ticketData.updated_at);\n const now = new Date();\n \n return {\n ticket_id: ticketData.id,\n ticket_url: `https://your-domain.zendesk.com/agent/tickets/${ticketData.id}`,\n subject: ticketData.subject || \"No Subject\",\n priority: ticketData.priority || \"normal\",\n status: ticketData.status,\n created_timestamp: createdAt.toISOString(),\n zendesk_created_at: ticketData.created_at,\n description_preview: cleanDescription(ticketData.description),\n tags: Array.isArray(ticketData.tags) ? ticketData.tags.join(', ') : '',\n requester_id: ticketData.requester_id,\n assignee_id: ticketData.assignee_id || 'Unassigned',\n channel: ticketData.via?.channel || \"unknown\",\n ticket_age_hours: Math.round((now - createdAt) / (1000 * 60 * 60)),\n priority_level: getPriorityLevel(ticketData.priority),\n needs_attention: checkNeedsAttention(ticketData, now, createdAt),\n description: ticketData.description || \"No Description\"\n };\n}\n\n// Helper function to get priority level\nfunction getPriorityLevel(priority) {\n const levels = {\n 'low': 1,\n 'normal': 2,\n 'high': 3,\n 'urgent': 4\n };\n return levels[priority] || 2;\n}\n\n// Helper function to clean description for preview\nfunction cleanDescription(description) {\n if (!description) return \"No description available\";\n \n const cleaned = description\n .replace(/<[^>]*>/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n \n return cleaned.length > 100 ? cleaned.substring(0, 100) + '...' : cleaned;\n}\n\n// Helper function to check if ticket needs attention\nfunction checkNeedsAttention(ticketData, now, createdAt) {\n const ageHours = Math.round((now - createdAt) / (1000 * 60 * 60));\n const hasUrgentTag = (ticketData.tags || []).includes('urgent');\n const isHighPriority = ['high', 'urgent'].includes(ticketData.priority);\n \n return ageHours > 24 || hasUrgentTag || isHighPriority;\n}\n\n// Process all input items\nconst processedItems = [];\n\nfor (const item of $input.all()) {\n const originalTicket = item.json;\n const formattedTicket = formatTicketData(originalTicket);\n \n processedItems.push({\n json: formattedTicket\n });\n}\n\nreturn processedItems;"
},
"typeVersion": 2
},
{
"id": "2525d374-d35a-4c26-8cb0-8b73dcb5c26c",
"name": "数据记录",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
-368
],
"parameters": {
"width": 280,
"height": 240,
"content": "## 📊 数据记录"
},
"typeVersion": 1
},
{
"id": "9a884edc-ba8b-43db-954b-3af4a9787af9",
"name": "记录到 Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
320,
-112
],
"parameters": {
"columns": {
"value": {
"Tags": "={{ $json.tags }}",
"Status": "={{ $json.status }}",
"Subject": "={{ $json.subject }}",
"Priority": "={{ $json.priority }}",
"Ticket ID": "={{ $json.ticket_id }}",
"Ticket URL": "={{ $json.ticket_url }}",
"Age (Hours)": "={{ $json.ticket_age_hours }}",
"Needs Attention": "={{ $json.needs_attention }}",
"Created Timestamp": "={{ $json.created_timestamp }}",
"Zendesk Created At": "={{ $json.zendesk_created_at }}",
"Description Preview": "={{ $json.description_preview }}"
},
"schema": [
{
"id": "Ticket ID",
"type": "string",
"display": true,
"removed": false,
"required": true,
"displayName": "Ticket ID",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Ticket URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Ticket URL",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Subject",
"type": "string",
"display": true,
"required": false,
"displayName": "Subject",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Priority",
"type": "string",
"display": true,
"required": false,
"displayName": "Priority",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Created Timestamp",
"type": "string",
"display": true,
"required": false,
"displayName": "Created Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Zendesk Created At",
"type": "string",
"display": true,
"required": false,
"displayName": "Zendesk Created At",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Description Preview",
"type": "string",
"display": true,
"required": false,
"displayName": "Description Preview",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Tags",
"type": "string",
"display": true,
"required": false,
"displayName": "Tags",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Age (Hours)",
"type": "number",
"display": true,
"required": false,
"displayName": "Age (Hours)",
"defaultMatch": false,
"canBeUsedToMatch": false
},
{
"id": "Needs Attention",
"type": "boolean",
"display": true,
"required": false,
"displayName": "Needs Attention",
"defaultMatch": false,
"canBeUsedToMatch": false
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"Ticket ID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultName": "Pending Tickets"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ctD4fH-PW_h5X4KvnuPWpai_dgaQcedzvdVZN2sKmQY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ctD4fH-PW_h5X4KvnuPWpai_dgaQcedzvdVZN2sKmQY/edit?usp=drivesdk",
"cachedResultName": "Pending Zendesk Tickets"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "kpPEOLCGn963qpoh",
"name": "automations@techdome.ai"
}
},
"typeVersion": 4
},
{
"id": "5cf6fc3f-4ee4-4819-8b41-1f39281acaa3",
"name": "任务管理",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
-352
],
"parameters": {
"width": 280,
"height": 224,
"content": "## ✅ 任务管理"
},
"typeVersion": 1
},
{
"id": "a382eefa-941b-45d1-9936-6ce29cd751cd",
"name": "创建 ClickUp 任务",
"type": "n8n-nodes-base.clickUp",
"position": [
544,
-112
],
"parameters": {
"list": "901412904902",
"name": "={{ $json.subject }}",
"team": "9014871666",
"space": "90143687238",
"folderless": true,
"additionalFields": {
"tags": "={{ $json.tags }}",
"status": "to do",
"dueDate": "={{ $json.created_timestamp }}",
"priority": "={{ $json.priority_level }}"
}
},
"credentials": {
"clickUpApi": {
"id": "gDQJASsbW56RbLoy",
"name": "ClickUp account vivek"
}
},
"typeVersion": 1
},
{
"id": "dbc754e3-990a-430d-b3fc-8b5b5a2dd3c9",
"name": "邮件生成",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
224
],
"parameters": {
"width": 280,
"height": 240,
"content": "## 📧 邮件生成"
},
"typeVersion": 1
},
{
"id": "b2d57a93-f5ec-4058-b2d7-f24d232c2432",
"name": "生成跟进邮件",
"type": "n8n-nodes-base.code",
"position": [
448,
80
],
"parameters": {
"jsCode": "// N8N Code Node - Zendesk Follow-up Email Generator\n// This processes Zendesk ticket data and generates professional follow-up emails\n\n// Input: items[0].json contains the ticket data array\nconst tickets = $input.all();\n\nfunction generateFollowUpEmail(ticketsData) {\n // Filter only pending tickets\n const pendingTickets = ticketsData.filter(ticket => ticket.status === 'pending');\n \n if (pendingTickets.length === 0) {\n return null; // No pending tickets to follow up on\n }\n\n // Group tickets by requester email for personalized emails\n const ticketsByRequester = {};\n pendingTickets.forEach(ticket => {\n // Extract email from description if not directly available\n const emailMatch = ticket.description.match(/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})/);\n const email = emailMatch ? emailMatch[0] : 'customer@company.com';\n \n if (!ticketsByRequester[email]) {\n ticketsByRequester[email] = [];\n }\n ticketsByRequester[email].push(ticket);\n });\n\n const emails = [];\n \n Object.entries(ticketsByRequester).forEach(([email, userTickets]) => {\n const htmlContent = generateEmailHTML(userTickets, email);\n \n emails.push({\n to: email,\n subject: `Follow-up on Your Support Request${userTickets.length > 1 ? 's' : ''} - Action Required`,\n html: htmlContent,\n from: 'support@softwarecompany.com', // Replace with your support email\n ticketCount: userTickets.length,\n ticketIds: userTickets.map(t => t.ticket_id)\n });\n });\n \n return emails;\n}\n\nfunction generateEmailHTML(tickets, customerEmail) {\n const customerName = extractCustomerName(tickets[0].description);\n const currentDate = new Date().toLocaleDateString('en-US', { \n year: 'numeric', \n month: 'long', \n day: 'numeric' \n });\n\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Follow-up on Your Support Request</title>\n <!--[if mso]>\n <xml>\n <o:OfficeDocumentSettings>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n <o:AllowPNG/>\n </o:OfficeDocumentSettings>\n </xml>\n <![endif]-->\n</head>\n<body style=\"margin: 0; padding: 0; font-family: Arial, sans-serif; line-height: 1.4; background-color: #f4f4f4;\">\n <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"background-color: #f4f4f4;\">\n <tr>\n <td align=\"center\" valign=\"top\" style=\"padding: 20px 10px;\">\n <!-- Main Container -->\n <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"600\" style=\"max-width: 600px; background-color: #ffffff;\">\n \n <!-- Header -->\n <tr>\n <td align=\"center\" style=\"background-color: #667eea; color: #ffffff; padding: 30px 20px;\">\n <h1 style=\"margin: 0; font-size: 24px; font-weight: bold; color: #ffffff;\">Support Team Follow-up</h1>\n <p style=\"margin: 10px 0 0 0; font-size: 14px; color: #ffffff;\">We're here to help resolve your issues</p>\n </td>\n </tr>\n \n <!-- Content -->\n <tr>\n <td style=\"padding: 30px 20px;\">\n \n <!-- Greeting -->\n <p style=\"font-size: 16px; color: #333333; margin-bottom: 20px;\">Dear ${customerName},</p>\n <p style=\"font-size: 16px; color: #333333; margin-bottom: 30px; line-height: 1.5;\">We hope this email finds you well. We wanted to follow up on your recent support request${tickets.length > 1 ? 's' : ''} that ${tickets.length > 1 ? 'are' : 'is'} currently pending resolution.</p>\n \n <!-- Tickets -->\n ${tickets.map(ticket => `\n <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"margin: 20px 0; background-color: #f8f9fa; border-left: 4px solid #667eea;\">\n <tr>\n <td style=\"padding: 20px;\">\n \n <!-- Ticket Header -->\n <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"margin-bottom: 15px;\">\n <tr>\n <td align=\"left\">\n <span style=\"background-color: #667eea; color: #ffffff; padding: 6px 12px; font-size: 12px; font-weight: bold; border-radius: 15px; display: inline-block;\">Ticket #${ticket.ticket_id}</span>\n </td>\n <td align=\"right\">\n <span style=\"background-color: #ffc107; color: #856404; padding: 4px 8px; font-size: 11px; font-weight: bold; text-transform: uppercase; border-radius: 10px; display: inline-block; margin-right: 10px;\">Pending</span>\n <span style=\"color: #dc3545; font-size: 12px; font-weight: bold;\">${ticket.ticket_age_hours} hours old</span>\n </td>\n </tr>\n </table>\n \n <!-- Ticket Subject -->\n <h3 style=\"margin: 0 0 10px 0; font-size: 16px; font-weight: bold; color: #333333;\">${cleanSubject(ticket.subject)}</h3>\n \n <!-- Ticket Description -->\n <p style=\"margin: 0; color: #666666; font-size: 14px; line-height: 1.5;\">${cleanDescription(ticket.description)}</p>\n \n </td>\n </tr>\n </table>\n `).join('')}\n \n <!-- CTA Section -->\n <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"margin: 30px 0;\">\n <tr>\n <td align=\"center\">\n <p style=\"font-size: 16px; font-weight: bold; color: #333333; margin-bottom: 20px;\">Need immediate assistance or want to provide additional information?</p>\n <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n <tr>\n <td align=\"center\" style=\"background-color: #667eea; border-radius: 4px;\">\n <a href=\"https://softwarecompany-66332.zendesk.com/hc/en-us\" style=\"display: block; padding: 12px 30px; color: #ffffff; text-decoration: none; font-weight: bold; font-size: 14px;\">Visit Support Portal</a>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n \n <!-- Contact Info Box -->\n <table role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"background-color: #e3f2fd; margin: 20px 0;\">\n <tr>\n <td align=\"center\" style=\"padding: 20px;\">\n <p style=\"margin: 0 0 10px 0; font-weight: bold; color: #333333;\">Quick Response Options:</p>\n <p style=\"margin: 0; color: #666666; line-height: 1.6;\">\n 📧 Reply directly to this email<br>\n 📞 Call us at: 1-800-SUPPORT<br>\n 💬 Live Chat: Available Mon-Fri, 9 AM - 6 PM EST\n </p>\n </td>\n </tr>\n </table>\n \n <!-- Main Content -->\n <p style=\"font-size: 16px; color: #333333; line-height: 1.5; margin: 20px 0;\">Our team is actively working on resolving your ${tickets.length > 1 ? 'requests' : 'request'}, and we appreciate your patience. If you have any additional information that might help us resolve ${tickets.length > 1 ? 'these issues' : 'this issue'} faster, please don't hesitate to reply to this email.</p>\n \n <p style=\"font-size: 16px; color: #333333; line-height: 1.5; margin: 20px 0;\">We value your business and are committed to providing you with the best possible support experience.</p>\n \n <!-- Signature -->\n <p style=\"font-size: 16px; color: #333333; line-height: 1.5; margin: 30px 0 0 0;\">\n Best regards,<br>\n <strong>Customer Support Team</strong><br>\n Software Company\n </p>\n \n </td>\n </tr>\n \n <!-- Footer -->\n <tr>\n <td align=\"center\" style=\"background-color: #f8f9fa; padding: 20px; border-top: 1px solid #dee2e6;\">\n <p style=\"margin: 0 0 10px 0; color: #666666; font-size: 12px;\">This is an automated follow-up email regarding your pending support tickets.</p>\n <p style=\"margin: 0 0 10px 0; color: #666666; font-size: 12px;\">Software Company | 123 Business Ave, Suite 100 | City, State 12345</p>\n <p style=\"margin: 0; color: #666666; font-size: 12px;\">© ${new Date().getFullYear()} Software Company. All rights reserved.</p>\n </td>\n </tr>\n \n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>`;\n}\n\nfunction extractCustomerName(description) {\n // Try to extract name from description\n const namePatterns = [\n /Best regards,\\s*([^\\n\\r]+)/i,\n /Sincerely,\\s*([^\\n\\r]+)/i,\n /Thanks,\\s*([^\\n\\r]+)/i,\n /([A-Z][a-z]+ [A-Z][a-z]+)/\n ];\n \n for (const pattern of namePatterns) {\n const match = description.match(pattern);\n if (match && match[1]) {\n return match[1].trim().replace(/[^\\w\\s]/g, '');\n }\n }\n \n return 'Valued Customer';\n}\n\nfunction cleanSubject(subject) {\n // Remove HTML tags and clean up subject\n return subject.replace(/<[^>]*>/g, '').trim() || 'Support Request';\n}\n\nfunction cleanDescription(description) {\n // Clean HTML and extract first meaningful sentence\n const cleaned = description.replace(/<[^>]*>/g, '').replace(/\\s+/g, ' ').trim();\n const firstSentence = cleaned.split('.')[0];\n return firstSentence.length > 100 ? firstSentence.substring(0, 100) + '...' : firstSentence + '.';\n}\n\n// Process the input data\nconst ticketData = tickets.map(item => item.json).flat();\nconst followUpEmails = generateFollowUpEmail(ticketData);\n\n// Return the generated emails for n8n to process\nif (followUpEmails && followUpEmails.length > 0) {\n return followUpEmails.map(email => ({ json: email }));\n} else {\n return [{ json: { message: \"No pending tickets found for follow-up\" } }];\n}"
},
"typeVersion": 2
},
{
"id": "69c121ab-d596-4f78-abb3-7f31528400d5",
"name": "邮件发送",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
224
],
"parameters": {
"width": 280,
"height": 288,
"content": "## 📤 邮件发送"
},
"typeVersion": 1
},
{
"id": "63310af9-28b6-45b7-99ef-638490caf9e1",
"name": "发送跟进邮件",
"type": "n8n-nodes-base.gmail",
"position": [
800,
80
],
"parameters": {
"toList": [
"={{ $json.to }}"
],
"message": "Follow-up on your pending support request. Please check the detailed information in the HTML version of this email.",
"subject": "={{ $json.subject }}",
"resource": "message",
"htmlMessage": "={{ $json.html }}",
"includeHtml": true,
"additionalFields": {}
},
"credentials": {
"gmailOAuth2": {
"id": "gEIaWCTvGfYjMSb3",
"name": "Gmail credentials"
}
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8c857db1-0f63-4cbb-a869-a7eec9bc9d0a",
"connections": {
"Schedule Trigger": {
"main": [
[
{
"node": "Get Pending Tickets",
"type": "main",
"index": 0
}
]
]
},
"Format Ticket Data": {
"main": [
[
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
},
{
"node": "Generate Follow-up Emails",
"type": "main",
"index": 0
}
]
]
},
"Get Pending Tickets": {
"main": [
[
{
"node": "Filter Pending Tickets",
"type": "main",
"index": 0
}
]
]
},
"Log to Google Sheets": {
"main": [
[
{
"node": "Create ClickUp Task",
"type": "main",
"index": 0
}
]
]
},
"Filter Pending Tickets": {
"main": [
[
{
"node": "Format Ticket Data",
"type": "main",
"index": 0
}
]
]
},
"Generate Follow-up Emails": {
"main": [
[
{
"node": "Send Follow-up Email",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 内容创作, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
统一支持团队绩效仪表板(Zendesk & Freshdesk → Google Sheets + Slack + Gmail)
使用Sheets、Slack和Gmail跨Zendesk和Freshdesk跟踪支持绩效指标
If
Code
Cron
+7
24 节点Rahul Joshi
内容创作
客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
If
Code
Gmail
+10
28 节点Rahul Joshi
内容创作
GoHighLevel管道速度跟踪器和自动化停滞交易提醒
使用GoHighLevel、Gmail和Slack分析管道速度并提醒停滞交易
If
Code
Gmail
+5
25 节点Rahul Joshi
内容创作
使用 Azure OpenAI 和 Google Workspace 自动化 DEI 资格筛选
使用Azure GPT-4o、Google云端硬盘和表格自动进行DEI资格筛选
If
Code
Gmail
+9
19 节点Rahul Joshi
内容创作
待处理付款自动化 - ClickUp集成
使用Google Sheets、ClickUp、Gmail和Slack自动化付款跟踪
If
Gmail
Slack
+4
12 节点Rahul Joshi
内容创作
## 仅限自托管N8N用户:
使用GPT-4o-mini、Google Sheets和Gmail自动化Zendesk支持回复
Code
Gmail
Merge
+6
24 节点Rahul Joshi
内容创作
工作流信息
难度等级
高级
节点数量16
分类2
节点类型8
作者
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
外部链接
在 n8n.io 查看 →
分享此工作流