8
n8n 한국어amn8n.com

모든 산업을 위한 AI 기반 스마트 상담 및 예약 어시스턴트

중급

이것은Support Chatbot, AI Chatbot분야의자동화 워크플로우로, 12개의 노드를 포함합니다.주로 If, Code, Wait, Gmail, GmailTrigger 등의 노드를 사용하며. Gmail 및 Gemini AI를 사용한 자동화된 이메일 문의 처리 및 라우팅

사전 요구사항
  • Google 계정 및 Gmail API 인증 정보
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Gemini API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "Jvq4AmoNIbbAwo5x",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "AI-Powered Smart Inquiry & Booking Assistant for Any Industry",
  "tags": [],
  "nodes": [
    {
      "id": "e39522a9-4024-4b8e-84c0-4d77cd49e266",
      "name": "Gmail 트리거",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -500,
        120
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "sender": "acdert@gmail.com"
        },
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "PcTqvGU9uCunfltE",
          "name": "Gmail account - test"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "92249d18-6db6-4e2b-a8c6-7cdaabf68360",
      "name": "AI 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -280,
        120
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "You are a smart AI assistant for [Business Name] (e.g., Cool Realty, AutoDeals, HealthPlus).\n\nBased on the customer’s message, decide the intent:\n\n\"check_info\" → if they request product/service availability, pricing, or details\n\n\"forward_action\" → if they want to book, buy, confirm, schedule, or take the next step\n\nReturn only one JSON including:\n\naction: either \"check_info\" or \"forward_action\"\n\nreasoning: brief summary of how you inferred the action\n\ndata_extracted: structured info from the email (e.g., name, date, service, etc.)\n\nreply: full, professional, human-like response to the user’s message\n\nBehavior logic:\n\nAssume 70% availability for requested service/product\n\nRandomly generate sample details (features, price, timelines, etc.)\n\nIf not available, suggest alternatives\n\nUse a warm, helpful, professional tone. Output only the JSON. No extra text.\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "1e6c541e-30c6-4a4b-86fd-8bc31ca4c798",
      "name": "Google Gemini 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -280,
        340
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.5-pro"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "RvSkIBjP48ORJKhU",
          "name": "Google Gemini(PaLM) Api account - test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d98d2938-f78e-4d0d-a89f-a2629f58c1a9",
      "name": "HTTP 요청",
      "type": "n8n-nodes-base.httpRequestTool",
      "disabled": true,
      "position": [
        -60,
        320
      ],
      "parameters": {
        "url": "=https://google.serper.dev/search",
        "method": "POST",
        "options": {
          "redirect": {
            "redirect": {}
          }
        },
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "=q",
              "value": "={{ $fromAI('parameters0_Value', ``, 'string') }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-KEY",
              "value": "b05bf2fc7c01a8a70ecac675eafeb00777c8db22"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5755463a-5ef3-409b-9c06-e1acb85e14e1",
      "name": "코드",
      "type": "n8n-nodes-base.code",
      "position": [
        60,
        120
      ],
      "parameters": {
        "jsCode": "const output = [];\n\nfor (const item of $input.all()) {\n  // 1. Grab the raw string from the 'output' field\n  let raw = item.json.output;\n  if (typeof raw !== 'string') {\n    // nothing to do\n    output.push({ json: {} });\n    continue;\n  }\n\n  // 2. Remove `````` fences\n  raw = raw.replace(/``````/g, '').trim();\n\n  // 3. Extract the JSON payload between the first { and last }\n  const start = raw.indexOf('{');\n  const end = raw.lastIndexOf('}');\n  const jsonString = (start !== -1 && end !== -1)\n    ? raw.substring(start, end + 1)\n    : raw;\n\n  // 4. Attempt to parse\n  try {\n    const parsed = JSON.parse(jsonString);\n    output.push({ json: parsed });\n  } catch (e) {\n    // on error, output the raw string and error\n    output.push({\n      json: {\n        error: e.message,\n        raw: jsonString\n      }\n    });\n  }\n}\n\nreturn output;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ba012b2b-8207-4639-b57b-79956c5bdba8",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        460,
        120
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e4cc28d0-bee8-475a-b0fb-fa446fbfb954",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.action }}",
              "rightValue": "check_availability"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "cbae6b70-6d91-4973-b149-6a960515f06b",
      "name": "Forward booking email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        720,
        200
      ],
      "webhookId": "482cede1-d0e5-4556-a1f7-e5c836dc8ae7",
      "parameters": {
        "sendTo": "abc@gmail.com",
        "message": "=Name : {{ $json.customer_data.name }}\nEmail : {{ $json.customer_data.email }}\nPhone: {{ $json.customer_data.phone }}\nOriginal Message: {{ $json.customer_data.message }}\n\nInternal Note: {{ $json.internal_note }}\n\nSummary : {{ $json.booking_summary }}",
        "options": {},
        "subject": "Inquiry Details",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "PcTqvGU9uCunfltE",
          "name": "Gmail account - test"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "7f784192-0b32-437c-bd2a-6ecb4b51f2c8",
      "name": "availability check email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        720,
        20
      ],
      "webhookId": "482cede1-d0e5-4556-a1f7-e5c836dc8ae7",
      "parameters": {
        "sendTo": "={{ $json.customer_data.email }}",
        "message": "={{ $('Code').item.json.email_response }}",
        "options": {},
        "subject": "Inquiry Details",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "PcTqvGU9uCunfltE",
          "name": "Gmail account - test"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "99fc6c79-6888-4093-968b-668f8cec525b",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -520,
        -160
      ],
      "parameters": {
        "width": 780,
        "height": 240,
        "content": "## Workflow Overview 📧\n\nThis workflow automates the processing of any inquiry emails:\n\n1.  **Gmail Trigger**: Initiates the workflow upon receiving a new email.\n2.  **AI Agent**: Analyzes the email content to determine the customer's intent (availability check or direct booking).\n3.  **Code**: Parses the JSON output from the AI Agent.\n4.  **If**: Routes the workflow based on the detected intent.\n5.  **Gmail Nodes**: Sends appropriate responses or forwards booking details."
      },
      "typeVersion": 1
    },
    {
      "id": "0333faf4-3690-487a-a151-ac329c1eacd8",
      "name": "AI 에이전트 and Code Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        400
      ],
      "parameters": {
        "color": 5,
        "width": 600,
        "height": 320,
        "content": "## AI Agent and Code Node Explained 🤖\n\n-   **AI Agent**: This node acts as an intelligent assistant, powered by the Google Gemini Chat Model (although the Google Gemini Chat Model node currently has execution issues). It processes incoming emails and classifies them as either an \"availability check\" or a \"direct booking request\" based on the prompt instructions. It also attempts to extract relevant customer data and generate appropriate responses or internal notes.\n-   **HTTP Request (Disabled)**: This node is currently disabled and not used by the AI Agent, but it is set up to make a search request to Serper.\n-   **Code**: This node is crucial for parsing the raw string output from the AI Agent into a usable JSON format. It handles potential formatting inconsistencies by removing markdown fences and extracting the valid JSON payload, making the data accessible for subsequent nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "1772a67e-ac94-45f5-b37d-1ef3084b9891",
      "name": "Conditional Routing and 이메일 Responses",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        300,
        -280
      ],
      "parameters": {
        "color": 4,
        "width": 600,
        "height": 280,
        "content": "## Conditional Routing & Email Responses 🚦\n\n-   **Wait**: This node is used for wait for data.\n-   **If**: This node acts as a decision point, checking the `action` field from the AI Agent's parsed output. If the `action` is `check_availability`, the workflow proceeds to the \"availability check email\" node.\n-   **availability check email**: This Gmail node sends an email directly to the customer with availability details, as provided by the AI Agent's `email_response`.\n-   **Forward booking email**: If the `If` node's condition is not met (meaning the action is `forward_booking`), this Gmail node is triggered. It forwards the customer's booking request details and internal notes to a predefined internal email address (`@gmail.com`) for manual processing."
      },
      "typeVersion": 1
    },
    {
      "id": "3cfad505-0925-4b8d-b275-c7e319764925",
      "name": "대기 for Data",
      "type": "n8n-nodes-base.wait",
      "position": [
        280,
        120
      ],
      "webhookId": "4e0cbcd3-6378-4ff8-bda1-cd43550f3088",
      "parameters": {},
      "typeVersion": 1.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1dd6ab03-d62a-4ed1-b2da-1f254160ff20",
  "connections": {
    "ba012b2b-8207-4639-b57b-79956c5bdba8": {
      "main": [
        [
          {
            "node": "7f784192-0b32-437c-bd2a-6ecb4b51f2c8",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "cbae6b70-6d91-4973-b149-6a960515f06b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Wait for Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Data": {
      "main": [
        [
          {
            "node": "ba012b2b-8207-4639-b57b-79956c5bdba8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 지원 챗봇, AI 챗봇

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수12
카테고리2
노드 유형9
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34