This workflow corresponds to n8n.io template #7408 — we link there as the canonical source.
This workflow follows the HTTP Request → Telegram recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "Ww0AQa4S9gdEufHm",
"name": "update-dialogflow-intent",
"tags": [],
"nodes": [
{
"id": "b4b01f56-7d60-4f6c-85e9-34a9830cba84",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
720,
64
],
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"typeVersion": 1.2
},
{
"id": "65318063-9d5e-4bc4-bc12-63399d212041",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
208
],
"parameters": {
"color": 6,
"width": 352,
"height": 352,
"content": "## The full intent is obtained\nHere you get the entire content of the intent (in JSON)\n\nEs: se obtiene el intent completo.\nAqu\u00ed se obtiene todo el contenido del intent \n(en JSON)"
},
"typeVersion": 1
},
{
"id": "ab0bd27a-f742-4384-a31c-c0ef9b0b19fb",
"name": "Mensaje de confirmaci\u00f3n",
"type": "n8n-nodes-base.telegram",
"position": [
2272,
160
],
"parameters": {
"text": "=The intent's response: *{{ $json.displayName }}* has been updated.\nLa respuesta del intent: *{{ $json.displayName }}* ha sido actualizada.",
"chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"executeOnce": true,
"typeVersion": 1.2
},
{
"id": "45611585-e6f7-4244-9ac4-bb6ffa6b3312",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2160,
-32
],
"parameters": {
"color": 4,
"width": 320,
"height": 400,
"content": "## Confirmation message\nIt is reported that the intent has been updated.\n\n## Mensaje de confirmaci\u00f3n\nSe informa que el intent ha sido actualizado."
},
"typeVersion": 1
},
{
"id": "579734d4-a471-4515-9557-865ace2add00",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1760,
-32
],
"parameters": {
"width": 272,
"height": 400,
"content": "## The intent is updated\nIn the **body** the entire JSON is placed with the updated text part\n\nEs: se actualiza el intent\nEn el **body** se coloca todo el JSON con la parte del texto actualizada"
},
"typeVersion": 1
},
{
"id": "8d8643cc-9b32-4a58-9c34-c1c70e6e1bca",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-96
],
"parameters": {
"color": 5,
"width": 1008,
"height": 512,
"content": "## The user and the submitted keyword are validated.\nSe valida al usuario y la palabra clave enviada."
},
"typeVersion": 1
},
{
"id": "7fcfe1d0-1e62-40f2-8e52-df7718f03a30",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-224
],
"parameters": {
"color": 6,
"width": 352,
"height": 400,
"content": "## Instrucciones en espa\u00f1ol\n\n1. Ejecuta el nodo \"HTTP Request OBTIENE\" y copia todo el contenido del JSON resultante.\n\n2. Pega el contenido en el nodo \"HTTP Request ACTUALIZA\".\n\n3. Elimina los corchetes de apertura (al principio) y cierre (al final) del JSON.\n\n**Nota:** Aseg\u00farate de eliminar solo los corchetes externos para mantener la estructura JSON v\u00e1lida."
},
"typeVersion": 1
},
{
"id": "3f7d2236-1df2-45b6-9b67-2284a68ad17b",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
608
],
"parameters": {
"color": 6,
"width": 352,
"height": 544,
"content": "## \ud83d\udd0d Obtener el **Intent ID** desde la URL en Dialogflow\n\nCuando accedes a Dialogflow y abres un intent en tu navegador, la barra de direcciones muestra una URL con la siguiente estructura:\nhttps://dialogflow.cloud.google.com/#/agent/{TU_PROJECT_ID}/intents/{INTENT_ID}/edit\n\nAs\u00ed ser\u00eda la URL final que debes colocar:\nhttps://dialogflow.googleapis.com/v2/projects/{TU_PROJECT_ID}/agent/intents/{INTENT_ID}\n\n- **`{TU_PROJECT_ID}`** \u2192 Corresponde al ID de tu proyecto en Google Cloud.\n- **`{INTENT_ID}`** \u2192 Es el identificador \u00fanico del intent.\n\n\ud83d\udccc **El `INTENT_ID` es siempre la \u00faltima parte de la URL antes de `/edit`**. \nEste es el valor que debes usar para identificar o modificar un intent espec\u00edfico.\n"
},
"typeVersion": 1
},
{
"id": "80629b25-7239-4fdc-8e79-263d70602445",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
608
],
"parameters": {
"color": 6,
"width": 352,
"height": 544,
"content": "## \ud83d\udd0d Get the **Intent ID** from the URL in Dialogflow\n\nWhen you access Dialogflow and open an intent in your browser, the address bar shows a URL with the following structure: \nhttps://dialogflow.cloud.google.com/#/agent/{YOUR_PROJECT_ID}/intents/{INTENT_ID}/edit\n\nThis would be the final URL you should use: \nhttps://dialogflow.googleapis.com/v2/projects/{YOUR_PROJECT_ID}/agent/intents/{INTENT_ID}\n\n- **`{YOUR_PROJECT_ID}`** \u2192 Refers to your Google Cloud project ID. \n- **`{INTENT_ID}`** \u2192 Is the unique identifier of the intent. \n\n\ud83d\udccc **The `INTENT_ID` is always the last part of the URL before `/edit`**. \nThis is the value you should use to identify or modify a specific intent.\n"
},
"typeVersion": 1
},
{
"id": "468982d8-0a85-4ba0-9319-9d2c09338826",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
-224
],
"parameters": {
"color": 6,
"width": 352,
"height": 400,
"content": "## Instructions in English\n\n1. Run the \"HTTP Request GET\" node and copy the entire resulting JSON content. \n\n2. Paste the content into the \"HTTP Request UPDATE\" node. \n\n3. Remove the opening bracket (at the beginning) and the closing bracket (at the end) of the JSON. \n\n**Note:** Make sure to remove only the outer brackets to keep a valid JSON structure. \n"
},
"typeVersion": 1
},
{
"id": "c2ab4de0-656f-40bd-94d8-28db701808c2",
"name": "HTTP Request GET",
"type": "n8n-nodes-base.httpRequest",
"position": [
32,
384
],
"parameters": {
"url": "https://dialogflow.googleapis.com/v2/projects/bot-encuestador-9iar/agent/intents/587093b8-6732-4505-85e1-24a5889cac9b",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "intentView",
"value": "INTENT_VIEW_FULL"
}
]
},
"nodeCredentialType": "googleApi"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "d906292c-83c3-4bd1-a13c-ddb2be8a17c4",
"name": "User validation by ID",
"type": "n8n-nodes-base.if",
"position": [
944,
64
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3f4c5e75-e48d-450a-896b-4bd396851417",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{ $json.message.from.id }}",
"rightValue": "={{ Telegram_user_ID }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "19087cef-9123-4572-bc67-2bdd1e0190a6",
"name": "Keyword validation",
"type": "n8n-nodes-base.if",
"position": [
1200,
-48
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "30b2659a-c708-4cb4-8576-913182ec1e65",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.message.text }}",
"rightValue": "update"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "8dc75d03-3895-499f-9612-43bdfa8d847e",
"name": "Invalid user message",
"type": "n8n-nodes-base.telegram",
"position": [
1088,
224
],
"parameters": {
"text": "Invalid user\nUsuario inv\u00e1lido",
"chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"typeVersion": 1.2
},
{
"id": "bf212774-5916-4f3e-b59a-07e7bc1cba03",
"name": "Invalid keyword message",
"type": "n8n-nodes-base.telegram",
"position": [
1376,
144
],
"parameters": {
"text": "Invalid word\nPalabra inv\u00e1lida",
"chatId": "={{ $json.message.from.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"typeVersion": 1.2
},
{
"id": "83012a3d-eb68-4396-b477-01215e7e8214",
"name": "HTTP Request UPDATE",
"type": "n8n-nodes-base.httpRequest",
"position": [
1856,
160
],
"parameters": {
"url": "https://dialogflow.googleapis.com/v2/projects/bot-encuestador-9iar/agent/intents/587093b8-6732-4505-85e1-24a5889cac9b",
"method": "PATCH",
"options": {},
"jsonBody": " {\n \"name\": \"projects/bot-encuestador-9iar/agent/intents/587093b8-6732-4505-85e1-24a5889cac9b\",\n \"displayName\": \"Programaci\u00f3n-de-estudio\",\n \"priority\": 500000,\n \"trainingPhrases\": [\n {\n \"name\": \"d83bdd34-3f98-46cc-8d08-3257495d503a\",\n \"type\": \"EXAMPLE\",\n \"parts\": [\n {\n \"text\": \"programa\",\n \"entityType\": \"@sys.ordinal\",\n \"alias\": \"ordinal\",\n \"userDefined\": true\n },\n {\n \"text\": \" de estudio\"\n }\n ]\n },\n {\n \"name\": \"75209d1d-180c-42c8-940b-b42e61ceb4e5\",\n \"type\": \"EXAMPLE\",\n \"parts\": [\n {\n \"text\": \"Programaci\u00f3n de \"\n },\n {\n \"text\": \"estudio\",\n \"entityType\": \"@sys.any\",\n \"alias\": \"any\",\n \"userDefined\": true\n }\n ]\n }\n ],\n \"parameters\": [\n {\n \"name\": \"cecfbece-6795-44a0-bf47-c5c28e41cf39\",\n \"displayName\": \"ordinal\",\n \"value\": \"$ordinal\",\n \"entityTypeDisplayName\": \"@sys.ordinal\"\n },\n {\n \"name\": \"edb48a02-1ddf-4a23-9788-f2d6d9dd476e\",\n \"displayName\": \"any\",\n \"value\": \"$any\",\n \"entityTypeDisplayName\": \"@sys.any\"\n }\n ],\n \"messages\": [\n {\n \"image\": {\n \"imageUri\": \"https://www.uaeh.edu.mx/ful/2020/images/icon-seccion/IconoCharla.png\"\n },\n \"platform\": \"TELEGRAM\"\n },\n {\n \"text\": {\n \"text\": [\n \"Nuevo Contenido: \ud83d\udd52\\n\\nLunes a s\u00e1bado:\\n- Ma\u00f1ana: 8:00 am a 11:45 am\\n- Noche: 6:15 pm a 10:00 pm\\n\\nSelecci\u00f3n de cursos \ud83d\udcd8\\n\\n- Desarrollo sostenible\\n- Ingenier\u00eda de software\\n- Redes y comunicaciones\"\n ]\n },\n \"platform\": \"TELEGRAM\"\n },\n {\n \"text\": {}\n }\n ]\n }",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleApi"
},
"typeVersion": 4.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "c4c46e56-c204-485b-a7e4-b19f933ee87c",
"connections": {
"Telegram Trigger": {
"main": [
[
{
"node": "User validation by ID",
"type": "main",
"index": 0
}
]
]
},
"Keyword validation": {
"main": [
[
{
"node": "HTTP Request UPDATE",
"type": "main",
"index": 0
}
],
[
{
"node": "Invalid keyword message",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request UPDATE": {
"main": [
[
{
"node": "Mensaje de confirmaci\u00f3n",
"type": "main",
"index": 0
}
]
]
},
"User validation by ID": {
"main": [
[
{
"node": "Keyword validation",
"type": "main",
"index": 0
}
],
[
{
"node": "Invalid user message",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This template allows you to easily update the response of a Dialogflow intent by simply typing a keyword in Telegram. Ideal for those who need to edit responses without accessing the Dialogflow console. Listens for incoming messages from a Telegram bot using the node. Validates…
Source: https://n8n.io/workflows/7408/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Memory sessions with FlowiseAI and Zep. Uses telegram, redis, telegramTrigger, httpRequest. Event-driven trigger; 37 nodes.
Create viral TikTok videos effortlessly — no editing skills required!
Telegram Code. Uses stickyNote, telegramTrigger, telegram, googleDrive. Event-driven trigger; 37 nodes.
This template is ideal for educators, HR professionals, and anyone looking to automate testing and collect responses through Telegram, while storing results in a Postgres database.
Get notified if the actual data release is positive or negative for the relevant currency. Use the Telegram chat message about the news release as a trigger to open a trading position in MetaTrader 4.