Workflow: Telegram Wait Automation

Workflow Details

Download Workflow
{
    "id": "DnHvQ3KL8v8r5L5Z",
    "meta": {
        "instanceId": "ac63467607103d9c95dd644384984672b90b1cb03e07edbaf18fe72b2a6c45bb",
        "templateCredsSetupCompleted": true
    },
    "name": "Telegram Chat with Buffering",
    "tags": [],
    "nodes": [
        {
            "id": "a3cc74e9-c696-48de-a04e-d48555641897",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -1640,
                -800
            ],
            "parameters": {
                "color": 7,
                "width": 220,
                "height": 280,
                "content": "## 1. Receive Message\n\n"
            },
            "typeVersion": 1
        },
        {
            "id": "ff18667d-0a31-4768-acf8-ed0d53b2f382",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                160,
                -840
            ],
            "parameters": {
                "color": 7,
                "width": 600,
                "height": 520,
                "content": "## 3. AI Assistant\n"
            },
            "typeVersion": 1
        },
        {
            "id": "ce90f954-19b6-4224-ae88-b20c4da639e6",
            "name": "Reply",
            "type": "n8n-nodes-base.telegram",
            "position": [
                920,
                -700
            ],
            "webhookId": "e3313c88-0d56-4d06-81cf-b48870dfe2fe",
            "parameters": {
                "text": "={{ $json.output }}",
                "chatId": "={{ $('Receive Message').item.json.message.chat.id }}",
                "additionalFields": {
                    "appendAttribution": false
                }
            },
            "credentials": {
                "telegramApi": {
                    "id": "lvrGkOs0ywXp5agp",
                    "name": "Telegram bsde.ai"
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "6f46d89b-034c-47ea-a217-8d007bec1531",
            "name": "Receive Message",
            "type": "n8n-nodes-base.telegramTrigger",
            "position": [
                -1580,
                -680
            ],
            "webhookId": "5047a673-ca1d-4e87-b51b-893108de0a59",
            "parameters": {
                "updates": [
                    "message"
                ],
                "additionalFields": []
            },
            "credentials": {
                "telegramApi": {
                    "id": "lvrGkOs0ywXp5agp",
                    "name": "Telegram bsde.ai"
                }
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "0f391daa-0e74-4058-8923-52f3c050c9ad",
            "name": "Wait 10 Seconds",
            "type": "n8n-nodes-base.wait",
            "position": [
                -1000,
                -580
            ],
            "webhookId": "87994c9a-fd20-48b6-8dbe-9af36dc40b2f",
            "parameters": {
                "amount": 10
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "8e6495d8-db6e-4692-ade5-45239049de34",
            "name": "Sticky Note3",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -1320,
                -760
            ],
            "parameters": {
                "color": 7,
                "width": 1400,
                "height": 440,
                "content": "## 2. Buffer Incoming Messages"
            },
            "typeVersion": 1
        },
        {
            "id": "d4876fd2-2e0b-4f82-9dc3-553f926310bd",
            "name": "Add to Queued Messages",
            "type": "n8n-nodes-base.supabase",
            "position": [
                -1240,
                -680
            ],
            "parameters": {
                "tableId": "message_queue",
                "fieldsUi": {
                    "fieldValues": [
                        {
                            "fieldId": "user_id",
                            "fieldValue": "={{ $json.message.chat.id }}"
                        },
                        {
                            "fieldId": "message",
                            "fieldValue": "={{ $json.message.text }}"
                        },
                        {
                            "fieldId": "message_id",
                            "fieldValue": "={{ $json.message.message_id }}"
                        }
                    ]
                }
            },
            "credentials": {
                "supabaseApi": {
                    "id": "1iEg1EzFrF29iqp2",
                    "name": "Supabase (bsde.ai)"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "a2eeb77f-2d74-44ac-9812-c3659d2e2803",
            "name": "No Operation, do nothing",
            "type": "n8n-nodes-base.noOp",
            "position": [
                -340,
                -460
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "638fc82e-aba1-4deb-b506-33dcf4746896",
            "name": "Aggregate",
            "type": "n8n-nodes-base.aggregate",
            "position": [
                220,
                -700
            ],
            "parameters": {
                "options": [],
                "fieldsToAggregate": {
                    "fieldToAggregate": [
                        {
                            "fieldToAggregate": "message"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "id": "772f60e5-e52f-4779-aa03-e4d532ee4b5c",
            "name": "Delete Queued Messages",
            "type": "n8n-nodes-base.supabase",
            "position": [
                -100,
                -700
            ],
            "parameters": {
                "filters": {
                    "conditions": [
                        {
                            "keyName": "user_id",
                            "keyValue": "={{ $json.user_id }}",
                            "condition": "eq"
                        }
                    ]
                },
                "tableId": "message_queue",
                "operation": "delete"
            },
            "credentials": {
                "supabaseApi": {
                    "id": "1iEg1EzFrF29iqp2",
                    "name": "Supabase (bsde.ai)"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "16b46a70-85a0-4c8c-94ba-172ebe9aafa4",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                860,
                -780
            ],
            "parameters": {
                "color": 7,
                "width": 280,
                "height": 260,
                "content": "## 4. Send Reply\n\n\n"
            },
            "typeVersion": 1
        },
        {
            "id": "9162f110-465f-4cd6-9f03-17751d7e43a4",
            "name": "OpenAI Chat Model",
            "type": "@n8n\/n8n-nodes-langchain.lmChatOpenAi",
            "position": [
                380,
                -460
            ],
            "parameters": {
                "model": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gpt-4o-mini"
                },
                "options": []
            },
            "credentials": {
                "openAiApi": {
                    "id": "1OMpAMAKR9l3eUDI",
                    "name": "OpenAi account"
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "b47ef0c9-725b-4837-b9e9-96a4ff2b3636",
            "name": "Sort by Message ID",
            "type": "n8n-nodes-base.sort",
            "position": [
                -580,
                -680
            ],
            "parameters": {
                "options": [],
                "sortFieldsUi": {
                    "sortField": [
                        {
                            "fieldName": "message_id"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "id": "1aa80c99-eec8-4174-bcf3-c6873354ed0f",
            "name": "Get Queued Messages",
            "type": "n8n-nodes-base.supabase",
            "position": [
                -780,
                -680
            ],
            "parameters": {
                "filters": {
                    "conditions": [
                        {
                            "keyName": "user_id",
                            "keyValue": "={{ $('Receive Message').item.json.message.from.id }}",
                            "condition": "eq"
                        }
                    ]
                },
                "tableId": "message_queue",
                "operation": "getAll",
                "returnAll": true
            },
            "credentials": {
                "supabaseApi": {
                    "id": "1iEg1EzFrF29iqp2",
                    "name": "Supabase (bsde.ai)"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "85050328-b5aa-47fe-802c-7d9f31f225cb",
            "name": "Check Most Recent Message",
            "type": "n8n-nodes-base.if",
            "position": [
                -360,
                -680
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "loose"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "8852bab7-230e-442a-a4a2-994e979c8f9f",
                            "operator": {
                                "type": "number",
                                "operation": "equals"
                            },
                            "leftValue": "={{ $input.last().json.message_id }}\n",
                            "rightValue": "={{ $('Receive Message').item.json.message.message_id }}"
                        }
                    ]
                },
                "looseTypeValidation": true
            },
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "bed86d81-bb57-42ce-aaa7-4bdc21e1651c",
            "name": "AI Agent",
            "type": "@n8n\/n8n-nodes-langchain.agent",
            "position": [
                420,
                -700
            ],
            "parameters": {
                "text": "={{ $json.message.join(String.fromCharCode(10)) }}",
                "options": [],
                "promptType": "define"
            },
            "typeVersion": 1.6999999999999999555910790149937383830547332763671875
        },
        {
            "id": "4f468a14-fbea-44ec-a2b8-e4b3785c0362",
            "name": "Postgres Chat Memory",
            "type": "@n8n\/n8n-nodes-langchain.memoryPostgresChat",
            "position": [
                560,
                -460
            ],
            "parameters": {
                "sessionKey": "={{ $('Receive Message').item.json.message.chat.id }}",
                "sessionIdType": "customKey"
            },
            "credentials": {
                "postgres": {
                    "id": "tzLXHvhykxvYghPC",
                    "name": "bsde.ai Supabase (Session Pooler)"
                }
            },
            "typeVersion": 1.3000000000000000444089209850062616169452667236328125
        },
        {
            "id": "610516e8-d4ad-448e-ac97-17aad1a31862",
            "name": "Sticky Note4",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -2420,
                -820
            ],
            "parameters": {
                "width": 700,
                "height": 420,
                "content": "## Allow Users to Send a Sequence of Messages to an AI Agent in Telegram with Supabase\n### Use Case\nWhen creating chatbots that interface through applications such as **Telegram** and **WhatsApp**, users can often sends multiple shorter messages in quick succession, in place of a single, longer message. This workflow accounts for this behaviour.\n### What it Does\nThis workflow allows users to send several messages in quick succession, treating them as one coherent conversation instead of separate messages requiring individual responses. \n### How it Works\n1. When messages arrive, they are stored in a **Supabase PostgreSQL** table\n2. The system waits briefly to see if additional messages arrive\n3. If no new messages arrive within the waiting period, all queued messages are:\n   - Combined and processed as a single conversation\n   - Responded to with one unified reply\n   - Deleted from the queue"
            },
            "typeVersion": 1
        },
        {
            "id": "c8bd8777-fb0f-4941-8674-f5bb7c264506",
            "name": "Sticky Note5",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -1640,
                -1060
            ],
            "parameters": {
                "width": 520,
                "height": 220,
                "content": "### Setup\n1. Create a table in Supabase called **message_queue**. It needs to have the following columns: **user_id** (`uint8`), **message** (`text`), and **message_id** (`uint8`)\n2. Add your **Telegram**, **Supabase**, **OpenAI**, and **PostgreSQL** credentials\n3. Activate the workflow and test by sending multiple messages the Telegram bot in one go\n4. Wait ten seconds after which you will receive a single reply to all of your messages"
            },
            "typeVersion": 1
        },
        {
            "id": "24604fc7-7957-4e20-8303-b31f2ce1e257",
            "name": "Sticky Note6",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -1060,
                -700
            ],
            "parameters": {
                "color": 5,
                "width": 220,
                "height": 280,
                "content": "### Modification\nChange the value of *Wait Amount* to vary the buffering window"
            },
            "typeVersion": 1
        },
        {
            "id": "24f388f3-5655-4bd4-9c30-978efb2dc400",
            "name": "Sticky Note8",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                180,
                -480
            ],
            "parameters": {
                "color": 5,
                "width": 340,
                "height": 140,
                "content": "### Modification\nReplace this sub-node \nto use a different language\n model"
            },
            "typeVersion": 1
        },
        {
            "id": "3db12526-6b97-4e3a-b53d-987f5d20c46e",
            "name": "Sticky Note9",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                380,
                -800
            ],
            "parameters": {
                "color": 5,
                "width": 340,
                "height": 240,
                "content": "### Modification\nAdd a **System Message** to tailor the chatbot to your use case"
            },
            "typeVersion": 1
        }
    ],
    "active": true,
    "pinData": [],
    "settings": {
        "callerPolicy": "workflowsFromSameOwner",
        "executionOrder": "v1"
    },
    "versionId": "e415eb18-1bb9-426b-b759-0ba269db1f8f",
    "connections": {
        "AI Agent": {
            "main": [
                [
                    {
                        "node": "Reply",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Aggregate": {
            "main": [
                [
                    {
                        "node": "AI Agent",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Receive Message": {
            "main": [
                [
                    {
                        "node": "Add to Queued Messages",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Wait 10 Seconds": {
            "main": [
                [
                    {
                        "node": "Get Queued Messages",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "OpenAI Chat Model": {
            "ai_languageModel": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "Sort by Message ID": {
            "main": [
                [
                    {
                        "node": "Check Most Recent Message",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get Queued Messages": {
            "main": [
                [
                    {
                        "node": "Sort by Message ID",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Postgres Chat Memory": {
            "ai_memory": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_memory",
                        "index": 0
                    }
                ]
            ]
        },
        "Add to Queued Messages": {
            "main": [
                [
                    {
                        "node": "Wait 10 Seconds",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Delete Queued Messages": {
            "main": [
                [
                    {
                        "node": "Aggregate",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Check Most Recent Message": {
            "main": [
                [
                    {
                        "node": "Delete Queued Messages",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "No Operation, do nothing",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Remove Advanced Background from Google Drive Images
View
Wait Splitout Send Webhook
View
Track Working Time and Pauses
View
Send Typeforms leads via Whatsapp (Twilio)
View
GoogleSheets Webflow Create Triggered
View
Splitout Schedule Update Scheduled
View
Limit Code Automation Scheduled
View
Google Calendar Event Reminder
View
Perplexity Researcher
View
Extract And Decode Google News RSS URLs to Clean Article Links
View