음성 예약 도구
고급
이것은Support Chatbot, AI Chatbot분야의자동화 워크플로우로, 18개의 노드를 포함합니다.주로 Set, Switch, Webhook, HttpRequest, RespondToWebhook 등의 노드를 사용하며. 사용VAPI및Cal.com进行语音预约
사전 요구사항
- •HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
- •대상 API의 인증 정보가 필요할 수 있음
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "uPrkBTcWYNleMzSM",
"meta": {
"instanceId": "41a93cc6f329d5755684ac69c9a86d5c75d7dc780eea0b60d82055e6149e455f",
"templateCredsSetupCompleted": true
},
"name": "Appointment Booking Voice Agent",
"tags": [],
"nodes": [
{
"id": "6adc4f2f-867e-49dd-9179-cf55f0a3f56d",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"disabled": true,
"position": [
-1408,
96
],
"webhookId": "308f0eec-8459-4e6c-bf25-5cd9b2c31ad6",
"parameters": {
"path": "308f0eec-8459-4e6c-bf25-5cd9b2c31ad6",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "322ff7ac-9c2c-49e9-a429-ab91d9b9f2bb",
"name": "스위치",
"type": "n8n-nodes-base.switch",
"position": [
-592,
96
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Check Availability",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "813e4843-4769-4ed8-89d4-4a3969913d51",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Webhook').item.json.body.message.toolCalls[0].function.name }}",
"rightValue": "check-availability"
}
]
},
"renameOutput": true
},
{
"outputKey": "Book Appointment",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ecb56d1d-336f-4504-b69b-ad635d1a6b24",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Webhook').item.json.body.message.toolWithToolCallList[0].function.name }}",
"rightValue": "book-appointment"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "ee168a09-1bb7-4080-b96e-8b20fc24b86c",
"name": "변수 설정",
"type": "n8n-nodes-base.set",
"position": [
-1184,
96
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d9554d41-2307-4f97-967b-ca8b72c181bb",
"name": "username",
"type": "string",
"value": "nabin-bhandari11"
},
{
"id": "c6a7eb17-72bc-419a-a96b-232c3b00b3b8",
"name": "eventTypeSlug",
"type": "string",
"value": "30 min"
},
{
"id": "d1af9905-60e7-4f64-a235-867222d088c7",
"name": "eventTypeId",
"type": "string",
"value": "2964463"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "bfbdc15f-2718-410c-8a48-90c861c5836f",
"name": "가용 시간 확인",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
-16
],
"parameters": {
"url": "https://api.cal.com/v2/slots",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "start",
"value": "={{ $json[' start'] }}"
},
{
"name": "end",
"value": "={{ $json[' end'] }}"
},
{
"name": "eventTypeId",
"value": "={{ $('Set Variables').item.json.eventTypeId }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "cal-api-version",
"value": "2024-09-04"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "9eUYG3fajx2PVQgB",
"name": "Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "0b1e3986-7b05-4ca4-aa10-976a7b0ba64c",
"name": "예약하기",
"type": "n8n-nodes-base.httpRequest",
"position": [
-112,
240
],
"parameters": {
"url": "https://api.cal.com/v2/bookings",
"method": "POST",
"options": {},
"jsonBody": "={\n \"attendee\": {\n \"language\": \"en\",\n \"name\": \"{{ $json.body.message.toolCalls[0].function.arguments.Name }}\",\n \"timeZone\": \"{{ $json.body.message.toolCalls[0].function.arguments.callerTimeZone }}\",\n \"email\": \"{{ $json.body.message.toolCalls[0].function.arguments.Email }}\"\n },\n \"start\": \"{{ $json.body.message.toolCallList[0].function.arguments.requestedappointmentdate }}\",\n \"eventTypeId\": {{ $('Set Variables').item.json.eventTypeId }}\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "cal-api-version",
"value": "2024-08-13"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "9eUYG3fajx2PVQgB",
"name": "Header Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "8728b814-432a-498f-8077-2f2f806143d7",
"name": "예약 성공",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
160,
240
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"results\": [\n {\n \"toolCallId\": \"{{ $('Webhook').item.json.body.message.toolCallList[0].id }}\",\n \"result\": \"Booking Successful\"\n }\n ]\n}\n"
},
"typeVersion": 1.4
},
{
"id": "7dced770-52a8-4f81-a0c8-83b1454fa475",
"name": "가용 시간 확인 성공",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
224,
-16
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"results\": [\n {\n \"toolCallId\": \"{{ $('Webhook').item.json.body.message.toolCallList[0].id }}\",\n \"result\": \"{{ $json.data }}\"\n }\n ]\n}\n"
},
"typeVersion": 1.4
},
{
"id": "d131814d-35ef-459b-8ba9-99ffe67539dd",
"name": "페이로드 필드 준비",
"type": "n8n-nodes-base.set",
"position": [
-928,
96
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9a6f391b-9dc9-4642-accf-be687dceb56e",
"name": "body",
"type": "object",
"value": "={{ $('Webhook').item.json.body }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "30b16423-9253-4fa8-b20c-3ffd86ae1c95",
"name": "시작 및 종료 시간 추출",
"type": "n8n-nodes-base.set",
"position": [
-224,
-16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "872ef0bf-8111-44e5-8c8d-fbaa0c982519",
"name": " start",
"type": "string",
"value": "={{ $('Webhook').item.json.body.message.toolCalls[0].function.arguments.requestedappointment }}"
},
{
"id": "57e9ef02-8748-4ab9-9dc3-39ee2f8c08d5",
"name": " end",
"type": "string",
"value": "={{ $('Webhook').item.json.body.message.toolCalls[0].function.arguments.requestedappointment.toDateTime().plus(1, 'days') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "14dc0f51-6ac4-4058-8618-f8d7915bfc5d",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1488,
-32
],
"parameters": {
"height": 336,
"content": "Entry point from VAPI. This webhook receives user intent and entities from the voice agent in a structured format (e.g. action = \"book\" or \"check\")."
},
"typeVersion": 1
},
{
"id": "917a9fd1-a235-44c9-b810-c1efbae640a7",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
-16
],
"parameters": {
"color": 4,
"height": 320,
"content": "Extracts variables like eventtypeid, eventtypeslug and username."
},
"typeVersion": 1
},
{
"id": "8a4ef30e-6572-4746-942e-5ceaf95a91e7",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-960,
-16
],
"parameters": {
"color": 2,
"height": 320,
"content": "Extracts the body from the webhook"
},
"typeVersion": 1
},
{
"id": "e0f0ebd4-4a21-4d54-8cb8-fd076f1a082e",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-672,
-112
],
"parameters": {
"color": 5,
"height": 416,
"content": "Routes the voice intent:\n\nIf the user said \"Check availability\", go to the check flow.\n\nIf the user said \"Book appointment\", go to the booking flow."
},
"typeVersion": 1
},
{
"id": "93c9caf4-e617-4d3e-9cb5-3a6973a84d60",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-160
],
"parameters": {
"height": 304,
"content": "Parses and formats spoken date/time info from the voice assistant to match Cal.com API's time range requirements."
},
"typeVersion": 1
},
{
"id": "35d3230c-09ad-4176-9bef-24b4825dfa47",
"name": "스티커 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-160
],
"parameters": {
"color": 7,
"height": 304,
"content": "Sends a GET request to Cal.com to fetch available time slots for the specified date range from the voice input."
},
"typeVersion": 1
},
{
"id": "d212d1a3-3471-4557-a96a-50dd311089ba",
"name": "스티커 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-160
],
"parameters": {
"color": 3,
"height": 320,
"content": "Returns a voice-ready response to VAPI (e.g. \"There’s availability at 3 PM and 4 PM. Would you like to book?\")."
},
"typeVersion": 1
},
{
"id": "59935070-d52a-4120-bd60-0f694eb538fe",
"name": "스티커 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
144
],
"parameters": {
"color": 4,
"height": 272,
"content": "Sends a POST request to Cal.com to book the appointment using parsed info from the voice conversation."
},
"typeVersion": 1
},
{
"id": "a4182a3e-4501-405c-9088-95a1b9dd8d81",
"name": "스티커 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
160
],
"parameters": {
"color": 6,
"width": 272,
"height": 240,
"content": "Returns a spoken confirmation via VAPI (e.g. \"Your appointment is confirmed for 3 PM on Tuesday\")"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e483040f-c8c3-4cab-ae02-7008cf6a993c",
"connections": {
"322ff7ac-9c2c-49e9-a429-ab91d9b9f2bb": {
"main": [
[
{
"node": "30b16423-9253-4fa8-b20c-3ffd86ae1c95",
"type": "main",
"index": 0
}
],
[
{
"node": "0b1e3986-7b05-4ca4-aa10-976a7b0ba64c",
"type": "main",
"index": 0
}
]
]
},
"6adc4f2f-867e-49dd-9179-cf55f0a3f56d": {
"main": [
[
{
"node": "ee168a09-1bb7-4080-b96e-8b20fc24b86c",
"type": "main",
"index": 0
}
]
]
},
"ee168a09-1bb7-4080-b96e-8b20fc24b86c": {
"main": [
[
{
"node": "d131814d-35ef-459b-8ba9-99ffe67539dd",
"type": "main",
"index": 0
}
]
]
},
"0b1e3986-7b05-4ca4-aa10-976a7b0ba64c": {
"main": [
[
{
"node": "8728b814-432a-498f-8077-2f2f806143d7",
"type": "main",
"index": 0
}
]
]
},
"bfbdc15f-2718-410c-8a48-90c861c5836f": {
"main": [
[
{
"node": "7dced770-52a8-4f81-a0c8-83b1454fa475",
"type": "main",
"index": 0
}
]
]
},
"d131814d-35ef-459b-8ba9-99ffe67539dd": {
"main": [
[
{
"node": "322ff7ac-9c2c-49e9-a429-ab91d9b9f2bb",
"type": "main",
"index": 0
}
]
]
},
"30b16423-9253-4fa8-b20c-3ffd86ae1c95": {
"main": [
[
{
"node": "bfbdc15f-2718-410c-8a48-90c861c5836f",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 지원 챗봇, AI 챗봇
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
대화형 여행 예약기: AI를 사용한 항공편 및 호텔 예약 자동화
대화형 여행 예약 프로그램: GPT-3.5를 사용하여 항공편 및 호텔 예약 자동화
Code
Open Ai
Switch
+
Code
Open Ai
Switch
21 노드Oneclick AI Squad
지원 챗봇
AI 소셜 미디어 자동 응답 플러그인(Instagram, Facebook 및 WhatsApp)
Llama 3.2 기반 AI 소셜 미디어 메시지 자동 응답 시스템(Instagram, Facebook, WhatsApp)
Code
Switch
Webhook
+
Code
Switch
Webhook
12 노드Oneclick AI Squad
지원 챗봇
항공사 FAQ 봇
GPT-4 및 문제 분류를 사용한 항공사 고객 지원 자동화
If
Code
Merge
+
If
Code
Merge
27 노드Oneclick AI Squad
지원 챗봇
예약 알림 도우미
Google 캘린더 및 Retell AI를 사용한 예약 전화 알림 자동화
Set
Code
Http Request
+
Set
Code
Http Request
11 노드Nabin Bhandari
AI 챗봇
Telegram 지원 인계 자동화
GPT4 및 이메일 알림을 사용한 Telegram 지원 AI-인간 전환 자동화
If
Set
Switch
+
If
Set
Switch
40 노드Meelioo
지원 챗봇
다중 채널 DHL 상태 봇
웹 양식 및 이메일 문의를 위한 자동화된 DHL 소포 추적 봇
If
Code
Gmail
+
If
Code
Gmail
15 노드Yusuke Yamamoto
지원 챗봇