{ "name": "AI-агент у Telegram (Prog Academy)", "nodes": [ { "parameters": { "updates": [ "message" ], "additionalFields": {} }, "id": "a1b2c3d4-0000-4000-8000-000000000002", "name": "Telegram Trigger", "type": "n8n-nodes-base.telegramTrigger", "typeVersion": 1.2, "position": [ 0, 0 ], "webhookId": "a1b2c3d4-0000-4000-8000-000000000001" }, { "parameters": { "promptType": "define", "text": "={{ $json.message.text }}", "options": { "systemMessage": "=Ти — адміністратор [НАЗВА] в Telegram. Відповідаєш клієнтам українською: коротко, тепло, на «ви», звичайним текстом без Markdown.\n\nПро бізнес:\n- Послуги, ціни і тривалість: [ПОСЛУГИ І ЦІНИ]\n- Графік роботи: [ГРАФІК]\n- Адреса: [АДРЕСА]\n- Зв'язок з людиною: [КОНТАКТ]\n\nПравила:\n1. Відповідай лише на основі даних вище. Якщо відповіді там немає, не вигадуй: скажи, що це краще уточнити в людини, і дай контакт.\n2. Щоб записати клієнта, спершу дізнайся послугу і бажаний день.\n3. Перевір вільний час інструментом Check free time у межах графіка і запропонуй рівно два вільні варіанти. Варіант підходить, лише якщо весь візит від початку до кінця (з тривалістю послуги) не перетинається з жодним зайнятим слотом і закінчується до кінця робочого дня.\n4. Перед записом перепитай послугу, дату, час та ім'я. Записуй тільки після чіткого «так».\n5. Записуй інструментом Book appointment. Назва події: «Послуга — ім'я клієнта». Тривалість бери з переліку послуг, а якщо її там немає — 60 хвилин.\n6. Скасування і перенесення не роби сам: вибачся і дай контакт людини.\n7. На грубість відповідай спокійно і ввічливо. Якщо питання не про бізнес, м'яко поверни розмову до послуг.\n8. Ніколи не називай ціни, знижки чи вільний час, яких немає в даних або в календарі.\n\nЗараз: {{ $now.setZone('Europe/Kyiv').toFormat('cccc, dd.MM.yyyy, HH:mm') }} за Києвом (ISO: {{ $now.setZone('Europe/Kyiv').toISO() }}).\nІм'я клієнта в Telegram: {{ $('Telegram Trigger').item.json.message.from.first_name }}." } }, "id": "a1b2c3d4-0000-4000-8000-000000000003", "name": "AI Agent", "type": "@n8n/n8n-nodes-langchain.agent", "typeVersion": 3.1, "position": [ 260, 0 ] }, { "parameters": { "modelName": "models/gemini-3.8-flash", "options": { "temperature": 0.3 } }, "id": "a1b2c3d4-0000-4000-8000-000000000004", "name": "Google Gemini Chat Model", "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini", "typeVersion": 1, "position": [ 120, 260 ] }, { "parameters": { "sessionIdType": "customKey", "sessionKey": "={{ $('Telegram Trigger').item.json.message.chat.id }}", "contextWindowLength": 10 }, "id": "a1b2c3d4-0000-4000-8000-000000000005", "name": "Simple Memory", "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", "typeVersion": 1.3, "position": [ 300, 260 ] }, { "parameters": { "descriptionType": "manual", "toolDescription": "Повертає зайняті слоти в календарі за період. Вільний час — усе, що в межах графіка роботи і не зайнято.", "resource": "calendar", "calendar": { "__rl": true, "mode": "list", "value": "" }, "timeMin": "={{ $fromAI('timeMin', 'Початок періоду, ISO 8601 з часовим поясом Києва', 'string') }}", "timeMax": "={{ $fromAI('timeMax', 'Кінець періоду, ISO 8601 з часовим поясом Києва', 'string') }}", "options": { "outputFormat": "bookedSlots", "timezone": { "__rl": true, "mode": "list", "value": "Europe/Kyiv" } } }, "id": "a1b2c3d4-0000-4000-8000-000000000006", "name": "Check free time", "type": "n8n-nodes-base.googleCalendarTool", "typeVersion": 1.3, "position": [ 480, 260 ] }, { "parameters": { "descriptionType": "manual", "toolDescription": "Створює запис клієнта в календарі. Викликай лише після того, як клієнт чітко підтвердив послугу, дату, час та ім'я.", "calendar": { "__rl": true, "mode": "list", "value": "" }, "start": "={{ $fromAI('start', 'Початок запису, ISO 8601 з часовим поясом Києва', 'string') }}", "end": "={{ $fromAI('end', 'Кінець запису, ISO 8601 з часовим поясом Києва', 'string') }}", "additionalFields": { "summary": "={{ $fromAI('summary', 'Назва події: Послуга — ім'я клієнта', 'string') }}" } }, "id": "a1b2c3d4-0000-4000-8000-000000000007", "name": "Book appointment", "type": "n8n-nodes-base.googleCalendarTool", "typeVersion": 1.3, "position": [ 660, 260 ] }, { "parameters": { "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}", "text": "={{ $json.output }}", "additionalFields": { "appendAttribution": false } }, "id": "a1b2c3d4-0000-4000-8000-000000000008", "name": "Send reply", "type": "n8n-nodes-base.telegram", "typeVersion": 1.2, "position": [ 620, 0 ] } ], "connections": { "Telegram Trigger": { "main": [ [ { "node": "AI Agent", "type": "main", "index": 0 } ] ] }, "AI Agent": { "main": [ [ { "node": "Send reply", "type": "main", "index": 0 } ] ] }, "Google Gemini Chat Model": { "ai_languageModel": [ [ { "node": "AI Agent", "type": "ai_languageModel", "index": 0 } ] ] }, "Simple Memory": { "ai_memory": [ [ { "node": "AI Agent", "type": "ai_memory", "index": 0 } ] ] }, "Check free time": { "ai_tool": [ [ { "node": "AI Agent", "type": "ai_tool", "index": 0 } ] ] }, "Book appointment": { "ai_tool": [ [ { "node": "AI Agent", "type": "ai_tool", "index": 0 } ] ] } }, "settings": { "executionOrder": "v1", "timezone": "Europe/Kyiv" }, "pinData": {}, "meta": { "templateCredsSetupCompleted": false } }