Assistant de rappel de rendez-vous
Ceci est unAI Chatbot, Multimodal AIworkflow d'automatisation du domainecontenant 11 nœuds.Utilise principalement des nœuds comme Set, Code, HttpRequest, GoogleCalendar, ScheduleTrigger. Utiliser Google Calendar et Retell AI pour automatiser les rappels d'appels de rendez-vous
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (11)
Catégorie
{
"id": "cmusYcLEtQLBks00",
"meta": {
"instanceId": "a18da9fe05787064d0871c067b6baf1f5102992b14efc7335bca39a83ba97eb2",
"templateCredsSetupCompleted": true
},
"name": "Appointment Reminder Agent",
"tags": [],
"nodes": [
{
"id": "016deabc-cd94-41f8-8470-a4df03cb431c",
"name": "Définir la Configuration (Configuration Retell)",
"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": "Déclencheur Planifié (9h)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-352,
-48
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c0a5e52a-ced2-4bbc-b5f2-99b7989f8b7b",
"name": "Envoyer un Appel de Rappel (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": "Obtenir les Événements à Venir",
"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": "Note Adhésive",
"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": "Note Adhésive1",
"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": "Note Adhésive2",
"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": "Extraire les Détails du Rendez-vous",
"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": "Note Adhésive3",
"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": "Note Adhésive4",
"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": "Note Adhésive5",
"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
}
]
]
},
"016deabc-cd94-41f8-8470-a4df03cb431c": {
"main": [
[
{
"node": "c0a5e52a-ced2-4bbc-b5f2-99b7989f8b7b",
"type": "main",
"index": 0
}
]
]
},
"d890a065-3c77-4252-a0cb-a90e38d9a17c": {
"main": [
[
{
"node": "016deabc-cd94-41f8-8470-a4df03cb431c",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Chatbot IA, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Nabin Bhandari
@knabinbhandariPartager ce workflow