Terminerinnerungsassistent
Dies ist ein AI Chatbot, Multimodal AI-Bereich Automatisierungsworkflow mit 11 Nodes. Hauptsächlich werden Set, Code, HttpRequest, GoogleCalendar, ScheduleTrigger und andere Nodes verwendet. Automatisierung von Terminerinnerungen für Telefonate mit Google Calendar und Retell AI
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Verwendete Nodes (11)
Kategorie
{
"id": "cmusYcLEtQLBks00",
"meta": {
"instanceId": "a18da9fe05787064d0871c067b6baf1f5102992b14efc7335bca39a83ba97eb2",
"templateCredsSetupCompleted": true
},
"name": "Appointment Reminder Agent",
"tags": [],
"nodes": [
{
"id": "016deabc-cd94-41f8-8470-a4df03cb431c",
"name": "Konfiguration setzen (Retell Setzenup)",
"type": "n8n-nodes-base.set",
"position": [
400,
-48
],
"parameters": {
"values": {
"string": [
{
"name": "from_number",
"value": "{{ YOUR_FROM_NUMBER }}"
},
{
"name": "agent_id",
"value": "{{ YOUR_AGENT_ID }}"
}
]
},
"options": {}
},
"typeVersion": 2
},
{
"id": "47ccb25c-e543-40d1-8155-18046a85d1d5",
"name": "Zeitplan-Trigger (9 Uhr)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-352,
-48
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c0a5e52a-ced2-4bbc-b5f2-99b7989f8b7b",
"name": "Erinnerungsanruf senden (Retell Api)",
"type": "n8n-nodes-base.httpRequest",
"position": [
640,
-48
],
"parameters": {
"url": "https://api.retellai.com/v2/create-phone-call",
"options": {},
"jsonBody": "={\n\"from_number\": \"{{ $json.from_number }}\",\n\"to_number\": \"{{ $json.phone }}\",\n\"retell_llm_dynamic_variables\": {\n \"name\": \"{{ $json.name }}\",\n \"phone_number\": \"{{ $json.phone }}\",\n \"reason\": \"{{ $json.reason }}\",\n \"start_time\": \"{{ $json.startTime }}\",\n \"end_time\": \"{{ $json.endTime }}\"\n},\n\"override_agent_id\": \"{{ $json.agent_id }}\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "content-Type",
"value": "application/json"
}
]
}
},
"credentials": {
"httpCustomAuth": {
"id": "cY0bhQDArrMSy7x6",
"name": "Custom Auth account"
},
"httpHeaderAuth": {
"id": "wuo9C8tD1CmNbIPD",
"name": "Retell AI"
}
},
"typeVersion": 4.2
},
{
"id": "8d90ec35-90b6-495d-89e9-c816ff9279ca",
"name": "Bevorstehende Ereignisse abrufen",
"type": "n8n-nodes-base.googleCalendar",
"position": [
-112,
-48
],
"parameters": {
"options": {},
"timeMax": "={{ $now.plus(12, 'hours') }}",
"calendar": {
"__rl": true,
"mode": "id",
"value": "={{ Your Calendar Email }}"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "JT4VVIXG6yWNeG8p",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "35fa6c4b-6298-4823-8368-e1153fe4740b",
"name": "Notizzettel",
"type": "n8n-nodes-base.stickyNote",
"position": [
-416,
-208
],
"parameters": {
"color": 3,
"width": 208,
"height": 320,
"content": "This node triggers the workflow every day at 9 AM.\nYou can change the trigger time in the settings if you want calls at a different hour.\n"
},
"typeVersion": 1
},
{
"id": "acb7fd45-ea35-47c2-a69f-b60ee1f98525",
"name": "Notizzettel1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
-288
],
"parameters": {
"color": 5,
"height": 400,
"content": "This node fetches all events from your Google Calendar in the next 12 hours.\nReplace the calendar email with your own calendar.\nMake sure your Google Calendar OAuth2 credential is connected.\n"
},
"typeVersion": 1
},
{
"id": "b621211c-c65b-4dbb-b1d9-b5437a1b1e09",
"name": "Notizzettel2",
"type": "n8n-nodes-base.stickyNote",
"position": [
64,
-352
],
"parameters": {
"height": 464,
"content": "This Code node extracts:\n- Name\n- Phone number\n- Reason\n- Start and End time\n\n➡️ These fields must be present in the Google Calendar event description.\n➡️ Example description format:\nName: John Doe\nPhone Number: +14155552671\nReason: Consultation\n"
},
"typeVersion": 1
},
{
"id": "d890a065-3c77-4252-a0cb-a90e38d9a17c",
"name": "Termindetails extrahieren",
"type": "n8n-nodes-base.code",
"position": [
144,
-48
],
"parameters": {
"jsCode": "return items.flatMap(item => {\n const description = item.json.description || \"\";\n\n // Normalize newlines\n const cleaned = description.replace(/\\r?\\n/g, '\\n').trim();\n\n // Split bookings by empty lines (double newline or similar)\n const bookings = cleaned.split(/\\n\\s*\\n/);\n\n return bookings.map(booking => {\n const flat = booking.replace(/\\n/g, ' ').replace(/\\s{2,}/g, ' ');\n\n const nameMatch = flat.match(/Name:\\s*(.+?)(?=\\s+[A-Za-z]+:|$)/i);\n const emailMatch = flat.match(/Email:\\s*(.+?)(?=\\s+[A-Za-z]+:|$)/i);\n const phoneMatch = flat.match(/Phone Number:\\s*(.+?)(?=\\s+[A-Za-z]+:|$)/i);\n const reasonMatch = flat.match(/Reason:\\s*(.+?)(?=\\s+[A-Za-z]+:|$)/i);\n\n return {\n json: {\n name: nameMatch ? nameMatch[1].trim() : \"\",\n email: emailMatch ? emailMatch[1].trim() : \"\",\n phone: phoneMatch ? phoneMatch[1].trim() : \"\",\n reason: reasonMatch ? reasonMatch[1].trim() : \"\",\n startTime: item.json.start?.dateTime || \"\",\n endTime: item.json.end?.dateTime || \"\"\n }\n };\n });\n});\n"
},
"typeVersion": 2
},
{
"id": "171d92a8-f4b7-4cd7-8ff2-fa60342983d2",
"name": "Notizzettel3",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-304
],
"parameters": {
"color": 4,
"height": 416,
"content": "This node stores your Retell setup:\n- from_number (your registered Retell number)\n- agent_id (your Retell agent ID)\n\n➡️ Update these values before using the workflow.\n➡️ They will be passed to the Retell API.\n"
},
"typeVersion": 1
},
{
"id": "da1d2978-d402-4524-ac5a-91834b44846b",
"name": "Notizzettel4",
"type": "n8n-nodes-base.stickyNote",
"position": [
576,
-304
],
"parameters": {
"color": 6,
"height": 416,
"content": "This node sends the API request to Retell AI to make the phone call.\n\n-It uses your Retell API key stored in n8n credentials.\n-Do NOT hardcode your API key — always use credentials.\n-The call includes dynamic variables: name, phone, reason, start_time, end_time.\n"
},
"typeVersion": 1
},
{
"id": "f3b6d02b-d978-43ae-b7da-21e439e33779",
"name": "Notizzettel5",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
-400
],
"parameters": {
"color": 2,
"width": 544,
"height": 736,
"content": "## Appointment Reminder Agent\n\n### Who's it for\nBusinesses, clinics, and service providers who want to automate **phone call reminders** for upcoming appointments.\n\n### How it works\nThis workflow:\n1. Runs daily at 9 AM (can be changed).\n2. Pulls upcoming events from Google Calendar.\n3. Extracts details (name, phone, reason, time).\n4. Calls the customer using Retell AI’s API.\n\n### How to set up\n1. Add your **Retell API key** in n8n credentials (do not hardcode).\n2. Add your **Google Calendar account** in credentials.\n3. Update the `from_number` (your Retell-registered number).\n4. Update the `agent_id` (your Retell agent ID).\n5. Ensure phone numbers are in **E.164 format** (e.g. `+14155552671`).\n\n### Requirements\n- Retell AI account + API key \n- Registered Retell phone number \n- Google Calendar account \n\n### How to customize\n- Adjust trigger time. \n- Add logging (Google Sheets / Airtable). \n- Modify Retell agent script for different appointment types. \n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "fe292d57-7b18-44cc-9ad6-e9474c2208a2",
"connections": {
"8d90ec35-90b6-495d-89e9-c816ff9279ca": {
"main": [
[
{
"node": "d890a065-3c77-4252-a0cb-a90e38d9a17c",
"type": "main",
"index": 0
}
]
]
},
"47ccb25c-e543-40d1-8155-18046a85d1d5": {
"main": [
[
{
"node": "8d90ec35-90b6-495d-89e9-c816ff9279ca",
"type": "main",
"index": 0
}
]
]
},
"Konfiguration setzen (Retell Setup)": {
"main": [
[
{
"node": "c0a5e52a-ced2-4bbc-b5f2-99b7989f8b7b",
"type": "main",
"index": 0
}
]
]
},
"d890a065-3c77-4252-a0cb-a90e38d9a17c": {
"main": [
[
{
"node": "Konfiguration setzen (Retell Setup)",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - KI-Chatbot, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Nabin Bhandari
@knabinbhandariDiesen Workflow teilen