Workflow n8n

Automatisation Telegram avec n8n : gestion de sessions multiples

Ce workflow n8n permet d'automatiser la gestion de sessions multiples pour un chatbot sur Telegram, en intégrant des modèles de langage d'OpenAI. Dans un contexte où les entreprises cherchent à améliorer leur interaction client, ce système facilite la gestion des conversations en ligne. Les cas d'usage incluent la réponse automatique aux questions des utilisateurs, la personnalisation des interactions et la gestion des sessions de chat. Étape 1 : le workflow est déclenché par un message reçu sur Telegram via le nœud 'Get message'. Étape 2 : le message est analysé pour déterminer s'il s'agit d'une commande ou d'un texte normal grâce au nœud 'Command or text?'. Étape 3 : si une session existe, elle est récupérée via le nœud 'Get session', sinon une nouvelle session est créée. Étape 4 : les réponses sont générées à l'aide des modèles OpenAI, et les résultats sont envoyés à l'utilisateur via le nœud 'Send response'. Ce processus permet d'améliorer l'efficacité des interactions et de réduire le temps de réponse, offrant ainsi une meilleure expérience utilisateur. En intégrant cette automatisation n8n, les entreprises peuvent se concentrer sur des tâches à plus forte valeur ajoutée tout en maintenant une communication fluide avec leurs clients. Tags clés : automatisation, Telegram, OpenAI.

Catégorie: Webhook · Tags: automatisation, Telegram, OpenAI, chatbot, n8n0

Vue d'ensemble du workflow n8n

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

