Automate Meeting Reminders via Google Calendar & Telegram Bot API

Utilize the Telegram Bot API to send timely meeting reminders sourced from Google Calendar directly to your team via Telegram. This workflow is ideal for communication teams seeking to enhance coordination. Requires 2 accounts: Telegram Bot Token and OpenAI API Key. Streamline your scheduling process and save up to 10 hours a month on follow-ups!

1 Trigger
151,542 views15 nodesOct 2024Lisa Zhang

Categories

Personal ProductivityAI Chatbot

APIs

Telegram Bot APIOpenAI

AI Features

OpenAI GPTAI ChatAI Agent

Credentials

2 required

Quick Actions

Copy or download to import into your n8n instance

Workflow JSON
{
  "meta": {
    "instanceId": "04ddf1130268840c229f501edc57936c3c131339e8b0cdd696fcf3a7c69e696e",
    "templateId": "2462"
  },
  "nodes": [
    {
      "id": "c70236ea-91ab-4e47-b6f6-63a70ede5d3c",
      "name": "Google Calendar",
      "type": "n8n-nodes-base.googleCalendarTool",
      "position": [
        2000,
        704
      ],
      "parameters": {
        "options": {
          "fields": "=items(summary, start(dateTime))",
          "timeMin": "={{$fromAI(\"date\",\"the date after which to fetch the messages in format YYYY-MM-DDTHH:MM:SS\")}}"
        },
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "derekcheungsa@gmail.com",
          "cachedResultName": "derekcheungsa@gmail.com"
        },
        "operation": "getAll"
      },
      "typeVersion": 1.1
    },
    {
      "id": "d2287bea-de47-4180-8ee6-55d4ab1a89da",
      "name": "Window Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1760,
        704
      ],
      "parameters": {
        "sessionKey": "={{ $('Listen for incoming events').first().json.message.from.id }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.2
    },
    {
      "id": "fa955731-86f6-4e4d-8604-dab5f52dee87",
      "name": "Get Email",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        1872,
        704
      ],
      "webhookId": "abf7e707-2eb8-4063-a920-b8ed975b0d70",
      "parameters": {
        "filters": {
          "labelIds": [
            "INBOX",
            "UNREAD"
          ],
          "readStatus": "unread",
          "receivedAfter": "={{$fromAI(\"date\",\"the date after which to fetch the messages in format YYYY-MM-DDTHH:MM:SS\")}}"
        },
        "operation": "getAll"
      },
      "typeVersion": 2.1
    },
    {
      "id": "46511f47-1687-4cbe-ae41-ceb205ed1f11",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1632,
        704
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "64fe44db-af19-43eb-9ff1-de0a72a9e645",
      "name": "Listen for incoming events",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        832,
        384
      ],
      "webhookId": "322dce18-f93e-4f86-b9b1-3305519b7834",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "e35c04ff-a050-4564-8c1b-5b22b556872f",
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "onError": "continueErrorOutput",
      "position": [
        2272,
        384
      ],
      "webhookId": "e699405e-8e52-4d38-a06b-1fa8edf050bd",
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "={{ $('Listen for incoming events').first().json.message.from.id }}",
        "additionalFields": {
          "parse_mode": "Markdown",
          "appendAttribution": false
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "e791d4f8-2c19-4c14-a71e-39a04f22e944",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        1200,
        384
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a0bf9719-4272-46f6-ab3b-eda6f7b44fd8",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.message.text }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5bd1788a-3d08-4eb3-8e03-3ce82f44d2a7",
      "name": "Speech to Text",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1616,
        384
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "typeVersion": 1.3
    },
    {
      "id": "b67a2a93-517b-469e-aaa4-32c422710743",
      "name": "Voice or Text",
      "type": "n8n-nodes-base.set",
      "position": [
        1040,
        384
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "text",
              "stringValue": "={{ $json?.message?.text || \"\" }}"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "8105c39f-9e87-44c4-9215-b3777f0b4164",
      "name": "Get Voice File",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1376,
        384
      ],
      "webhookId": "24273e7e-6133-415e-8627-a9d6dc0f107c",
      "parameters": {
        "fileId": "={{ $('Listen for incoming events').item.json.message.voice.file_id }}",
        "resource": "file",
        "additionalFields": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "759b975f-d17c-4386-a5b3-12413f0361f4",
      "name": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1776,
        384
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "=You are a helpful assistant.\n\nToday's date is {{ $now }}.\n\nGuidelines:\n- When fetching emails, filter out any promotional emails. \n- When summarizing emails, include Sender, Message date, subject, and brief summary of email.\n- if the user did not specify a date in the request assume they are asking for today\n- Use baserow tool to answer questions about tasks\n- When answering questions about calendar events, filter out events that don't apply to the question.  For example, the question is about events for today, only reply with events for today. Don't mention future events if it's more than 1 week away"
        },
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "5537c777-f003-4673-b48a-4993a0c10520",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        288
      ],
      "parameters": {
        "color": 5,
        "width": 496.25,
        "height": 278.75,
        "content": "## Process Telegram Request\n"
      },
      "typeVersion": 1
    },
    {
      "id": "40e92679-b47a-4213-bb23-3f8d086459f2",
      "name": "Tasks",
      "type": "n8n-nodes-base.baserowTool",
      "position": [
        2112,
        704
      ],
      "parameters": {
        "tableId": 372174,
        "databaseId": 146496,
        "additionalOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "570a0647-b571-4ebc-9dfe-40244b5a0b2a",
      "name": "Contacts",
      "type": "n8n-nodes-base.baserowTool",
      "position": [
        2240,
        704
      ],
      "parameters": {
        "tableId": 372177,
        "databaseId": 146496,
        "descriptionType": "manual",
        "toolDescription": "Useful for getting contact information.  For example emails or phone numbers.",
        "additionalOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "3f66a5dd-6cad-4239-94a8-1b30fbf32943",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        128
      ],
      "parameters": {
        "color": 5,
        "width": 720,
        "height": 960,
        "content": "## [Video Tutorial](https://youtu.be/pXjowPc6V2s)\n@[youtube](pXjowPc6V2s)\n\n\n## Overview\nMeet Angie - your personal AI assistant that handles voice & text via Telegram to manage your digital life.\n\n**To get started:**\n\n1. **Connect all credentials** (Telegram, OpenAI, Gmail, etc.)\n2. **Activate the workflow** and message your Telegram bot:\n   β€’ \"What emails do I have today?\"\n   β€’ \"Show me my calendar for tomorrow\"\n   β€’ \"Craete new to-do item\"\n   β€’ 🎀 Send voice messages for hands-free interaction\n\n## Questions or Need Help?\n\nFor setup assistance, customization, or workflow support, join my Skool community!\n\n## [AI Automation Engineering Community](https://www.skool.com/ai-automation-engineering-3014)\n\nHappy learning! -- Derek Cheung"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Get Voice File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tasks": {
      "ai_tool": [
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Contacts": {
      "ai_tool": [
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Email": {
      "ai_tool": [
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Voice or Text": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Voice File": {
      "main": [
        [
          {
            "node": "Speech to Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Speech to Text": {
      "main": [
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Calendar": {
      "ai_tool": [
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Listen for incoming events": {
      "main": [
        [
          {
            "node": "Voice or Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Angie, AI Assistant πŸ‘©πŸ»β€πŸ«": {
      "main": [
        [
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Related Workflows

Automate Chat Responses with OpenAI GPT and Serp API Integration

This workflow seamlessly integrates OpenAI GPT and Serp API to enhance your chat interactions by providing AI-driven responses based on real-time information. Ideal for AI-powered automation users, it requires 2 accounts: OpenAI API and Serp API. Save hours in customer engagement and provide instant, accurate information, boosting your response efficiency and customer satisfaction.

965,983 views
Personal ProductivityAI Chatbot

Automate WhatsApp Responses with OpenAI GPT and Vector Store

Streamline your customer interactions by automating WhatsApp responses using the WhatsApp Business API and OpenAI GPT. This workflow integrates AI Chat capabilities with advanced Vector Storage and AI Embeddings, making it perfect for AI-powered automation users. Requires 3 accounts: WhatsApp Trigger API, OpenAI API, and WhatsApp Business API. Save hours on customer queries and boost engagement, handling 100+ interactions effortlessly.

378,381 views
Lead NurturingAI Chatbot

Automate Customer Interactions with OpenAI GPT Chat Agent

Streamline your customer engagement by automating interactions using the OpenAI GPT API and AI Chat features. This workflow connects chat triggers to an AI Agent, enabling seamless, intelligent responses to user inquiries. Perfect for AI-powered automation users looking to enhance customer experience. Requires 1 account: OpenAI API. Save hours of manual responses and boost customer satisfaction by handling multiple queries simultaneously.

244,803 views
EngineeringAI Chatbot

Automate RSS Feed Analysis with Google Gemini & AI Agent

Streamline your RSS feed monitoring by leveraging Google Gemini and AI Agent for real-time insights. This workflow reads RSS feeds, processes data through HTTP requests, and engages in AI chat for interactive analysis. Perfect for developers and integrators. Requires 0 accounts. Save hours weekly by automating data collection and enhancing decision-making with intelligent insights.

214,119 views
Personal ProductivityAI Chatbot

How to Use This Workflow

1Import to n8n

  1. Copy the JSON using the button above
  2. Open your n8n instance
  3. Click β€œImport workflow” or press Ctrl+V
  4. Paste the JSON and click β€œImport”

2Before Running

Configure credentials and update service-specific settings before executing the workflow. Review required credentials in the Technical Details section above.

151.5K