8
n8n 中文网amn8n.com

使用 GPT-5、gotoHuman 和人工审核从 Gmail 自动回复并创建 Linear 工单

高级

这是一个Ticket Management, AI Chatbot领域的自动化工作流,包含 37 个节点。主要使用 Set, Code, Gmail, Filter, Linear 等节点。 使用 GPT-5、gotoHuman 和人工审核从 Gmail 自动回复并创建 Linear 工单

前置要求
  • Google 账号和 Gmail API 凭证
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {},
  "nodes": [
    {
      "id": "dfc61260-78e0-4fbf-9315-4d4c476bf476",
      "name": "OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1184,
        1408
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-nano",
          "cachedResultName": "gpt-5-nano"
        },
        "options": {}
      },
      "credentials": {},
      "typeVersion": 1.2
    },
    {
      "id": "0d123b6f-f7f7-40d6-918b-d92abf8ae909",
      "name": "OpenAI 聊天模型2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1248,
        2176
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-nano",
          "cachedResultName": "gpt-5-nano"
        },
        "options": {}
      },
      "credentials": {},
      "typeVersion": 1.2
    },
    {
      "id": "6ab4a6ea-8f4a-4faf-a1fe-602e56eb51dc",
      "name": "新邮件",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -2160,
        1024
      ],
      "parameters": {
        "simple": false,
        "filters": {},
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {},
      "typeVersion": 1.2
    },
    {
      "id": "fdc90d21-5935-4fa2-8fbc-4b3da64f2593",
      "name": "AI分类器",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1104,
        1168
      ],
      "parameters": {
        "text": "=From: {{ $('Email to process').item.json.text }}\nTo: {{ $('Email to process').item.json.to.text }}\nSubject: {{ $('Email to process').item.json.subject }}\nBody:\n{{ $('Email to process').item.json.text }}",
        "options": {
          "systemMessage": "=You are a helpful email assistant analyzing an incoming customer email.\nDetermine whether you would flag it as important and please classify the email into one of the following categories:\n- Product question\n- Bug report\n- Feature request\n- Account & Billing\n- Sales opportunity\n- Other\n\n{{ $json.reviews?.length ? (\"Here are some examples of how to classify correctly:\\n\\n\"+$json.reviews.toJsonString()) : \"\" }}\n\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "0e02b39d-83a9-4a43-a76d-685d0c2652a0",
      "name": "AI邮件撰写器",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1168,
        1952
      ],
      "parameters": {
        "text": "=From: {{ $('Email to process').item.json.from.text }}\nTo: {{ $('Email to process').item.json.to.text }}\nSubject: {{ $('Email to process').item.json.subject }}\nBody:\n{{ $('Email to process').item.json.text }}",
        "options": {
          "systemMessage": "={{ $json.prompt }}"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "d6abbaf6-6cd3-4d9d-8dfd-b1541c5bb1e9",
      "name": "设置提示",
      "type": "n8n-nodes-base.set",
      "position": [
        -1360,
        1952
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d1b93765-fd43-4c01-aff9-f96170b77cd9",
              "name": "prompt",
              "type": "string",
              "value": "=You are a helpful email assistant. Please draft a reply to the email passed by the user. If you cannot answer questions or draft a complete reply, incl. placeholders. A user will review your draft after this and can fill in more info. Incl. the body of the email only, we are responding within the thread.\n\n{{ $json?.fields?.['emailReply']?.length ? (\"Here are some previous email replies for emails of the same category to use as reference:\\n\\n---\\n\" + $json?.fields?.['emailReply'].join(\"\\n---\\n\") + \"\\n---\") : \"\" }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "43e66c51-83ee-4f89-bb8a-6cee1125f9af",
      "name": "设置(已编辑)提示词",
      "type": "n8n-nodes-base.set",
      "position": [
        -16,
        2464
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f10b4f0b-3756-48e9-a7f6-51299ad48427",
              "name": "prompt",
              "type": "string",
              "value": "={{ $json.messages[0].content || $('Set Prompt').item.json.prompt }}"
            },
            {
              "id": "9a7c60fe-a782-4660-97fe-a7fc851cbb45",
              "name": "reviewToUpdate",
              "type": "string",
              "value": "={{ $json.reviewId }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "fab0860b-e801-44c9-930a-13a1fcf5c7a6",
      "name": "结构化输出",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -944,
        2176
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"textEmailDraft\": \"Hello Jack...\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "47d105f3-90e9-44dd-9515-fd7b2c702125",
      "name": "结构化输出1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -912,
        1408
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"classifiedAs\": {\n\t\t\t\"enum\": [\n              \"product_question\",\n              \"bug_report\",\n              \"feature_request\",\n              \"account_billing\",\n              \"sales_opportunity\",\n              \"other\"\n            ]\n\t\t},\n\t\t\"important\": {\n\t\t\t\"type\": \"boolean\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "fc471c11-fe38-44ec-bc3c-c7dfbcc6df5a",
      "name": "人工回复",
      "type": "n8n-nodes-base.switch",
      "position": [
        -272,
        1936
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Approved",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "a55f8641-84eb-4043-a573-9958b9606571",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.response }}",
                    "rightValue": "approved"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Rejected",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "c25eb32d-e664-420c-8574-946f9e1c10cf",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.response }}",
                    "rightValue": "rejected"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Retry",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "feaea8d7-d127-4a03-a87d-2269551ab775",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.type }}",
                    "rightValue": "chat"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "fd110b11-0894-462c-9e39-5aea46998f18",
      "name": "回复线程",
      "type": "n8n-nodes-base.gmail",
      "position": [
        656,
        1856
      ],
      "webhookId": "e469300e-9a1f-493f-9c4d-53760c5a68ff",
      "parameters": {
        "message": "={{ $('Human review').item.json.responseValues.emailReply.value }}",
        "options": {
          "appendAttribution": false
        },
        "emailType": "text",
        "messageId": "={{ $('New Email').item.json.id }}",
        "operation": "reply"
      },
      "credentials": {},
      "typeVersion": 2.1
    },
    {
      "id": "f0be69f8-88fa-4088-9ece-6bd78e64f6f1",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        1872
      ],
      "parameters": {
        "color": 7,
        "height": 272,
        "content": "![源示例](https://cdn1.gotohuman.com/public%2Fn8n-templates%2FgotoHuman%20full%20logo%201224px.png?alt=media)"
      },
      "typeVersion": 1
    },
    {
      "id": "1c4548ac-2e8b-4d0e-8830-bf830548436d",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2016,
        944
      ],
      "parameters": {
        "color": 7,
        "width": 1216,
        "height": 624,
        "content": "## 自学习邮件分类器"
      },
      "typeVersion": 1
    },
    {
      "id": "75b0ea4a-6150-486e-9d6f-87f36682c816",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1680,
        1728
      ],
      "parameters": {
        "color": 7,
        "width": 848,
        "height": 624,
        "content": "## 自学习邮件撰写器"
      },
      "typeVersion": 1
    },
    {
      "id": "ba3936b6-06bb-4ec0-b68d-449ef9233b61",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        1728
      ],
      "parameters": {
        "color": 7,
        "width": 848,
        "height": 624,
        "content": "## 人工审核"
      },
      "typeVersion": 1
    },
    {
      "id": "a31def3a-d8fc-42b5-9fba-a1af5b383ea0",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        2384
      ],
      "parameters": {
        "color": 7,
        "width": 848,
        "height": 336,
        "content": "## 人工要求重试"
      },
      "typeVersion": 1
    },
    {
      "id": "a54f2f03-1151-49c4-b9be-0047cb28c05f",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        1744
      ],
      "parameters": {
        "color": 7,
        "width": 432,
        "height": 496,
        "content": "## 发送批准的回复"
      },
      "typeVersion": 1
    },
    {
      "id": "381abe96-ba26-4e8e-8c99-edd3fe18cc44",
      "name": "便签6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        944
      ],
      "parameters": {
        "width": 784,
        "height": 848,
        "content": "gotoHuman - 审核中"
      },
      "typeVersion": 1
    },
    {
      "id": "4f9280c5-c797-4dfc-be7a-e74ede979412",
      "name": "便签8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2944,
        960
      ],
      "parameters": {
        "width": 688,
        "height": 1072,
        "content": "## ✉️ AI邮件助手:自学习分类器、撰写器和Linear工单系统"
      },
      "typeVersion": 1
    },
    {
      "id": "fad0b08b-fccd-4678-9998-435a2dbca491",
      "name": "当点击\"执行工作流\"时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -2160,
        1216
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1aa1df1a-7236-487c-a57a-26e6be7dc8db",
      "name": "邮件已处理",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1568,
        2608
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a030d5b2-9211-4e73-9084-7347de989fbc",
      "name": "便签9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        1744
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 496,
        "content": "## 创建工单"
      },
      "typeVersion": 1
    },
    {
      "id": "69da5fa1-b3be-4c1f-b258-27820d2e078b",
      "name": "创建问题",
      "type": "n8n-nodes-base.linear",
      "position": [
        1328,
        1920
      ],
      "parameters": {
        "title": "={{ $json.output.title }}",
        "teamId": "db67597a-0628-47f1-b38a-9ece6943bfd5",
        "additionalFields": {
          "priorityId": "={{ $json.output.priority }}",
          "description": "={{ $json.output.description }}"
        }
      },
      "credentials": {},
      "typeVersion": 1.1
    },
    {
      "id": "c1db1fb6-d65e-43ba-8aad-f1e9b2142b5d",
      "name": "是错误还是功能请求?",
      "type": "n8n-nodes-base.filter",
      "position": [
        928,
        1920
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1f414994-4be5-4596-a469-3118a1e743d8",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ [\"bug_report\", \"feature_request\"].includes($('Human review').item.json.responseValues.classification.value) }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b32c8129-8716-4fb5-b20b-4dd0ad546325",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1056,
        1920
      ],
      "parameters": {
        "text": "=Here is an email classified as {{ $('Human review').item.json.responseValues.classification.value }}. We are creating a ticket for the product team. I need you to create a title, description and priority(1: UrUrgent, 2: High, 3: Medium, 4: Low)\n\n<Email>\n<Subject>\n{{ $('Email to process').item.json.subject }}\n</Subject>\n<Body>\n{{ $('Email to process').item.json.text }}\n</Body>\n</Email>",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "a34320e8-1d25-4f02-a5b2-ce3aea794b26",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1216,
        2112
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"title\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"priority\": {\n      \"enum\": [1,2,3,4]\n    }\n  },\n  \"required\": [\n    \"title\",\n    \"description\",\n    \"priority\"\n  ]\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "84e414b0-4d0e-486c-974d-361e22b14996",
      "name": "GPT-5-mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1040,
        2112
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-nano",
          "cachedResultName": "gpt-5-nano"
        },
        "options": {}
      },
      "credentials": {},
      "typeVersion": 1.2
    },
    {
      "id": "ea85a5bf-f176-4744-9140-cd360c19c5d7",
      "name": "待处理邮件",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1680,
        1168
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "7f5e2034-6cf1-4481-91ec-df5b4159aba7",
      "name": "是测试运行?",
      "type": "n8n-nodes-base.switch",
      "position": [
        480,
        1952
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Real Email",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "94ce7c5f-9fe9-4f8e-aa85-c5748efc8398",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('New Email').isExecuted }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Test Run",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6fd041ff-bc5e-4ec8-bf3e-8f9ea4c090be",
                    "operator": {
                      "type": "boolean",
                      "operation": "false",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('New Email').isExecuted }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "5926dfed-a397-4754-91f7-2454cb6d1d9e",
      "name": "测试邮件(填充记忆)",
      "type": "n8n-nodes-base.code",
      "position": [
        -1968,
        1200
      ],
      "parameters": {
        "jsCode": "const emails = [\n  {\n    \"id\": \"prod001\",\n    \"threadId\": \"prod001\",\n    \"text\": \"Hi there,\\n\\nI'm evaluating your time tracking software for our team. Can you tell me if it supports multiple projects per user? We have team members who work across 3-4 different projects simultaneously.\\n\\nThanks,\\nSarah Mitchell\\nOperations Manager, Acme Corp\",\n    \"textAsHtml\": \"<p>Hi there,</p><p>I'm evaluating your time tracking software for our team. Can you tell me if it supports multiple projects per user? We have team members who work across 3-4 different projects simultaneously.</p><p>Thanks,<br/>Sarah Mitchell<br/>Operations Manager, Acme Corp</p>\",\n    \"subject\": \"Question about multi-project tracking\",\n    \"date\": \"2025-01-15T09:23:14.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Sarah Mitchell\\\" <sarah.mitchell@acmecorp.com>\"\n    }\n  },\n  {\n    \"id\": \"prod002\",\n    \"threadId\": \"prod002\",\n    \"text\": \"Hello,\\n\\nDoes your software integrate with QuickBooks? We need our time entries to sync directly with our accounting system for invoicing purposes.\\n\\nLooking forward to your response.\\n\\nBest regards,\\nDavid Chen\\nCFO, Bright Solutions Inc.\",\n    \"textAsHtml\": \"<p>Hello,</p><p>Does your software integrate with QuickBooks? We need our time entries to sync directly with our accounting system for invoicing purposes.</p><p>Looking forward to your response.</p><p>Best regards,<br/>David Chen<br/>CFO, Bright Solutions Inc.</p>\",\n    \"subject\": \"QuickBooks integration?\",\n    \"date\": \"2025-01-16T14:45:22.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"David Chen\\\" <dchen@brightsolutions.com>\"\n    }\n  },\n  {\n    \"id\": \"bug001\",\n    \"threadId\": \"bug001\",\n    \"text\": \"Hello,\\n\\nI'm experiencing an issue where the timer keeps stopping randomly. I'll start tracking time and after about 15-20 minutes it just stops on its own. This has happened 3 times today already.\\n\\nI'm using Chrome on Windows 11.\\n\\nPlease help!\\n\\nJohn Parker\\njparker@deltaservices.com\",\n    \"textAsHtml\": \"<p>Hello,</p><p>I'm experiencing an issue where the timer keeps stopping randomly. I'll start tracking time and after about 15-20 minutes it just stops on its own. This has happened 3 times today already.</p><p>I'm using Chrome on Windows 11.</p><p>Please help!</p><p>John Parker<br/>jparker@deltaservices.com</p>\",\n    \"subject\": \"Timer stops automatically - BUG\",\n    \"date\": \"2025-01-15T11:47:29.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"John Parker\\\" <jparker@deltaservices.com>\"\n    }\n  },\n  {\n    \"id\": \"bug002\",\n    \"threadId\": \"bug002\",\n    \"text\": \"Hi,\\n\\nI can't log in to my account. When I enter my password (which I know is correct), I get an error message saying \\\"Invalid credentials\\\". I've tried resetting my password twice but the same thing happens.\\n\\nThis is blocking my entire team from tracking time today.\\n\\nUrgent!\\n\\nLisa Wong\\nProject Manager, Creative Studios\",\n    \"textAsHtml\": \"<p>Hi,</p><p>I can't log in to my account. When I enter my password (which I know is correct), I get an error message saying \\\"Invalid credentials\\\". I've tried resetting my password twice but the same thing happens.</p><p>This is blocking my entire team from tracking time today.</p><p>Urgent!</p><p>Lisa Wong<br/>Project Manager, Creative Studios</p>\",\n    \"subject\": \"URGENT: Cannot log in\",\n    \"date\": \"2025-01-16T07:15:33.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Lisa Wong\\\" <lwong@creativestudios.com>\"\n    }\n  },\n  {\n    \"id\": \"feat001\",\n    \"threadId\": \"feat001\",\n    \"text\": \"Hi,\\n\\nI'd love to see a feature where team members can submit their timesheets for approval at the end of the week. Right now, managers have to manually review everything.\\n\\nA simple \\\"Submit for Approval\\\" button with approval workflows would be really helpful for our team.\\n\\nThanks for considering!\\n\\nMaria Gonzales\\nHR Manager, Zenith Corp\",\n    \"textAsHtml\": \"<p>Hi,</p><p>I'd love to see a feature where team members can submit their timesheets for approval at the end of the week. Right now, managers have to manually review everything.</p><p>A simple \\\"Submit for Approval\\\" button with approval workflows would be really helpful for our team.</p><p>Thanks for considering!</p><p>Maria Gonzales<br/>HR Manager, Zenith Corp</p>\",\n    \"subject\": \"Feature Request: Timesheet approval workflow\",\n    \"date\": \"2025-01-15T14:33:21.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Maria Gonzales\\\" <mgonzales@zenithcorp.com>\"\n    }\n  },\n  {\n    \"id\": \"feat002\",\n    \"threadId\": \"feat002\",\n    \"text\": \"Hello team,\\n\\nWould it be possible to add a Pomodoro timer feature? I use the Pomodoro technique (25 min work, 5 min break) and it would be amazing if your app had built-in support for this.\\n\\nMaybe with customizable work/break intervals?\\n\\nJust a suggestion!\\n\\nAlex Turner\",\n    \"textAsHtml\": \"<p>Hello team,</p><p>Would it be possible to add a Pomodoro timer feature? I use the Pomodoro technique (25 min work, 5 min break) and it would be amazing if your app had built-in support for this.</p><p>Maybe with customizable work/break intervals?</p><p>Just a suggestion!</p><p>Alex Turner</p>\",\n    \"subject\": \"Suggestion: Pomodoro timer\",\n    \"date\": \"2025-01-16T10:18:44.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Alex Turner\\\" <alex@turnerfreelance.com>\"\n    }\n  },\n  {\n    \"id\": \"acct001\",\n    \"threadId\": \"acct001\",\n    \"text\": \"Hi there,\\n\\nI was charged twice for my monthly subscription this month. I see two charges of $49 on my credit card statement, both dated January 15th.\\n\\nCan you please refund one of these charges?\\n\\nMy account email is kevin.brown@startup.io\\n\\nThanks,\\nKevin Brown\",\n    \"textAsHtml\": \"<p>Hi there,</p><p>I was charged twice for my monthly subscription this month. I see two charges of $49 on my credit card statement, both dated January 15th.</p><p>Can you please refund one of these charges?</p><p>My account email is kevin.brown@startup.io</p><p>Thanks,<br/>Kevin Brown</p>\",\n    \"subject\": \"Double charged for subscription\",\n    \"date\": \"2025-01-16T08:23:47.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Billing\\\" <billing@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Kevin Brown\\\" <kevin.brown@startup.io>\"\n    }\n  },\n  {\n    \"id\": \"acct002\",\n    \"threadId\": \"acct002\",\n    \"text\": \"Hello,\\n\\nI need to upgrade from the Professional plan to Enterprise. How do I do this? Will I be charged immediately or will it prorate?\\n\\nAlso, can I get an invoice sent to our accounting department before the charge goes through?\\n\\nRegards,\\nPriya Sharma\\nFinance Director, Global Tech\",\n    \"textAsHtml\": \"<p>Hello,</p><p>I need to upgrade from the Professional plan to Enterprise. How do I do this? Will I be charged immediately or will it prorate?</p><p>Also, can I get an invoice sent to our accounting department before the charge goes through?</p><p>Regards,<br/>Priya Sharma<br/>Finance Director, Global Tech</p>\",\n    \"subject\": \"Upgrading to Enterprise plan\",\n    \"date\": \"2025-01-17T12:15:33.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Billing\\\" <billing@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Priya Sharma\\\" <p.sharma@globaltech.com>\"\n    }\n  },\n  {\n    \"id\": \"sales001\",\n    \"threadId\": \"sales001\",\n    \"text\": \"Hello,\\n\\nWe're a growing agency with about 45 employees and we're looking for a comprehensive time tracking solution. We've been using spreadsheets and it's becoming unmanageable.\\n\\nI'd like to schedule a demo to see if your software would be a good fit for us. We need:\\n- Multi-project tracking\\n- Client billing integration\\n- Detailed reporting\\n- Mobile access\\n\\nAre you available for a call this week?\\n\\nBest regards,\\nSteven Anderson\\nCEO, Anderson Creative Agency\\n+1-555-0123\",\n    \"textAsHtml\": \"<p>Hello,</p><p>We're a growing agency with about 45 employees and we're looking for a comprehensive time tracking solution. We've been using spreadsheets and it's becoming unmanageable.</p><p>I'd like to schedule a demo to see if your software would be a good fit for us. We need:<br/>- Multi-project tracking<br/>- Client billing integration<br/>- Detailed reporting<br/>- Mobile access</p><p>Are you available for a call this week?</p><p>Best regards,<br/>Steven Anderson<br/>CEO, Anderson Creative Agency<br/>+1-555-0123</p>\",\n    \"subject\": \"Demo request for 45-person team\",\n    \"date\": \"2025-01-15T13:29:18.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Sales\\\" <sales@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Steven Anderson\\\" <sanderson@andersoncreative.com>\"\n    }\n  },\n  {\n    \"id\": \"sales002\",\n    \"threadId\": \"sales002\",\n    \"text\": \"Hi,\\n\\nI'm currently using Toggl but I'm not happy with their pricing structure. I saw your product mentioned in a Reddit thread and I'm interested in learning more.\\n\\nDo you offer any migration assistance? I have about 2 years of data I'd need to bring over.\\n\\nAlso, what's your pricing for a solo freelancer?\\n\\nThanks,\\nOlivia Chen\\nFreelance Developer\",\n    \"textAsHtml\": \"<p>Hi,</p><p>I'm currently using Toggl but I'm not happy with their pricing structure. I saw your product mentioned in a Reddit thread and I'm interested in learning more.</p><p>Do you offer any migration assistance? I have about 2 years of data I'd need to bring over.</p><p>Also, what's your pricing for a solo freelancer?</p><p>Thanks,<br/>Olivia Chen<br/>Freelance Developer</p>\",\n    \"subject\": \"Considering switching from Toggl\",\n    \"date\": \"2025-01-16T16:47:52.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Sales\\\" <sales@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Olivia Chen\\\" <olivia@chendev.io>\"\n    }\n  },\n  {\n    \"id\": \"other001\",\n    \"threadId\": \"other001\",\n    \"text\": \"Hi,\\n\\nI'm a student doing research on productivity tools for my master's thesis. Would anyone on your team be available for a brief 20-minute interview about time tracking software development?\\n\\nI'm specifically interested in user behavior patterns and feature adoption.\\n\\nThank you for considering!\\n\\nBest regards,\\nSophie Taylor\\nGraduate Student, MIT\\nsophie.taylor@mit.edu\",\n    \"textAsHtml\": \"<p>Hi,</p><p>I'm a student doing research on productivity tools for my master's thesis. Would anyone on your team be available for a brief 20-minute interview about time tracking software development?</p><p>I'm specifically interested in user behavior patterns and feature adoption.</p><p>Thank you for considering!</p><p>Best regards,<br/>Sophie Taylor<br/>Graduate Student, MIT<br/>sophie.taylor@mit.edu</p>\",\n    \"subject\": \"Research interview request\",\n    \"date\": \"2025-01-15T15:42:33.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Info\\\" <info@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Sophie Taylor\\\" <sophie.taylor@mit.edu>\"\n    }\n  },\n  {\n    \"id\": \"other002\",\n    \"threadId\": \"other002\",\n    \"text\": \"Hello,\\n\\nI'm a tech blogger and I'm writing an article comparing time tracking tools. I'd love to feature your product in the roundup.\\n\\nWould you be able to provide:\\n- High-res logo and screenshots\\n- A quote about your product vision\\n- Any upcoming features you'd like to highlight\\n\\nMy blog gets about 50K monthly visitors in the productivity/SaaS space.\\n\\nLet me know!\\n\\nCheers,\\nJason Peters\\nProductivityGeek.com\",\n    \"textAsHtml\": \"<p>Hello,</p><p>I'm a tech blogger and I'm writing an article comparing time tracking tools. I'd love to feature your product in the roundup.</p><p>Would you be able to provide:<br/>- High-res logo and screenshots<br/>- A quote about your product vision<br/>- Any upcoming features you'd like to highlight</p><p>My blog gets about 50K monthly visitors in the productivity/SaaS space.</p><p>Let me know!</p><p>Cheers,<br/>Jason Peters<br/>ProductivityGeek.com</p>\",\n    \"subject\": \"Press inquiry - blog feature\",\n    \"date\": \"2025-01-16T12:54:17.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Info\\\" <info@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Jason Peters\\\" <jason@productivitygeek.com>\"\n    }\n  }\n]\nreturn emails.map(email => ({ json: email }));"
      },
      "typeVersion": 2
    },
    {
      "id": "8df0c201-5070-4b78-a4c9-8e5c55d55f51",
      "name": "测试邮件第二批",
      "type": "n8n-nodes-base.code",
      "position": [
        -1968,
        1376
      ],
      "parameters": {
        "jsCode": "const emails = [\n  {\n    \"id\": \"prod003\",\n    \"threadId\": \"prod003\",\n    \"text\": \"Good morning,\\n\\nWhat's the difference between your Professional and Enterprise plans? I see the pricing page but I'm not clear on what additional features we'd get with Enterprise.\\n\\nWe're a team of about 25 people.\\n\\nRegards,\\nMichael Thompson\\nIT Director, Nova Tech\",\n    \"textAsHtml\": \"<p>Good morning,</p><p>What's the difference between your Professional and Enterprise plans? I see the pricing page but I'm not clear on what additional features we'd get with Enterprise.</p><p>We're a team of about 25 people.</p><p>Regards,<br/>Michael Thompson<br/>IT Director, Nova Tech</p>\",\n    \"subject\": \"Professional vs Enterprise plan\",\n    \"date\": \"2025-01-18T08:34:51.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Michael Thompson\\\" <m.thompson@novatech.com>\"\n    }\n  },\n  {\n    \"id\": \"bug003\",\n    \"threadId\": \"bug003\",\n    \"text\": \"Hi Support,\\n\\nThere's a bug with the mobile app. When I edit a time entry, it duplicates instead of updating. So now I have multiple entries for the same time period and my reports are all wrong.\\n\\nI'm on iPhone 14, iOS 17, app version 2.3.1\\n\\nCan you fix this and help me delete the duplicates?\\n\\nThank you,\\nAnna Kowalski\",\n    \"textAsHtml\": \"<p>Hi Support,</p><p>There's a bug with the mobile app. When I edit a time entry, it duplicates instead of updating. So now I have multiple entries for the same time period and my reports are all wrong.</p><p>I'm on iPhone 14, iOS 17, app version 2.3.1</p><p>Can you fix this and help me delete the duplicates?</p><p>Thank you,<br/>Anna Kowalski</p>\",\n    \"subject\": \"Mobile app duplicating time entries\",\n    \"date\": \"2025-01-18T15:22:07.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Anna Kowalski\\\" <anna.k@digitalmarketing.co>\"\n    }\n  },\n  {\n    \"id\": \"feat003\",\n    \"threadId\": \"feat003\",\n    \"text\": \"Hi,\\n\\nIt would be great if we could set hourly rate goals or budgets for projects. For example, if a project has a 100-hour budget, the system could warn us when we're approaching that limit.\\n\\nThis would help us stay within scope on client projects.\\n\\nBest regards,\\nSamantha Lee\\nAgency Owner\",\n    \"textAsHtml\": \"<p>Hi,</p><p>It would be great if we could set hourly rate goals or budgets for projects. For example, if a project has a 100-hour budget, the system could warn us when we're approaching that limit.</p><p>This would help us stay within scope on client projects.</p><p>Best regards,<br/>Samantha Lee<br/>Agency Owner</p>\",\n    \"subject\": \"Feature idea: Project budget tracking\",\n    \"date\": \"2025-01-17T11:27:39.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Samantha Lee\\\" <sam@leeagency.com>\"\n    }\n  },\n  {\n    \"id\": \"acct003\",\n    \"threadId\": \"acct003\",\n    \"text\": \"Hi,\\n\\nI need to update the credit card on file for my account. The current one is expiring at the end of this month.\\n\\nI don't see an option to update payment method in my account settings. Can you help?\\n\\nThanks,\\nRobert Kim\",\n    \"textAsHtml\": \"<p>Hi,</p><p>I need to update the credit card on file for my account. The current one is expiring at the end of this month.</p><p>I don't see an option to update payment method in my account settings. Can you help?</p><p>Thanks,<br/>Robert Kim</p>\",\n    \"subject\": \"Update payment method\",\n    \"date\": \"2025-01-18T09:42:19.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Billing\\\" <billing@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Robert Kim\\\" <rkim@architecturefirm.com>\"\n    }\n  },\n  {\n    \"id\": \"sales003\",\n    \"threadId\": \"sales003\",\n    \"text\": \"Good afternoon,\\n\\nOur company is evaluating time tracking solutions and we're considering 3 vendors, including yourselves. We need to make a decision by end of month.\\n\\nCan you provide:\\n1. A detailed quote for 30 users (Enterprise plan)\\n2. Information about your SLA and support options\\n3. Security certifications (we need SOC 2 compliance)\\n4. References from similar-sized companies\\n\\nPlease send at your earliest convenience.\\n\\nRegards,\\nMark Richardson\\nVP of Operations, TechVentures Inc.\\nmark.richardson@techventures.com\",\n    \"textAsHtml\": \"<p>Good afternoon,</p><p>Our company is evaluating time tracking solutions and we're considering 3 vendors, including yourselves. We need to make a decision by end of month.</p><p>Can you provide:<br/>1. A detailed quote for 30 users (Enterprise plan)<br/>2. Information about your SLA and support options<br/>3. Security certifications (we need SOC 2 compliance)<br/>4. References from similar-sized companies</p><p>Please send at your earliest convenience.</p><p>Regards,<br/>Mark Richardson<br/>VP of Operations, TechVentures Inc.<br/>mark.richardson@techventures.com</p>\",\n    \"subject\": \"RFP: Time tracking solution for 30 users\",\n    \"date\": \"2025-01-17T14:33:27.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Sales\\\" <sales@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Mark Richardson\\\" <mark.richardson@techventures.com>\"\n    }\n  },\n  {\n    \"id\": \"other003\",\n    \"threadId\": \"other003\",\n    \"text\": \"Hi team,\\n\\nJust wanted to say thanks for making such a great product! I've been using it for 6 months now and it's completely changed how I manage my freelance business.\\n\\nThe reports feature especially has made client invoicing so much easier.\\n\\nKeep up the great work!\\n\\nBest,\\nAmanda Foster\",\n    \"textAsHtml\": \"<p>Hi team,</p><p>Just wanted to say thanks for making such a great product! I've been using it for 6 months now and it's completely changed how I manage my freelance business.</p><p>The reports feature especially has made client invoicing so much easier.</p><p>Keep up the great work!</p><p>Best,<br/>Amanda Foster</p>\",\n    \"subject\": \"Thank you!\",\n    \"date\": \"2025-01-17T16:37:48.000Z\",\n    \"to\": {\n      \"text\": \"\\\"Support\\\" <support@timetracker.com>\"\n    },\n    \"from\": {\n      \"text\": \"\\\"Amanda Foster\\\" <amanda@fosterfreelance.com>\"\n    }\n  }\n]\nreturn emails.map(email => ({ json: email }));"
      },
      "typeVersion": 2
    },
    {
      "id": "190f9c37-cf53-4476-8e2c-8d154e5be771",
      "name": "无操作",
      "type": "n8n-nodes-base.noOp",
      "position": [
        656,
        2064
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d90c56e0-894a-4433-adf4-6717cad35f13",
      "name": "便签10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1648,
        1872
      ],
      "parameters": {
        "color": 7,
        "height": 272,
        "content": "!["
      },
      "typeVersion": 1
    },
    {
      "id": "95833053-fe64-4487-93c9-a69bf746a865",
      "name": "便签11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1488,
        1088
      ],
      "parameters": {
        "color": 7,
        "height": 272,
        "content": "![Source example](https://cdn1.gotohuman.com/public%2Fn8n-templates%2FgotoHuman%20full%20logo%201224px.png?alt=media)"
      },
      "typeVersion": 1
    },
    {
      "id": "263697ea-b5f2-4d6d-984d-496b631f6fcd",
      "name": "Fetch approved classification examples",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1408,
        1168
      ],
      "parameters": {
        "url": "https://api.gotohuman.com/fetchResponses",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "formId",
              "value": ""
            },
            {
              "name": "fieldIds",
              "value": "meta.emailText,classification"
            },
            {
              "name": "approvedValuesOnly",
              "value": "true"
            }
          ]
        },
        "nodeCredentialType": "gotoHumanApi"
      },
      "credentials": {},
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "106f6538-4407-4718-89b5-d7e53a1e2665",
      "name": "Human review",
      "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
      "position": [
        -544,
        1952
      ],
      "webhookId": "e576b136-bd7b-41ba-8bb7-3bc75d5baec7",
      "parameters": {
        "fields": {
          "value": {
            "email": "={{ $('Email to process').item.json.textAsHtml }}",
            "sender": "={{ $('Email to process').item.json.from.text }}",
            "emailReply": "={{ $json.output?.textEmailDraft ? {ai: {prompt: $('Set Prompt').item.json.prompt}, content: $json.output?.textEmailDraft} : \"No reply needed - FYI only\" }}",
            "classification": "={{ {default: $('AI Classifier').item.json.output.classifiedAs} }}"
          },
          "schema": [
            {
              "id": "sender",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sender (textShort)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email (emailHtml)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "classification",
              "type": "object",
              "display": true,
              "required": false,
              "displayName": "classification (dropdown)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "emailReply",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "emailReply (text)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "metaSelect": "keyValue",
        "metaKeyValues": {
          "metaArray": [
            {
              "key": "emailText",
              "value": "={{ $('Email to process').item.json.text }}"
            }
          ]
        },
        "additionalFields": {
          "updateForReviewId": "={{ $('Set (edited) prompt').isExecuted ? $('Set (edited) prompt').item.json.reviewToUpdate : null }}"
        },
        "reviewTemplateID": {
          "__rl": true,
          "mode": "list"
        }
      },
      "credentials": {},
      "typeVersion": 1
    },
    {
      "id": "ef073a1e-41a5-4307-9845-b604fb22d618",
      "name": "Fetch approved email examples",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1568,
        1952
      ],
      "parameters": {
        "url": "https://api.gotohuman.com/fetchResponses",
        "options": {},
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "formId",
              "value": ""
            },
            {
              "name": "fieldIds",
              "value": "emailReply"
            },
            {
              "name": "approvedValuesOnly",
              "value": "true"
            },
            {
              "name": "groupByField",
              "value": "true"
            },
            {
              "name": "filterResponseValues",
              "value": "={{\n[\n  {\n    \"field\": \"classification.value\",\n    \"operation\": \"==\",\n    \"value\": $json.output.classifiedAs\n  }\n].toJsonString()\n}}"
            }
          ]
        },
        "nodeCredentialType": "gotoHumanApi"
      },
      "credentials": {},
      "typeVersion": 4.2,
      "alwaysOutputData": true
    }
  ],
  "pinData": {},
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Create an issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Email": {
      "main": [
        [
          {
            "node": "Email to process",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No Action": {
      "main": [
        [
          {
            "node": "Email Processed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-5-mini": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set Prompt": {
      "main": [
        [
          {
            "node": "AI Email Writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Human review": {
      "main": [
        [
          {
            "node": "Human response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is test run?": {
      "main": [
        [
          {
            "node": "Reply to thread",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Is bug of feature request?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Classifier": {
      "main": [
        [
          {
            "node": "Fetch approved email examples",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Human response": {
      "main": [
        [
          {
            "node": "Is test run?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Action",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set (edited) prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Email Writer": {
      "main": [
        [
          {
            "node": "Human review",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create an issue": {
      "main": [
        [
          {
            "node": "Email Processed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email Processed": {
      "main": [
        [
          {
            "node": "Email to process",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reply to thread": {
      "main": [
        [
          {
            "node": "Is bug of feature request?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email to process": {
      "main": [
        [],
        [
          {
            "node": "Fetch approved classification examples",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Classifier",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output": {
      "ai_outputParser": [
        [
          {
            "node": "AI Email Writer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Email Writer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output1": {
      "ai_outputParser": [
        [
          {
            "node": "AI Classifier",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Set (edited) prompt": {
      "main": [
        [
          {
            "node": "AI Email Writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test Emails 2nd batch": {
      "main": [
        [
          {
            "node": "Email to process",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Is bug of feature request?": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test Emails (to fill memory)": {
      "main": [
        []
      ]
    },
    "Fetch approved email examples": {
      "main": [
        [
          {
            "node": "Set Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Test Emails 2nd batch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch approved classification examples": {
      "main": [
        [
          {
            "node": "AI Classifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 工单管理, AI 聊天机器人

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量37
分类2
节点类型16
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
gotoHuman

gotoHuman

@gotohuman

Approve critical actions in gotoHuman’s customizable review interface and edit AI outputs manually or by looping back to your workflow. Ensure AI-generated content is on-brand, messages to customers are accurate, and high-stakes decisions are made by humans.

外部链接
在 n8n.io 查看

分享此工作流