Workflow n8n

Automatisation Google Calendar avec n8n : rappels vocaux programmés

  • Ce workflow n8n a pour objectif de simplifier la gestion des rappels d'événements en utilisant Google Calendar et des notifications vocales. Il est particulièrement utile pour les entreprises qui souhaitent automatiser leurs rappels d'événements afin d'améliorer la productivité et de réduire les oublis. En intégrant des outils comme OpenAI pour générer des messages personnalisés, ce workflow permet de créer une expérience utilisateur fluide et efficace.
  • Le processus commence avec un déclencheur programmé qui active le workflow à des intervalles définis. Ensuite, il interroge Google Calendar pour récupérer les rendez-vous à venir. Une fois les données collectées, un modèle de chat OpenAI génère un message basé sur les informations des événements. Ce message est ensuite transformé en un rappel vocal grâce à un appel HTTP, qui envoie les détails à un service de génération de voix. Enfin, le rappel vocal est envoyé par email aux participants via Gmail.
  • Les bénéfices de cette automatisation n8n sont multiples : elle réduit le risque d'oubli d'événements importants, améliore la communication avec les participants et permet un gain de temps considérable dans la gestion des rappels. En intégrant des outils d'IA, ce workflow offre une valeur ajoutée significative pour les équipes souhaitant optimiser leur organisation.
Tags clés :automatisationGoogle Calendarrappelsn8nIA
Catégorie: Scheduled · Tags: automatisation, Google Calendar, rappels, n8n, IA0

