8
n8n 한국어amn8n.com

Google 캘린더와 스프레드시트를 사용하여 AI 기반 가상 레세ption어 생성

중급

이것은Miscellaneous, AI Chatbot, Multimodal AI분야의자동화 워크플로우로, 12개의 노드를 포함합니다.주로 GoogleSheets, Agent, GoogleSheetsTool, GoogleCalendarTool, ChatTrigger 등의 노드를 사용하며. Google 일정과 테이블을 사용하여 AI로운 가상 대리인을 만듭니다.

사전 요구사항
  • Google Sheets API 인증 정보
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "a2decaa80798f56a13dbca1aa742181dfea463e822cc650b5a716ef8b115667a"
  },
  "nodes": [
    {
      "id": "e38100f0-54dd-4a75-a3bd-3b6295ca96d0",
      "name": "대화 메모리",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        336,
        16
      ],
      "parameters": {
        "contextWindowLength": 15
      },
      "typeVersion": 1.3
    },
    {
      "id": "22a387d3-ffdd-4221-b27d-dde8711c1186",
      "name": "캘린더 가용성 확인",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        720,
        16
      ],
      "parameters": {
        "options": {},
        "timeMax": "={{ $fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string') }}",
        "timeMin": "={{ $fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "ris362720@gmail.com",
          "cachedResultName": "ris362720@gmail.com"
        },
        "resource": "calendar"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ZKFdGvnaSxLoLCiO",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "f62ef70f-6295-4a02-8342-83d3a67d5429",
      "name": "캘린더 약속 예약",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        592,
        16
      ],
      "parameters": {
        "end": "={{ $fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string') }}",
        "start": "={{ $fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string') }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "ris362720@gmail.com",
          "cachedResultName": "ris362720@gmail.com"
        },
        "additionalFields": {
          "summary": "={{ $fromAI('event_title', `Event title with customer name and service`, 'string') }}",
          "description": "={{ $fromAI('event_description', `Detailed event description including: Business name, Service type, Duration, Customer name, Phone, Special notes`, 'string') }}"
        },
        "useDefaultReminders": false
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "ZKFdGvnaSxLoLCiO",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ca5ad6d5-227f-4776-9f37-ed9497d838d9",
      "name": "약속 기록 저장",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        464,
        16
      ],
      "parameters": {
        "columns": {
          "value": {
            "summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('summary', `summary conversation`, 'string') }}",
            "event_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('event_id', ``, 'string') }}",
            "services": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('services', ``, 'string') }}",
            "patient name ": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('patient_name_', ``, 'string') }}",
            "patient number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('patient_number', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "patient number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "patient number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "patient name ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "patient name ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "event_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "event_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "summary",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "services",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "services",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1454968607,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit#gid=1454968607",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit?usp=drivesdk",
          "cachedResultName": "Bussiness  details"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "fGbQfgGA6gTKu9Jd",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "c519dbd4-c95e-4c12-bd46-ccb76d4301ca",
      "name": "구조화된 출력 파서",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "disabled": true,
      "position": [
        848,
        16
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"ai_reply\": \"I'd be happy to help you! What service are you interested in booking today?\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "ba1c4cff-5e5e-487a-952e-60c886cd0fb8",
      "name": "채팅 메시지 수신 시",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -544,
        -208
      ],
      "webhookId": "73eb01dc-fa71-4f00-b3e8-17e716ef86f6",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "02fce16f-b548-4db3-a5c4-e6b06c4d0f55",
      "name": "OpenAI 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        208,
        16
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "TEPbLQLrisXKXcU1",
          "name": "n8n free OpenAI API credits"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "52494195-7502-473f-a254-afb53bf89a74",
      "name": "OpenAI 채팅 모델1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        928,
        224
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "TEPbLQLrisXKXcU1",
          "name": "n8n free OpenAI API credits"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2",
      "name": "비즈니스 세부 정보 가져오기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -176,
        -208
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit?usp=drivesdk",
          "cachedResultName": "Bussiness  details"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "fGbQfgGA6gTKu9Jd",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "f0752315-6a90-48df-a8fe-9dda53d2c58d",
      "name": "스티키 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        -336
      ],
      "parameters": {
        "color": 3,
        "width": 416,
        "height": 272,
        "content": "## Get Business Details\nPulls service list, hours, policies, and AI personality from Google Sheets.  \nProvides the AI with the business-specific context.  "
      },
      "typeVersion": 1
    },
    {
      "id": "b4ebcd48-a651-4bad-b7c3-dd6939bea1ed",
      "name": "스티키 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        -320
      ],
      "parameters": {
        "color": 4,
        "width": 976,
        "height": 528,
        "content": "## AI Receptionist Agent  \nHandles customer chat with GPT + business context,  \nanswers questions, books appointments via Google Calendar,  \nand saves appointment records into Google Sheets.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "4c6250f1-093a-49c1-a496-b8b883ca4787",
      "name": "AI 리셉셔니스트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        464,
        -208
      ],
      "parameters": {
        "text": "={{ $('When chat message received').item.json.chatInput }}",
        "options": {
          "systemMessage": "=# {{ $json['ai_name '] }} - {{ $json.business_name }} Virtual Receptionist\n\nYou are {{ $json['ai_name '] }}, the {{ $json.ai_personality }} virtual receptionist at **{{ $json.business_name }}**. Your role is to {{ $json.ai_role }}\n\n## BUSINESS ESSENTIALS\n\n**Type**: {{ $json[' business_type'] }}\n**Location**:  {{ $json[' location'] }}\n**Hours**:  {{ $json[' working_hours '] }}\n**Currency**: {{ $json.currency }}\n\n### Services & Pricing\n{{ $json.services }}\n\n## COMMUNICATION STYLE\n- **Tone**: {{ $json.ai_personality }}\n- **Length**: 2-3 sentences per response\n- **Approach**: Natural conversation, not robotic\n- **Use names**: Once provided, use customer's name\n\n## BOOKING WORKFLOW\n1. **Understand need**: Service type, timing preference\n2. **Check availability**: Use checkAvailability tool with business calendar\n3. **Gather details**: Name, phone number, email (optional)\n4. **Confirm booking**: Use bookAppointment tool\n5. **Save data**: Use captureCustomerData and saveAppointment tools\ntime now: {{ $now }}\n\n## KEY GUIDELINES\n\n### ✅ DO\n- Welcome warmly: \"Hello! I'm {{ $json['ai_name '] }} from {{ $json.business_name }}\"\n- Offer alternatives if requested time unavailable\n- Prioritize emergencies if emergency services available\n- Explain pricing clearly when asked\n- Use all available tools for complete booking process\n\n### ❌ DON'T\n- Give medical/professional advice outside your scope\n- Book outside business hours\n- Repeat questions already answered\n- Ask for unnecessary personal information\n- Provide vague responses about availability\n\n## EMERGENCY PROTOCOL\n{% if $('Select Business Context').item.json.emergency_available %}\nEmergencies are available. Prioritize urgent requests and offer same-day slots when possible.\n{% endif %}\n\n## BUSINESS CONTEXT\n\n- Timezone: {{ $json['timezone '] }}\n- Advance booking limit:{{ $json[' booking_advance_days '] }}  days\n- Cancellation policy: {{ $json['cancellation_hours '] }} hours notice\n\n---\nProvide responses in this JSON format:\n{\n  \"ai_reply\": \"Your helpful and personalized response here\"\n}\n\n**Remember**: You're representing {{ $json.business_name }}. Be helpful, accurate, and maintain the professional standard they expect."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    }
  ],
  "pinData": {},
  "connections": {
    "02fce16f-b548-4db3-a5c4-e6b06c4d0f55": {
      "ai_languageModel": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "52494195-7502-473f-a254-afb53bf89a74": {
      "ai_languageModel": [
        [
          {
            "node": "c519dbd4-c95e-4c12-bd46-ccb76d4301ca",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "e38100f0-54dd-4a75-a3bd-3b6295ca96d0": {
      "ai_memory": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2": {
      "main": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ca5ad6d5-227f-4776-9f37-ed9497d838d9": {
      "ai_tool": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "c519dbd4-c95e-4c12-bd46-ccb76d4301ca": {
      "ai_outputParser": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "f62ef70f-6295-4a02-8342-83d3a67d5429": {
      "ai_tool": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "ba1c4cff-5e5e-487a-952e-60c886cd0fb8": {
      "main": [
        [
          {
            "node": "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "22a387d3-ffdd-4221-b27d-dde8711c1186": {
      "ai_tool": [
        [
          {
            "node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

중급 - 기타, AI 챗봇, 멀티모달 AI

유료인가요?

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

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

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

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34