Détail des nœuds du workflow n8n

  • OpenAI Chat Model

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

  • Simple Memory

    Ce noeud gère la mémoire simple en stockant des informations dans une fenêtre de contexte définie.

  • Get message

    Ce noeud déclenche le workflow en récupérant les messages d'un chat Telegram.

  • Command or text?

    Ce noeud évalue si le message reçu est une commande ou un texte normal, en fonction des règles définies.

  • Get session

    Ce noeud récupère une session depuis une feuille Google Sheets selon les filtres spécifiés.

  • Disable previous session

    Ce noeud désactive une session précédente dans une feuille Google Sheets.

  • Set new session

    Ce noeud crée une nouvelle session dans une feuille Google Sheets.

  • Session activated

    Ce noeud envoie un message Telegram pour indiquer qu'une session a été activée.

  • Send response

    Ce noeud envoie une réponse via Telegram en utilisant le texte et l'identifiant de chat fournis.

  • Update database

    Ce noeud met à jour une base de données dans Google Sheets selon les colonnes et l'opération spécifiées.

  • Sticky Note

    Ce noeud crée une note adhésive avec les paramètres de couleur, taille et contenu spécifiés.

  • Summarization Chain

    Ce noeud exécute une chaîne de résumé en utilisant les options fournies.

  • OpenAI Chat Model1

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

  • OpenAI Chat Model2

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

  • Basic LLM Chain

    Ce noeud exécute une chaîne de traitement de langage naturel de base en utilisant les messages et le type de prompt fournis.

  • Get message1

    Ce noeud définit des valeurs dans le workflow en utilisant les options et les affectations spécifiées.

  • Set to expire

    Ce noeud définit une date d'expiration pour une entrée dans Google Sheets.

  • Exist?

    Ce noeud évalue une condition pour déterminer si une certaine condition est remplie.

  • OK

    Ce noeud envoie un message Telegram pour indiquer que l'opération a réussi.

  • KO

    Ce noeud envoie un message Telegram pour indiquer que l'opération a échoué.

  • Trim resume

    Ce noeud exécute un code JavaScript pour nettoyer un résumé.

  • Get session1

    Ce noeud récupère une session depuis une feuille Google Sheets selon les filtres spécifiés.

  • Prompt + Resume

    Ce noeud exécute un code JavaScript pour combiner un prompt et un résumé.

  • Send summary

    Ce noeud envoie un résumé via Telegram en utilisant le texte et l'identifiant de chat fournis.

  • Get message2

    Ce noeud définit des valeurs dans le workflow en utilisant les options et les affectations spécifiées.

  • Trim question

    Ce noeud exécute un code JavaScript pour nettoyer une question.

  • Set new current session

    Ce noeud crée une nouvelle session actuelle dans une feuille Google Sheets.

  • Response + Text

    Ce noeud envoie une réponse et un texte à une feuille Google Sheets selon les options et filtres spécifiés.

  • fullText

    Ce noeud exécute un code JavaScript pour générer un texte complet.

  • Send answer

    Ce noeud envoie une réponse via Telegram en utilisant le texte et l'identifiant de chat fournis.

  • Send current session

    Ce noeud envoie la session actuelle via Telegram en utilisant le texte et l'identifiant de chat fournis.

  • Sticky Note1

    Ce noeud crée une note adhésive avec les paramètres de taille et de contenu spécifiés.

  • Sticky Note2

    Ce noeud crée une note adhésive avec les paramètres de taille et de contenu spécifiés.

  • Sticky Note3

    Ce noeud crée une note adhésive avec les paramètres de taille et de contenu spécifiés.

  • Sticky Note4

    Ce noeud crée une note adhésive avec les paramètres de taille et de contenu spécifiés.

  • Sticky Note5

    Ce noeud crée une note adhésive avec les paramètres de taille et de contenu spécifiés.

  • Sticky Note6

    Ce noeud crée une note adhésive avec les paramètres de taille et de contenu spécifiés.

  • Telegram Chatbot

    Ce noeud utilise un agent de chat Telegram pour traiter le texte et les options fournies.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "A7dRnMf9WybO8O02",
  "meta": {
    "instanceId": "a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462",
    "templateCredsSetupCompleted": true
  },
  "name": "Telegram ChatBot with multiple sessions",
  "tags": [],
  "nodes": [
    {
      "id": "d3104851-90ec-4f0c-ab4d-aee5a6faf81b",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        640,
        1180
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "4zwP0MSr8zkNvvV9",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e25050a1-e49b-4b46-8452-ce7b3388c7f3",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        780,
        1180
      ],
      "parameters": {
        "sessionKey": "={{ $('Get session').item.json.SESSION }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 100
      },
      "typeVersion": 1.3
    },
    {
      "id": "d50951ae-e9a2-492c-8ff5-a039ca6975e4",
      "name": "Get message",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -520,
        -60
      ],
      "webhookId": "8d87dcf7-1608-4255-a1f1-03b700a42f0e",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1bc9aa0f-8af8-47b8-b7d7-6bfd9280b65f",
      "name": "Command or text?",
      "type": "n8n-nodes-base.switch",
      "position": [
        -20,
        -60
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "New session",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "955f3c39-0732-4a63-b3f7-70ab0753a68a",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Get message').item.json.message.text }}",
                    "rightValue": "/new"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Current session",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "790f64bc-f3cc-4ef4-9d43-80853742fee6",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Get message').item.json.message.text }}",
                    "rightValue": "/current"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Resume session",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "39f35352-aee4-4a16-b82f-7f58ab8120f0",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Get message').item.json.message.text }}",
                    "rightValue": "/resume"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Summary ",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "270d71bf-8ecf-46e7-a601-cc5d1dc58e72",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Get message').item.json.message.text }}",
                    "rightValue": "/summary"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Question",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "55fe98fa-e39a-41b3-983f-359a8e730f21",
                    "operator": {
                      "type": "string",
                      "operation": "startsWith"
                    },
                    "leftValue": "={{ $('Get message').item.json.message.text }}",
                    "rightValue": "/question"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "4a405332-99a8-4ec9-84d5-89f9f5f1610f",
      "name": "Get session",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -260,
        -60
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": true
        },
        "filtersUI": {
          "values": [
            {
              "lookupValue": "current",
              "lookupColumn": "STATE"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 207843712,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=207843712",
          "cachedResultName": "Session"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "860fa8d5-6c9b-476b-857b-9c47a023d72f",
      "name": "Disable previous session",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        640,
        -760
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATE": "expire",
            "SESSION": "={{ $('Get session').item.json.SESSION }}"
          },
          "schema": [
            {
              "id": "SESSION",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SESSION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "STATE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "SESSION"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 207843712,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=207843712",
          "cachedResultName": "Session"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "6ff1cf54-5406-4c86-a77e-8424208d4728",
      "name": "Set new session",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        960,
        -760
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATE": "current",
            "SESSION": "={{ $('Get message').item.json.update_id }}"
          },
          "schema": [
            {
              "id": "SESSION",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SESSION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "STATE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 207843712,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=207843712",
          "cachedResultName": "Session"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "be9c755a-0c52-453c-b448-98975d4c6e87",
      "name": "Session activated",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1240,
        -760
      ],
      "webhookId": "fa5e7641-068c-40cb-b490-a6809e74c629",
      "parameters": {
        "text": "New session activated",
        "chatId": "={{ $('Get message').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "31478ec5-c1de-43db-ac9d-9b34f68e951c",
      "name": "Send response",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1100,
        980
      ],
      "webhookId": "fa5e7641-068c-40cb-b490-a6809e74c629",
      "parameters": {
        "text": "={{ $json.output }}",
        "chatId": "={{ $('Get message').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "be35b9a6-2914-409f-bc9c-6199ccb9e4ed",
      "name": "Update database",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1420,
        980
      ],
      "parameters": {
        "columns": {
          "value": {
            "DATE": "={{$now}}",
            "PROMPT": "={{ $('Get message').item.json.message.text }}",
            "SESSION": "={{ $('Get session').item.json.SESSION }}",
            "RESPONSE": "={{ $('Telegram Chatbot').item.json.output }}"
          },
          "schema": [
            {
              "id": "SESSION",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "SESSION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "DATE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "DATE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "PROMPT",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "PROMPT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "RESPONSE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "RESPONSE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=0",
          "cachedResultName": "Database"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "dacc79e0-56ff-47d6-b09f-16ebfb31cbfa",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -540,
        -540
      ],
      "parameters": {
        "color": 3,
        "width": 620,
        "height": 360,
        "content": "# Telegram ChatBot with multiple sessions\n\nThis workflow creates an **AI-powered Telegram chatbot** with **session management**, allowing users to:  \n- **Start new conversations** (`/new`).  \n- **Check current sessions** (`/current`).  \n- **Resume past sessions** (`/resume`).  \n- **Get summaries** (`/summary`).  \n- **Ask questions** (`/question`). \n\n- Clone [this sheet](https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=sharing)"
      },
      "typeVersion": 1
    },
    {
      "id": "55751f99-ee2e-429b-99cd-fef30eb56fb8",
      "name": "Summarization Chain",
      "type": "@n8n/n8n-nodes-langchain.chainSummarization",
      "position": [
        1040,
        200
      ],
      "parameters": {
        "options": {
          "summarizationMethodAndPrompts": {
            "values": {
              "prompt": "=Write a concise summary of the following:\n\n\n\"{{ $json.fullText }}\"\n\n\nCONCISE SUMMARY:",
              "combineMapPrompt": "=Write a concise summary of the following:\n\n\n\"{{ $json.fullText }}\"\n\n\nCONCISE SUMMARY:"
            }
          }
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c7f0d136-4a77-4bc8-b2ef-b03fa41ad1ff",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1020,
        380
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "4zwP0MSr8zkNvvV9",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a455cf00-2f72-4377-ac2a-d65ab8c30e31",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1660,
        800
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "4zwP0MSr8zkNvvV9",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e55082e4-4e65-4fbb-8850-d3b64093eab6",
      "name": "Basic LLM Chain",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1680,
        600
      ],
      "parameters": {
        "text": "=Question:\n{{ $json.question }}",
        "messages": {
          "messageValues": [
            {
              "message": "=You have to answer the questions that are asked by analyzing the following text:\n\n{{ $json.fullText }}"
            }
          ]
        },
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "1e670eaa-fd9f-4e79-b2a8-bd43240455db",
      "name": "Get message1",
      "type": "n8n-nodes-base.set",
      "position": [
        600,
        -100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "56bf47bc-e84c-4cee-8aa0-927f3d2e31c5",
              "name": "text",
              "type": "string",
              "value": "={{ $('Get message').item.json.message.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "65771b1e-47fc-439d-a1ea-9901bac047d8",
      "name": "Set to expire",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1040,
        -100
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATE": "expire",
            "SESSION": "={{ $('Get session').item.json.SESSION }}"
          },
          "schema": [
            {
              "id": "SESSION",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SESSION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "STATE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "SESSION"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 207843712,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=207843712",
          "cachedResultName": "Session"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "d18268f6-8792-4a66-aa32-35b596e7fcad",
      "name": "Exist?",
      "type": "n8n-nodes-base.if",
      "position": [
        1540,
        -100
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1710e38c-80d1-49ba-9814-2b2c6b3c3b8d",
              "operator": {
                "type": "object",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6eeb7e4d-8af0-4d71-981d-66a39f4870a3",
      "name": "OK",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1880,
        -40
      ],
      "webhookId": "fa5e7641-068c-40cb-b490-a6809e74c629",
      "parameters": {
        "text": "=The current session is {{ $json.SESSION }}",
        "chatId": "={{ $('Get message').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1a6b9065-154f-4c43-9406-110636884f3d",
      "name": "KO",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1880,
        -200
      ],
      "webhookId": "fa5e7641-068c-40cb-b490-a6809e74c629",
      "parameters": {
        "text": "=This session doesn't exist",
        "chatId": "={{ $('Get message').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a2463ecc-fc82-401d-bf1b-6104f4b379e6",
      "name": "Trim resume",
      "type": "n8n-nodes-base.code",
      "position": [
        820,
        -100
      ],
      "parameters": {
        "jsCode": "for (const item of $input.all()) {\n  const text = item.json.text || '';\n  const match = text.match(/\\/resume\\s+(.*)/);\n\n  if (match) {\n    item.json.resume = match[1].trim();\n  } else {\n    item.json.resume = null; \n  }\n}\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "c24a0c1d-290f-4e0c-8da9-98de14a65e2b",
      "name": "Get session1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        600,
        200
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $('Get session').item.json.SESSION }}",
              "lookupColumn": "SESSION"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=0",
          "cachedResultName": "Database"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "84cc4b12-ab2b-4509-a2e3-1c4d952904c5",
      "name": "Prompt + Resume",
      "type": "n8n-nodes-base.code",
      "position": [
        820,
        200
      ],
      "parameters": {
        "jsCode": "let fullText = '';\n\nfor (const item of $input.all()) {\n  const prompt = item.json.PROMPT || '';\n  const response = item.json.RESPONSE || '';\n  fullText += `PROMPT: ${prompt}\\nRESPONSE: ${response}\\n`;\n}\nconst chat_id=$('Get message').first().json.message.from.id\n\nreturn [{ json: { fullText, chat_id } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "3ae34388-95a0-41d7-8f20-7fa74817dab8",
      "name": "Send summary",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1420,
        200
      ],
      "webhookId": "fa5e7641-068c-40cb-b490-a6809e74c629",
      "parameters": {
        "text": "={{ $json.response.text }}",
        "chatId": "={{ $('Prompt + Resume').item.json.chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d38eb058-29a3-4500-b6de-f700b8f501e9",
      "name": "Get message2",
      "type": "n8n-nodes-base.set",
      "position": [
        620,
        600
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "56bf47bc-e84c-4cee-8aa0-927f3d2e31c5",
              "name": "text",
              "type": "string",
              "value": "={{ $('Get message').item.json.message.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ee6713b5-6264-43e8-86a4-f9584049f05b",
      "name": "Trim question",
      "type": "n8n-nodes-base.code",
      "position": [
        860,
        600
      ],
      "parameters": {
        "jsCode": "for (const item of $input.all()) {\n  const text = item.json.text || '';\n  const match = text.match(/\\/question\\s+(.*)/);\n\n  if (match) {\n    item.json.question = match[1].trim();\n  } else {\n    item.json.question = null; // oppure \"\" se preferisci\n  }\n}\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "65482069-1c41-4977-8f18-75f192866fdd",
      "name": "Set new current session",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1280,
        -100
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATE": "current",
            "SESSION": "={{ $('Trim resume').item.json.resume }}"
          },
          "schema": [
            {
              "id": "SESSION",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SESSION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "STATE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "SESSION"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 207843712,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=207843712",
          "cachedResultName": "Session"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "notesInFlow": false,
      "typeVersion": 4.5,
      "alwaysOutputData": true
    },
    {
      "id": "91ef2595-acca-4efd-8331-3450fa466d33",
      "name": "Response + Text",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1140,
        600
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $('Get session').item.json.SESSION }}",
              "lookupColumn": "SESSION"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit#gid=0",
          "cachedResultName": "Database"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1MCJLAqKP0Y7Qr68ZYoSSBeEVyKI1QgAAZnlEiyqkzXo/edit?usp=drivesdk",
          "cachedResultName": "Chatbot with session"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "2fbaf240-c01e-48dc-90bf-cc655eb7cd4d",
      "name": "fullText",
      "type": "n8n-nodes-base.code",
      "position": [
        1440,
        600
      ],
      "parameters": {
        "jsCode": "let fullText = '';\n\nfor (const item of $input.all()) {\n  const prompt = item.json.PROMPT || '';\n  const response = item.json.RESPONSE || '';\n  fullText += `PROMPT: ${prompt}\\nRESPONSE: ${response}\\n`;\n}\nconst chat_id=$('Get message').first().json.message.from.id;\nconst question=$('Trim question').first().json.question;\n\nreturn [{ json: { fullText, chat_id, question } }];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "30e29b4f-da86-4cee-b875-7985b5d82b7e",
      "name": "Send answer",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2080,
        600
      ],
      "webhookId": "fa5e7641-068c-40cb-b490-a6809e74c629",
      "parameters": {
        "text": "={{ $json.text }}",
        "chatId": "={{ $('fullText').item.json.chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "41e2b5b3-25a2-411c-929a-ad4c22f45cd1",
      "name": "Send current session",
      "type": "n8n-nodes-base.telegram",
      "position": [
        620,
        -440
      ],
      "webhookId": "fa5e7641-068c-40cb-b490-a6809e74c629",
      "parameters": {
        "text": "=The current session is {{ $('Get session').item.json.SESSION }}",
        "chatId": "={{ $('Get message').item.json.message.from.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "rQ5q95W7uKesMDx4",
          "name": "Telegram account Fastewb"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e30bb12b-8e46-4fe4-81b7-72ce036d431f",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -880
      ],
      "parameters": {
        "width": 580,
        "height": 80,
        "content": "## NEW SESSION\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7e23ee2d-b4ee-4be8-969b-c713039dacdf",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -560
      ],
      "parameters": {
        "width": 580,
        "height": 80,
        "content": "## GET CURRENT SESSION\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5b10cf55-3730-4e0c-8db7-49c82e9b1350",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        600,
        -220
      ],
      "parameters": {
        "width": 580,
        "height": 80,
        "content": "## RESUME SESSION\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f0932a2c-ebf2-4179-972a-073e5edfa50d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        600,
        100
      ],
      "parameters": {
        "width": 580,
        "height": 80,
        "content": "## GET SUMMARY\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9d9fdca4-870b-4ef4-9415-2fb750eb6466",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        500
      ],
      "parameters": {
        "width": 580,
        "height": 80,
        "content": "## SEND QUESTION\n"
      },
      "typeVersion": 1
    },
    {
      "id": "aa55d92a-ec31-42c3-8b17-fa9d81d99c31",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        860
      ],
      "parameters": {
        "width": 580,
        "height": 80,
        "content": "## CHATBOT\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fa4dd49c-881b-41d2-84b4-82cbd3e62d0e",
      "name": "Telegram Chatbot",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        640,
        980
      ],
      "parameters": {
        "text": "={{ $('Get message').item.json.message.text }}",
        "options": {
          "systemMessage": "=Sei un assitente virtuale:\n\nData e ora corrente: {{ $now }}"
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "timezone": "Europe/Rome",
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1",
    "executionTimeout": -1
  },
  "versionId": "c6d418c0-aec9-498a-b5c7-318a3e4efe0b",
  "connections": {
    "Exist?": {
      "main": [
        [
          {
            "node": "KO",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "OK",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fullText": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get message": {
      "main": [
        [
          {
            "node": "Get session",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get session": {
      "main": [
        [
          {
            "node": "Command or text?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trim resume": {
      "main": [
        [
          {
            "node": "Set to expire",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get message1": {
      "main": [
        [
          {
            "node": "Trim resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get message2": {
      "main": [
        [
          {
            "node": "Trim question",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get session1": {
      "main": [
        [
          {
            "node": "Prompt + Resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send response": {
      "main": [
        [
          {
            "node": "Update database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set to expire": {
      "main": [
        [
          {
            "node": "Set new current session",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Telegram Chatbot",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Trim question": {
      "main": [
        [
          {
            "node": "Response + Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Send answer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prompt + Resume": {
      "main": [
        [
          {
            "node": "Summarization Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Response + Text": {
      "main": [
        [
          {
            "node": "fullText",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set new session": {
      "main": [
        [
          {
            "node": "Session activated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Command or text?": {
      "main": [
        [
          {
            "node": "Disable previous session",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send current session",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get message1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get session1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get message2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Telegram Chatbot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Chatbot": {
      "main": [
        [
          {
            "node": "Send response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Telegram Chatbot",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Summarization Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Summarization Chain": {
      "main": [
        [
          {
            "node": "Send summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set new current session": {
      "main": [
        [
          {
            "node": "Exist?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Disable previous session": {
      "main": [
        [
          {
            "node": "Set new session",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse aux entreprises souhaitant optimiser leur service client via des chatbots sur Telegram. Il est particulièrement utile pour les équipes marketing et support client, ainsi que pour les développeurs cherchant à intégrer des solutions d'automatisation sans code. Un niveau technique intermédiaire est recommandé pour la personnalisation.

Problème résolu

Ce workflow résout le problème de gestion des conversations multiples sur Telegram, souvent source de confusion et de lenteur dans les réponses. En automatisant la gestion des sessions, il élimine les frustrations liées aux réponses manuelles et réduit le risque d'erreurs humaines. Les utilisateurs bénéficient d'une réponse rapide et personnalisée, ce qui améliore leur satisfaction et leur engagement.

Étapes du workflow

Étape 1 : Le workflow est déclenché par un message reçu sur Telegram. Étape 2 : Le type de message est déterminé pour savoir s'il s'agit d'une commande ou d'un texte normal. Étape 3 : Si une session existe, elle est récupérée, sinon une nouvelle session est créée. Étape 4 : Les réponses sont générées à l'aide des modèles OpenAI. Étape 5 : Les résultats sont envoyés à l'utilisateur via Telegram. Étape 6 : Les sessions sont mises à jour dans Google Sheets pour un suivi efficace.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, vous pouvez modifier les paramètres des nœuds OpenAI pour ajuster le modèle de langage utilisé. Il est également possible de changer le nom de la feuille Google Sheets pour correspondre à votre structure de données. Pour intégrer d'autres outils, vous pouvez ajouter des nœuds supplémentaires après le nœud 'Get message'. Assurez-vous de sécuriser les accès aux données en configurant les autorisations appropriées dans Google Sheets.