Workflow n8n Google Calendar, rappels : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n Google Calendar, rappels : détail des nœuds

  • When clicking 'Test workflow'

    Ce noeud déclenche le workflow lorsque l'utilisateur clique sur 'Test workflow'.

  • OpenAI Chat Model

    Ce noeud utilise le modèle de chat d'OpenAI pour générer des réponses basées sur les options fournies.

  • Structured Output Parser

    Ce noeud analyse et structure la sortie des données selon le schéma spécifié.

  • Schedule Trigger

    Ce noeud déclenche le workflow à des intervalles définis selon la règle de planification.

  • Sticky Note

    Ce noeud crée une note autocollante avec les dimensions et le contenu spécifiés.

  • Change filename

    Ce noeud modifie le nom de fichier en exécutant le code JavaScript fourni.

  • Sticky Note1

    Ce noeud crée une autre note autocollante avec les dimensions et le contenu spécifiés.

  • Sticky Note2

    Ce noeud crée une note autocollante supplémentaire avec les dimensions et le contenu fournis.

  • Generate Voice Reminder

    Ce noeud envoie une requête HTTP pour générer un rappel vocal en utilisant les paramètres spécifiés.

  • Send Voice Reminder

    Ce noeud envoie un rappel vocal par email via Gmail avec les détails fournis.

  • create message

    Ce noeud crée un message en utilisant un modèle de langage avec les paramètres spécifiés.

  • Get Appointments

    Ce noeud récupère les rendez-vous du calendrier Google selon les options et les limites définies.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "4a11afdb3c52fd098e3eae9fad4b39fdf1bbcde142f596adda46c795e366b326"
  },
  "nodes": [
    {
      "id": "17ca0437-6101-4277-9ed2-e37e6b92df02",
      "name": "When clicking 'Test workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -160,
        280
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d3dd600a-2ab5-4d52-92ef-ab3f29dd1790",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        260,
        400
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "c29d58a2-243b-41ab-99c6-f8a8c92219cf",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        460,
        400
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"message\": {\n      \"type\": \"string\"\n    },\n    \"mail_object\": {\n      \"type\": \"string\"\n    }\n  }\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "3cb31448-5bc3-47c2-a119-d9e33a464d1f",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -160,
        80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "18b243a5-db1f-4a27-a8a1-3a7c74135d6d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        580,
        20
      ],
      "parameters": {
        "width": 260,
        "height": 120,
        "content": "## ElevenlabsAPI key\n**Click** to get your Elevenlabs  API key. [Elevenlabs](https://try.elevenlabs.io/text-audio)"
      },
      "typeVersion": 1
    },
    {
      "id": "62a9bd08-27f8-45a8-9eb4-30950500a36f",
      "name": "Change filename",
      "type": "n8n-nodes-base.code",
      "position": [
        880,
        180
      ],
      "parameters": {
        "jsCode": "/*\n * Filename: addFileName.js\n * Purpose: Add a file name to binary data in an n8n workflow using mail_object from input\n */\n\nconst mailObject = $input.first().json.output.mail_object;\nconst fileName = `${mailObject}.mp3`;\n\nreturn items.map(item => {\n  if (item.binary && item.binary.data) {\n    item.binary.data.fileName = fileName;\n  }\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "41043058-ca06-4c3a-8b7d-597e2941d92b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1020,
        20
      ],
      "parameters": {
        "width": 300,
        "height": 120,
        "content": "## Gmail API Credentials  \n**Click here** to view the [documentation](https://docs.n8n.io/integrations/builtin/credentials/google/) and configure your access permissions for the Google Gmail API."
      },
      "typeVersion": 1
    },
    {
      "id": "3475e3ae-439d-4245-8994-4444266a67e3",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 300,
        "height": 140,
        "content": "## Calendar API Credentials  \n**Click here** to view the [documentation](https://docs.n8n.io/integrations/builtin/credentials/google/) and configure your access permissions for the Google Calendar API."
      },
      "typeVersion": 1
    },
    {
      "id": "7784fc2d-3e64-40f0-990f-965fba4ad67c",
      "name": "Generate Voice Reminder",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        660,
        180
      ],
      "parameters": {
        "url": "https://api.elevenlabs.io/v1/text-to-speech/JBFqnCBsd6RMkjVDRZzb",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "text",
              "value": "={{ $json.output.message }}"
            },
            {
              "name": "model_id",
              "value": "eleven_multilingual_v2"
            }
          ]
        },
        "genericAuthType": "httpCustomAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "output_format",
              "value": "mp3_22050_32"
            }
          ]
        }
      },
      "notesInFlow": true,
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "a2081f29-493b-43c0-bad5-1b273d5db527",
      "name": "Send Voice Reminder",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1100,
        180
      ],
      "webhookId": "5ba2c8cb-84f1-4363-8410-b8d138286c3a",
      "parameters": {
        "sendTo": "={{ $('Get Appointments').item.json.attendees[0].email }}",
        "message": "=👇 Information for tomorrow 🗣️",
        "options": {
          "senderName": "John Carpenter",
          "attachmentsUi": {
            "attachmentsBinary": [
              {}
            ]
          },
          "appendAttribution": false
        },
        "subject": "={{ $('create message').item.json.output.mail_object }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "dd3bf7b2-f951-452a-8912-47ceace50cc0",
      "name": "create message",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        280,
        180
      ],
      "parameters": {
        "text": "=name: {{ $json.summary }}\ntime: {{ $json.start.dateTime }}\naddress: {{ $json.location }}\nToday's date: {{ $now }}",
        "messages": {
          "messageValues": [
            {
              "message": "=You are an assistant. You will create a structured message in JSON.\n\n**\nmessage:\nGenerate a voice script reminder for a real estate appointment. The message should be clear, professional, and engaging.\n\nIt must include:\n1. The recipient's name.\n2. The date and time of the appointment, expressed naturally (e.g., at noon, quarter past noon, half past three, quarter to five).\n3. The complete address of the property, expressed naturally (e.g., 12 Baker Street in London, Madison Avenue in New York, 5 Oakwood Drive in Los Angeles).\n4. A mention of the sender: Mr. John Carpenter from Super Agency.\n5. A confirmation sentence or an invitation to contact if needed.\n\nInput variables:\n• Recipient's name (prefixed with Mr. or Ms.)\n• Time: Appointment time\n• Address: Complete property address (only the street, number, and city; not the postal code)\n\nThe tone should be cordial and professional, suitable for an automated voice message.\n\nExample expected output: \"Hello Mrs. Richard, this is Mr. John Carpenter from Super Immo Agency.\nI am reminding you of your appointment scheduled for tomorrow at 8:15, at 63 Taverniers Road in Talence. If you have any questions or need to reschedule, please do not hesitate to contact me. See you tomorrow and have a great day!\"\n\n**\nmail_object: a very short email subject\nExample: Your appointment reminder for tomorrow"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.5
    },
    {
      "id": "63806db8-6814-4fe4-ba2e-80511273ee51",
      "name": "Get Appointments",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        60,
        180
      ],
      "parameters": {
        "limit": 2,
        "options": {},
        "timeMax": "={{ $now.plus({ day: 2 }) }}",
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "mymail@gmail.com",
          "cachedResultName": "mymail@gmail.com"
        },
        "operation": "getAll"
      },
      "typeVersion": 1.3
    }
  ],
  "pinData": {},
  "connections": {
    "create message": {
      "main": [
        [
          {
            "node": "Generate Voice Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Change filename": {
      "main": [
        [
          {
            "node": "Send Voice Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Appointments": {
      "main": [
        [
          {
            "node": "create message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Appointments",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "create message",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate Voice Reminder": {
      "main": [
        [
          {
            "node": "Change filename",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "create message",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When clicking 'Test workflow'": {
      "main": [
        [
          {
            "node": "Get Appointments",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Google Calendar, rappels : pour qui est ce workflow ?

Ce workflow s'adresse principalement aux PME et aux équipes de gestion de projet qui cherchent à automatiser la gestion de leurs rendez-vous. Il est idéal pour les utilisateurs ayant un niveau technique intermédiaire, souhaitant intégrer des solutions d'IA dans leur processus de travail.

Workflow n8n Google Calendar, rappels : problème résolu

Ce workflow résout le problème des rappels d'événements souvent oubliés, ce qui peut entraîner des pertes de temps et des occasions manquées. En automatisant l'envoi de rappels vocaux, il élimine les tâches manuelles et réduit le stress lié à la gestion des rendez-vous. Les utilisateurs bénéficient d'une communication améliorée et d'une meilleure organisation de leur emploi du temps.

Workflow n8n Google Calendar, rappels : étapes du workflow

Étape 1 : Le workflow est déclenché selon un calendrier défini.

  • Étape 1 : Il récupère les rendez-vous à venir depuis Google Calendar.
  • Étape 2 : Un modèle OpenAI génère un message basé sur les détails de l'événement.
  • Étape 3 : Le message est transformé en un rappel vocal via un appel HTTP.
  • Étape 4 : Le rappel vocal est envoyé par email aux participants via Gmail.

Workflow n8n Google Calendar, rappels : guide de personnalisation

Pour personnaliser ce workflow, commencez par ajuster la règle de déclenchement dans le nœud 'Schedule Trigger' selon vos besoins. Modifiez les paramètres du nœud 'Get Appointments' pour filtrer les événements selon vos critères (par exemple, calendrier spécifique ou plage horaire). Vous pouvez également personnaliser le contenu du message généré par OpenAI dans le nœud 'create message'. Enfin, assurez-vous que les paramètres d'authentification pour le nœud 'Generate Voice Reminder' sont correctement configurés pour le service que vous utilisez.