音声による予約アシスタント

上級

これは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": "Switch",
      "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)
Instagram、Facebook、WhatsApp をサポートする Llama 3.2 ベースの AI によるソーシャルメディアメッセージ自動返信システム
Code
Switch
Webhook
+
Code
Switch
Webhook
12 ノードOneclick AI Squad
サポートチャットボット
航空公司のFAQボット
GPT-4と質問分類を使った航空会社カスタマーサポートの自動化
If
Code
Merge
+
If
Code
Merge
27 ノードOneclick AI Squad
サポートチャットボット
予約リマインダーアシスタント
Google CalendarとRetell AIを組み合わせて予定通話のリマインダーを自動化
Set
Code
Http Request
+
Set
Code
Http Request
11 ノードNabin Bhandari
AIチャットボット
Telegramサポート取り扱いの自動化
GPT-4とメール通知を使用して、TelegramサポートからAIから人間への段階の移行を自動化
If
Set
Switch
+
If
Set
Switch
40 ノードMeelioo
サポートチャットボット
マルチチャンネルDHLステータスボット
Webフォームおよびメール照会に対応する自動化DHLパッケージ追跡ボット
If
Code
Gmail
+
If
Code
Gmail
15 ノードYusuke Yamamoto
サポートチャットボット
ワークフロー情報
難易度
上級
ノード数18
カテゴリー2
ノードタイプ6
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34