Construire un chatbot问答 Telegram intégrant la recherche sur le web Linkup, GPT-4.1 et Mistral Voice
Avancé
Ceci est uncontenant 21 nœuds.Utilise principalement des nœuds comme If, Set, Switch, Telegram, HttpRequest. Construire un chatbot de questions-réponses sur Telegram intégrant la recherche web Linkup, GPT-4.1 et la voix Mistral
Prérequis
- •Token Bot Telegram
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
Nœuds utilisés (21)
Catégorie
-
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"nodes": [
{
"id": "c1fbf4de-ddf2-450d-b09c-d07025d643f5",
"name": "Déclencheur Telegram",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
240,
544
],
"webhookId": "cce06804-3cd5-4dff-a90a-ed4ce49b0b04",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "GQHcQvX9GizW5ai3",
"name": "Duv Brain Telegram"
}
},
"typeVersion": 1.1
},
{
"id": "f2e6b66d-8c5f-44fc-9bcf-34d48a7d8cd3",
"name": "Myself?",
"type": "n8n-nodes-base.if",
"position": [
464,
544
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fae16f10-e497-47ea-92ec-741f54cedd62",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.message.from.username }}",
"rightValue": "<Replace with your Telegram username>"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d4b2699d-bff8-424c-a8e9-3879fbcb2a6a",
"name": "Agent IA",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2256,
560
],
"parameters": {
"text": "={{ $json.final_user_message }}",
"options": {
"systemMessage": "=You are a helpful assistant that answers the user based on web-search.\n\nWhenever the user query requires getting insights from the web (most queries except empty queries like \"hi\"), call the tool \"Web search\" with a question to have it output an answer based on AI web search.\n\nProvide sources of the main insights.\n\nAnswer considring that this conversation happens on Telegram - adapt your style/format to that platform."
},
"promptType": "define"
},
"typeVersion": 1.8
},
{
"id": "49ca5d84-ebac-41db-a961-f6c66d75a468",
"name": "Simple Mémoire",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
2272,
816
],
"parameters": {
"sessionKey": "={{ $('Telegram Trigger').item.json.message.from.username }}",
"sessionIdType": "customKey",
"contextWindowLength": 7
},
"typeVersion": 1.3
},
{
"id": "1cad1569-ebc5-4446-8a8d-898cbfcebbbf",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
272
],
"parameters": {
"color": 2,
"width": 873,
"height": 293,
"content": "# Process Audio"
},
"typeVersion": 1
},
{
"id": "21b52da1-5a08-4f7b-9b83-56ec4b12fe07",
"name": "Get Audio File",
"type": "n8n-nodes-base.telegram",
"position": [
976,
400
],
"webhookId": "aa1f75c8-2c80-4fab-be6c-b4120381181d",
"parameters": {
"fileId": "={{ $('Telegram Trigger').item.json.message.voice.file_id }}",
"resource": "file",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "GQHcQvX9GizW5ai3",
"name": "Duv Brain Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "05bf3117-933d-4a17-bee7-ca26b454abc7",
"name": "Message Router",
"type": "n8n-nodes-base.switch",
"position": [
688,
512
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "audio",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b5d9f703-2a1b-4942-906c-7a7d1404a4d7",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $('Telegram Trigger').item.json.message.voice }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "text",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "342f0883-d959-44a2-b80d-379e39c76218",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $('Telegram Trigger').item.json.message.text }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "extra"
}
},
"typeVersion": 3.2
},
{
"id": "a0c3018c-0e5e-4184-9586-422fdb5aa16f",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
2400,
768
],
"parameters": {
"color": 6,
"width": 336,
"height": 368,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Linkup web search\n\nReplace the API key placeholder with your linkup.so API key, or store it as a credential to reuse it easily in other workflows."
},
"typeVersion": 1
},
{
"id": "93107652-cd00-4d85-9eb7-2d42276e76a1",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1904,
768
],
"parameters": {
"color": 5,
"width": 336,
"height": 368,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## AI model\n\nThe core AI model of your agent. Connect your OpenAI API key or switch to your favorite LLM provider."
},
"typeVersion": 1
},
{
"id": "4a1bde4f-df6e-45b5-a91c-613e5673848f",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2192,
320
],
"parameters": {
"color": 4,
"width": 352,
"height": 400,
"content": "## The agent\n\nThis agent will distribute the relevant questions to the Linkup tool via the \"Web search\" tool. Feel free to provide more context in its system message and add instructions when it comes to the format or style of responses?"
},
"typeVersion": 1
},
{
"id": "4f0fbc4e-55af-4b3e-b187-fab5231442ab",
"name": "Modèle de chat OpenAI",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2032,
832
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "dMiSy27YCK6c6rra",
"name": "Duv's OpenAI"
}
},
"typeVersion": 1.2
},
{
"id": "469db785-dad8-4f46-ae4e-a73936d5c063",
"name": "Telegram answer",
"type": "n8n-nodes-base.telegram",
"position": [
2832,
560
],
"webhookId": "7ac3dfe6-5df8-4791-8765-2234d475c22d",
"parameters": {
"text": "={{ $json.output }}",
"chatId": "={{ $('Telegram Trigger').item.json.message.from.id }}",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"id": "GQHcQvX9GizW5ai3",
"name": "Duv Brain Telegram"
}
},
"typeVersion": 1.2
},
{
"id": "d8484fa4-6147-49f5-a4cf-549a9b9c609c",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1200,
288
],
"parameters": {
"color": 7,
"width": 265,
"height": 261,
"content": "### AI transcription\n\nYou can replace with another model like OpenAI's."
},
"typeVersion": 1
},
{
"id": "b99a6e1e-d26a-405f-a9ad-68a3f9108734",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
304
],
"parameters": {
"color": 3,
"width": 265,
"height": 405,
"content": "### Make this bot private\n\nTelegram bots are public by default, so we're adding a filter here based on your unique Telegram username. Change the value to ensure only your messages can go through, or delete this step to make it 100% public"
},
"typeVersion": 1
},
{
"id": "95bd10b8-242f-4947-a763-4fe69c507285",
"name": "Note adhésive8",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
592
],
"parameters": {
"color": 2,
"width": 873,
"height": 293,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n# Process text"
},
"typeVersion": 1
},
{
"id": "48d77137-bc1a-4ae2-8b03-48ddcd17c4cf",
"name": "Prepare message from audio",
"type": "n8n-nodes-base.set",
"position": [
1568,
400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "bffc2c1f-990e-4396-b59a-ab82b843e061",
"name": "preset_user_message",
"type": "string",
"value": "={{ $json.choices[0].message.content }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8a59c1a6-4b6c-4356-a083-33f2f8cb7651",
"name": "Prepare message from text",
"type": "n8n-nodes-base.set",
"position": [
1280,
672
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b37b48ba-8fef-4e6c-bbca-73e6c2e1e0a8",
"name": "preset_user_message",
"type": "string",
"value": "={{ $('Telegram Trigger').item.json.message.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "edc01d56-b1de-4e22-b8f8-60540d53434c",
"name": "Consolidate user message",
"type": "n8n-nodes-base.set",
"position": [
1872,
560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7db97ffc-b1eb-422e-8bb1-90eea55c7aa2",
"name": "final_user_message",
"type": "string",
"value": "={{ $json.preset_user_message }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "27a2b573-bbe5-47b6-a7ab-57c41a566d07",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
-400
],
"parameters": {
"width": 880,
"height": 544,
"content": "# **AI Web Search Telegram Agent with Linkup & GPT-4.1 (text + voice)**\n\n**Summary:** A Telegram bot that answers questions using **Linkup** AI web search. Accepts text and voice (transcribed via **Mistral** by default) and uses an LLM agent that calls the **Web search** tool.\n\n**How it works (short):**\n1. **Telegram Trigger** → Detects text or voice via **Message Router**.\n2. Voice: **Get Audio File** → **Mistral transcribe** → prepare text.\n3. **AI Agent** calls **Web search** (Linkup) when web knowledge is needed and sends answers via **Telegram answer**.\n\n**How to use / Setup:**\n1. Create a Linkup account at [linkup.so](https://linkup.so) and get your **API Key**.\n2. In the **Web search** node, go to the \"Headers\" section and replace the placeholder API key with your actual key in the `Authorization` field.\n3. Add credentials: **Telegram API**, **OpenAI (or LLM)**, **Mistral Cloud**.\n4. (Optional) Edit **Myself?** to set your Telegram username for private testing or delete it to make the bot public.\n5. Activate the workflow and message your bot in Telegram.\n\n**Bold nodes to configure:** **Telegram Trigger**, **Web search**, **OpenAI Chat Model**, **Mistral transcribe**, **Myself?**\n\n*A template created by Guillaume Duvernay*"
},
"typeVersion": 1
},
{
"id": "0e9b76b5-1d89-49f2-924f-53325a6a8507",
"name": "Web search",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
2544,
832
],
"parameters": {
"url": "https://api.linkup.so/v1/search",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "q",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `The query for AI web-search`, 'string') }}"
},
{
"name": "depth",
"value": "standard"
},
{
"name": "outputType",
"value": "sourcedAnswer"
},
{
"name": "includeImages",
"value": "false"
},
{
"name": "includeInlineCitations",
"value": "false"
}
]
},
"toolDescription": "Call this tool when web-search base is required to answer the user query.",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <your Linkup API key>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "853eea91-4385-46bd-aaf7-5f910d6afbd6",
"name": "Mistral transcribe",
"type": "n8n-nodes-base.httpRequest",
"position": [
1280,
400
],
"parameters": {
"url": "https://api.mistral.ai/v1/audio/transcriptions",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "model",
"value": "voxtral-mini-2507"
},
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"id": "vakRnCmKyOQFpdEk",
"name": "Mistral Cloud account"
}
},
"typeVersion": 4.2
}
],
"connections": {
"f2e6b66d-8c5f-44fc-9bcf-34d48a7d8cd3": {
"main": [
[
{
"node": "05bf3117-933d-4a17-bee7-ca26b454abc7",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "469db785-dad8-4f46-ae4e-a73936d5c063",
"type": "main",
"index": 0
}
]
]
},
"0e9b76b5-1d89-49f2-924f-53325a6a8507": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"21b52da1-5a08-4f7b-9b83-56ec4b12fe07": {
"main": [
[
{
"node": "853eea91-4385-46bd-aaf7-5f910d6afbd6",
"type": "main",
"index": 0
}
]
]
},
"05bf3117-933d-4a17-bee7-ca26b454abc7": {
"main": [
[
{
"node": "21b52da1-5a08-4f7b-9b83-56ec4b12fe07",
"type": "main",
"index": 0
}
],
[
{
"node": "8a59c1a6-4b6c-4356-a083-33f2f8cb7651",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "f2e6b66d-8c5f-44fc-9bcf-34d48a7d8cd3",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"853eea91-4385-46bd-aaf7-5f910d6afbd6": {
"main": [
[
{
"node": "48d77137-bc1a-4ae2-8b03-48ddcd17c4cf",
"type": "main",
"index": 0
}
]
]
},
"edc01d56-b1de-4e22-b8f8-60540d53434c": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"8a59c1a6-4b6c-4356-a083-33f2f8cb7651": {
"main": [
[
{
"node": "edc01d56-b1de-4e22-b8f8-60540d53434c",
"type": "main",
"index": 0
}
]
]
},
"48d77137-bc1a-4ae2-8b03-48ddcd17c4cf": {
"main": [
[
{
"node": "edc01d56-b1de-4e22-b8f8-60540d53434c",
"type": "main",
"index": 0
}
]
]
}
}
}Foire aux questions
Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Créer un assistant Telegram vocal et textuel (Lookio RAG et GPT-4.1)
Utiliser Lookio RAG et GPT-4.1 pour créer un assistant Telegram vocal et textuel
If
Set
Switch
+
If
Set
Switch
21 NœudsGuillaume Duvernay
Agent de trading AI Bitget
Automatiser le trading de spot sur Bitget en utilisant un agent IA GPT-4o-mini via Telegram
Set
Code
Crypto
+
Set
Code
Crypto
156 NœudsDon Jayamaha Jr
Construire et vendre des automatisations et agents IA
构建与ventesAIautomatisation与intelligent体
If
Set
Wait
+
If
Set
Wait
74 NœudsNICKYAI
Autres
AIe-mail分诊与GPT-4警报系统及Telegramnotification
AIe-mail分诊与GPT-4警报系统及Telegramnotification
If
Set
Gmail
+
If
Set
Gmail
104 NœudsPeter Joslyn
Support
AI视频générateur - OpenAI、ElevenLabs与Telegram YouTubepublication
intégrationOpenAI、ElevenLabs并viaTelegrampublication至YouTubedeAI视频générateur
If
Set
Wait
+
If
Set
Wait
68 NœudsFRANK LIN
Ventes
牙科预约
AI驱动de牙科预约系统,intégrationTelegram、Google日历et表格
If
Set
Switch
+
If
Set
Switch
53 NœudsAziz B
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds21
Catégorie-
Types de nœuds11
Description de la difficulté
Auteur
Liens externes
Voir sur n8n.io →
Partager ce workflow