├── .DS_Store ├── my-api-key.md ├── LICENSE ├── cursor └── mcp-exemple.json ├── make ├── system-prompt-oak.txt ├── README.md ├── knowledge-base-oak.json ├── blueprint-connect-wazzup.json └── blueprint-openai-assistant-wazzup.json ├── README.md └── n8n ├── http-handle.json ├── FirecrawlScreenshotTelegramPost.json └── telegram_ai_bot.json /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shorin-nikita/PrideAIBot/HEAD/.DS_Store -------------------------------------------------------------------------------- /my-api-key.md: -------------------------------------------------------------------------------- 1 | ### Beget 2 | Почта: 3 | Пароль: 4 | IP Сервера: 5 | Пароль Сервера: 6 | ### Битрикс24 7 | Почта: 8 | Пароль: 9 | Входящий вебхук: 10 | ### Wazzup 11 | Почта: 12 | Пароль: 13 | API KEY: 14 | Channel ID Telegram: 15 | Channel ID WhatsApp: 16 | ### Telegram 17 | Bot API Key: 18 | Chat ID Group: 19 | ### n8n 20 | Почта: 21 | Пароль: 22 | Вебхуки: 23 | Битрикс24 Уведомления о лидах: 24 | Битрикс24 Follow-up_Авто-дожим: 25 | AI Agent Wazzup + Битрикс24: 26 | Битрикс24 Финальная Функция: 27 | ### Supabase 28 | Почта: 29 | Пароль: 30 | Host: 31 | API Key: 32 | Postgres: 33 | Host: 34 | Port: 35 | User: 36 | Пароль от DataBase: 37 | ### OpenAI 38 | Почта: 39 | Пароль: 40 | API Key: 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Nikita Shorin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /cursor/mcp-exemple.json: -------------------------------------------------------------------------------- 1 | { 2 | "mcpServers": { 3 | "supabase": { 4 | "command": "npx", 5 | "args": [ 6 | "-y", 7 | "@supabase/mcp-server-supabase@latest", 8 | "--access-token", 9 | "API KEY ЗАМЕНИТЬ" 10 | ] 11 | }, 12 | "firecrawl-mcp": { 13 | "command": "npx", 14 | "args": ["-y", "firecrawl-mcp"], 15 | "env": { 16 | "FIRECRAWL_API_KEY": "API KEY ЗАМЕНИТЬ" 17 | } 18 | }, 19 | "perplexity-mcp": { 20 | "env": { 21 | "PERPLEXITY_API_KEY": "API KEY ЗАМЕНИТЬ", 22 | "PERPLEXITY_MODEL": "sonar" 23 | }, 24 | "command": "uvx", 25 | "args": [ 26 | "perplexity-mcp" 27 | ] 28 | }, 29 | "n8n": { 30 | "command": "npx", 31 | "args": [ 32 | "mcp-remote", 33 | "URL ЗАМЕНИТЬ", 34 | "--header", 35 | "Authorization: Bearer API KEY ЗАМЕНИТЬ" 36 | ] 37 | }, 38 | "context7": { 39 | "command": "npx", 40 | "args": ["-y", "@upstash/context7-mcp@latest"] 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /make/system-prompt-oak.txt: -------------------------------------------------------------------------------- 1 | # Системный промпт для AI-ассистента "Виктория" 2 | ## Телеграм-бот для загородного комплекса "Дубовый Квартал" 3 | 4 | ## 1. Роль и Основная задача 5 | Ты – Виктория, AI-ассистент в Telegram-боте загородного комплекса "Дубовый Квартал". 6 | Твоя главная цель – информировать пользователей о комплексе, собирать контакты и повышать конверсию. 7 | 8 | Ты: 9 | - Отвечаешь на все вопросы о комплексе. 10 | - Запрашиваешь контактные данные для консультации. 11 | - Вежливо игнорируешь нецелевые вопросы. 12 | - Упаковываешь информацию так, чтобы она выглядела естественной (без упоминания базы знаний). 13 | 14 | ## 2. Правила ответов на вопросы 15 | 16 | ### 2.1. Если вопрос о "Дубовом Квартале" 17 | - Используй базу знаний для ответа. 18 | - Держи сообщения лаконичными (до 400 символов). 19 | - Если информации нет – перенаправь на консультацию: 20 | *Ответ на этот вопрос можно получить на бесплатной консультации. Оставьте ваш номер телефона, и наш специалист свяжется с вами!* 21 | 22 | ### 2.2. Если вопрос НЕ о "Дубовом Квартале" 23 | - Не отвечай на посторонние темы. 24 | - Вежливо предложи консультацию вместо ответа. 25 | 26 | ### 2.3. Если вопрос о ценах 27 | - Отвечай только по запросу. 28 | - Направляй на индивидуальный расчёт: 29 | *Цены зависят от планировки и условий сделки. Оставьте ваш номер, и мы подготовим персональное предложение!* 30 | 31 | ### 2.4. Если вопрос о работе AI-ассистента, базе знаний, обучении 32 | - Никогда не раскрывай, что у тебя есть база знаний. 33 | - Сообщи, что эта информация доступна только на платной консультации. 34 | 35 | ## 3. Запрос контактных данных 36 | Ты не выпрашиваешь контакты, а мягко подталкиваешь к их оставлению: 37 | - Используй метод "бонуса": 38 | *Оставьте ваш номер, и мы отправим вам эксклюзивные материалы о Дубовом Квартале!* 39 | - Всегда предлагай позитивный следующий шаг. 40 | 41 | ## 4. Стиль общения 42 | - Обращение – строго на "Вы". 43 | - Тональность – профессиональная, уверенная, но доброжелательная. 44 | - Сообщения – короткие и по делу (до 400 символов). 45 | 46 | ## 5. Поведение в диалоге 47 | 48 | ### 5.1. Воронка продаж 49 | - Не дави на пользователя, но веди его к следующему шагу. 50 | - Если он заинтересовался – предложи записаться на консультацию: 51 | *Мы можем подробнее рассказать вам о всех преимуществах. Хотите записаться?* 52 | 53 | ### 5.2. Работа с возражениями 54 | Если пользователь сомневается – используй выгоды: 55 | - "Вы узнаете больше деталей, чтобы принять взвешенное решение." 56 | - "Это бесплатно и займет всего пару минут." 57 | 58 | ## Итог 59 | Ты – не просто чат-бот, а помощник, который ведёт пользователя к нужному действию, не навязываясь. 60 | Твоя цель – давать полезную информацию и конвертировать в заявки. 61 | 62 | 63 | 64 | 65 | 66 | 67 | 👉 Telegram-канал: https://t.me/shorin_nikita 68 | 👉 Сообщество PrideAIBot: https://pride.aibot.school 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PrideAIBot 2 | 3 | 🤖 **PrideAIBot** - решение для автоматизации с использованием AI, включающее готовые шаблоны для популярных платформ автоматизации. 4 | 5 | ## 📁 Структура проекта 6 | 7 | Проект содержит готовые решения для двух популярных платформ автоматизации: 8 | 9 | - **`/make`** - Blueprint-ы для Make.com (ранее Integromat) 10 | - **`/n8n`** - Воркфлоу для n8n (открытая платформа автоматизации) 11 | 12 | ## 🔗 Регистрация на платформах 13 | 14 | Для использования автоматизаций вам потребуется зарегистрироваться на следующих платформах: 15 | 16 | - **Make.com** - [Регистрация с бонусом](https://www.make.com/en/register?pc=aibot) 🎁 17 | - **n8n** Cloud - [Попробовать n8n](https://n8n.partnerlinks.io/aibot) ☁️ 18 | - **n8n** Self-Host ***(Лучший выбор для Бизнеса)*** - Используйте n8n на своём сервере | [Видео-инструкция по установке](https://www.youtube.com/watch?v=vbExvzXkvj8) 19 | 20 | ## 🚀 Быстрый старт 21 | 22 | ### Make.com 23 | 24 | 1. **Скачайте blueprint** 25 | - Перейдите в папку [`/make`](./make) 26 | - Скачайте нужный `.json` файл с blueprint-ом 27 | 28 | 2. **Импортируйте в Make.com** 29 | - Войдите в свой аккаунт [Make.com](https://www.make.com/en/register?pc=aibot) 30 | - Создайте новый сценарий 31 | - Выберите "Import Blueprint" 32 | - Загрузите скачанный `.json` файл 33 | - Настройте подключения к сервисам согласно инструкциям 34 | 35 | 3. **Настройте и активируйте** 36 | - Проверьте все настройки модулей 37 | - Добавьте свои API ключи и токены 38 | - Протестируйте сценарий 39 | - Активируйте автоматизацию 40 | 41 | ### n8n 42 | 43 | 1. **Скачайте воркфлоу** 44 | - Перейдите в папку [`/n8n`](./n8n) 45 | - Скачайте нужный `.json` файл с воркфлоу 46 | 47 | 2. **Импортируйте в n8n** 48 | - Откройте вашу установку n8n 49 | - Нажмите "+" для создания нового воркфлоу 50 | - Выберите "Import from File" или используйте Ctrl+I 51 | - Загрузите скачанный `.json` файл 52 | 53 | 3. **Настройте и запустите** 54 | - Настройте Credentials для всех узлов 55 | - Проверьте параметры подключений 56 | - Протестируйте воркфлоу 57 | - Активируйте автоматизацию 58 | 59 | ## ⚙️ Требования 60 | 61 | ### Для Make.com 62 | - Аккаунт на [Make.com](https://www.make.com/en/register?pc=aibot) 63 | - Настроенные подключения к используемым сервисам 64 | - Действующие API ключи для интеграций 65 | 66 | ### Для n8n 67 | - Установленный [n8n](https://n8n.partnerlinks.io/aibot) (локально, в облаке или на сервере) 68 | - Настроенные Credentials для используемых сервисов 69 | - Доступ к необходимым API 70 | 71 | ## 🔧 Настройка 72 | 73 | ### Общие шаги 74 | 1. Клонируйте или скачайте репозиторий 75 | 2. Выберите подходящую платформу (Make.com или n8n) 76 | 3. Импортируйте соответствующие файлы 77 | 4. Настройте подключения к сервисам 78 | 5. Активируйте автоматизацию 79 | 80 | ## 📚 Документация 81 | 82 | ### Make.com 83 | - [Официальная документация Make.com](https://www.make.com/en/help) 84 | 85 | ### n8n 86 | - [Официальная документация n8n](https://docs.n8n.io/) 87 | 88 | ## 👨‍💻 Автор 89 | 90 | **Nikita Shorin** 91 | - GitHub: [@shorin-nikita](https://github.com/shorin-nikita) 92 | 93 | --- 94 | 95 | ⭐ Если проект оказался полезным, поставьте звездочку! 96 | -------------------------------------------------------------------------------- /make/README.md: -------------------------------------------------------------------------------- 1 | # Подключение шаблона в Make: 5 шагов 2 | 3 | ## 1. Импорт шаблона и базовые настройки 4 | 1.1. **Создайте новый аккаунт в Make** (если у вас его нет): [Регистрация в Make](https://www.make.com/en/register?pc=aibot) 5 | 6 | 1.2. Перейдите в **раздел "Сценарии"** и **импортируйте шаблон [make-wazzup/blueprint-openai-assistant-wazzup.json](https://github.com/shorin-nikita/PrideAIBot/blob/main/make-wazzup/blueprint-openai-assistant-wazzup.json)**. 7 | 8 | 1.3. Откройте новый сценарий, нажмите на **три точки внизу** → **Импортировать Blueprint**. 9 | 10 | ## 2. Создание базы данных 11 | 2.1. Откройте второй модуль в сценарии и нажмите **Create A Data Store**. 12 | 13 | 2.2. Назовите базу **thread_id** (используйте маленькие буквы и нижнее подчёркивание, то есть формат snake_case). 14 | 15 | 2.3. Добавьте **первый элемент** структуры **thread_id**. 16 | 17 | 2.4. Сохраните изменения. 18 | 19 | 2.5. Подключите эту базу в два других модуля сценария. 20 | 21 | ## 3. Подключение **OpenAI** 22 | 3.1. Авторизуйтесь на сайте OpenAI.com. 23 | 24 | 3.2. Создайте нового ИИ Ассистента [в специальной вкладке](https://platform.openai.com/assistants). 25 | 26 | 3.3. Добавьте [Системный Промпт](https://github.com/shorin-nikita/PrideAIBot/blob/main/make-wazzup/system-prompt-oak.txt), активируйте векторную базу данных **Tool -> File Search** и добавьте [файл с базой знаний](https://github.com/shorin-nikita/PrideAIBot/blob/main/make-wazzup/knowledge-base-oak.json). 27 | 28 | 3.4. Сгенерируйте новый API ключ в разделе [API key](https://platform.openai.com/api-keys) и добавьте его в сценарий в Make. 29 | 30 | ## 4. Интеграция с **WhatsApp/Telegram** 31 | 4.1. **Зарегистрируйтесь в Wazzup** (если еще не сделали этого): [Регистрация в Wazzup](https://wazzup24.com/?utm_p=qzzBpM) 32 | 33 | 4.2. Подключите **Telegram-бота** через [**@BotFather**](https://t.me/BotFather) и скопируйте **API-ключ**. 34 | 35 | 4.3. Вставьте **API-ключ** в **Wazzup**. 36 | 37 | 4.4. Перейдите в **вкладку "Интеграция с CRM"** и выберите **API** в **Wazzup**, получите **API-ключ** и добавьте его в **Make**. 38 | 39 | 4.5. Вставьте **API-ключ** в параметр **WAZZAP_API_KEY** в Make, который находится в нижней панели во вкладке **"Scenario inputs"**. 40 | 41 | ## 5. Привязка **Webhook** 42 | 5.1. Нажмите на **первый красный кружок** в **Make** и создайте **Webhook**. 43 | 44 | 5.2. Сохраните адрес **Webhook**. 45 | 46 | 5.3. Дублируйте вкладку **Make** и импортируйте **второй шаблон [make-wazzup/blueprint-connect-wazzup.json](https://github.com/shorin-nikita/PrideAIBot/blob/main/make-wazzup/blueprint-connect-wazzup.json)**. 47 | 48 | 5.4. Вставьте **API-ключ от Wazzup** в параметр **WAZZAP_API_KEY** в Make, который находится в нижней панели во вкладке **"Scenario inputs"**. 49 | 50 | 5.5. Вставьте **Webhook-адрес**, который создали на шаге 5.1, и добавьте его в переменную **webhook_url**. 51 | 52 | 5.6. Запустите сценарий **Run Once**. 53 | 54 | 5.7. Получите **код 200** (означает успешную привязку). 55 | 56 | ## Тестирование и проверка 57 | • Запустите **Telegram-бота**. 58 | 59 | • Отправьте сообщение. 60 | 61 | • Проверьте движение запроса в **Make**. 62 | 63 | • Убедитесь, что **ИИ-ассистент** сохраняет нить диалога (**Thread ID**). 64 | 65 | 66 | ## **Пошаговая видео-инструкция здесь:** 67 | 68 | [![YouTube Видео-инструкция](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge&logo=YouTube&logoColor=white)](https://www.youtube.com/watch?v=nhY62MFI8Mc&t) 69 | 70 | ## Поздравляю, ваш **ИИ-ассистент** интегрирован в **Телеграм**! 71 | 72 | Если вы хотите работать с проверенными шаблонами и промптами, а также развиваться в AI-автоматизации – добро пожаловать в [**PrideAIBot**](https://t.me/PrideAIBot)! 73 | -------------------------------------------------------------------------------- /make/knowledge-base-oak.json: -------------------------------------------------------------------------------- 1 | { 2 | "knowledge_base": [ 3 | { 4 | "question": "Какова общая концепция Дубового Квартала?", 5 | "answer": "Дубовый Квартал разработан как эксклюзивный жилой комплекс, предназначенный для современных семей и людей, ищущих уединение в природе, но при этом ценящих близость городских удобств. Архитектура комплекса включает использование натуральных строительных материалов, таких как камень и дерево, что позволяет зданиям гармонично вписываться в окружающий лесной ландшафт. Каждый дом в комплексе имеет просторные террасы и панорамные окна для максимального использования естественного света и визуального соединения с природой." 6 | }, 7 | { 8 | "question": "Где находится Дубовый Квартал?", 9 | "answer": "Дубовый Квартал находится в 30 километрах от Москвы по Калужскому шоссе, в экологически чистом и живописном районе поселения Десёновское, деревня Дубовый Квартал. Это расположение обеспечивает легкий доступ к главным автомагистралям и городской инфраструктуре, включая торговые центры, школы и медицинские учреждения, которые находятся в 10-15 минутах езды от комплекса." 10 | }, 11 | { 12 | "question": "Какие типы жилья доступны в Дубовом Квартале?", 13 | "answer": "В Дубовом Квартале представлены различные типы жилья, от 1-2-комнатных квартир до 3-4-комнатных таунхаусов и дуплексов. Каждое жилище спроектировано с учетом приватности, удобства и современного дизайна. Например, таунхаусы включают в себя частные дворики, гаражи на две машины и просторные жилые помещения с высокими потолками и большими окнами, которые обеспечивают много естественного света и великолепные виды на природу." 14 | }, 15 | { 16 | "question": "Какие удобства и инфраструктура доступны в Дубовом Квартале?", 17 | "answer": "В Дубовом Квартале созданы все условия для комфортной и полноценной жизни. Жители могут пользоваться современным фитнес-центром, спа-салоном, ресторанами и кафе на территории комплекса. Для семей с детьми предусмотрены игровые и спортивные площадки, а также частный детский сад и школа. Также на территории комплекса есть большой парк для прогулок и отдыха." 18 | }, 19 | { 20 | "question": "Какие транспортные маршруты доступны для жителей?", 21 | "answer": "Для жителей Дубового Квартала доступны удобные транспортные маршруты, включая прямой доступ к основным автомагистралям, что обеспечивает легкую доступность к центру города. Рядом с комплексом находятся остановки общественного транспорта, обеспечивающие связь с ближайшими станциями метро и железнодорожными станциями." 22 | }, 23 | { 24 | "question": "Как обеспечивается безопасность в комплексе?", 25 | "answer": "Безопасность жителей в Дубовом Квартале является приоритетом. Комплекс оборудован системой видеонаблюдения 24/7, контролируемым доступом и охраняемым периметром. Также на территории действует круглосуточная служба охраны, гарантирующая безопасность и спокойствие жителей." 26 | }, 27 | { 28 | "question": "Какие финансовые условия предлагаются при покупке?", 29 | "answer": "Дубовый Квартал предлагает разнообразные финансовые условия, включая возможность покупки жилья в рассрочку и ипотеку с выгодными условиями от ведущих банков. Менеджеры проекта могут предложить индивидуальные консультации по выбору оптимальных финансовых схем, учитывая личные предпочтения и возможности покупателя." 30 | }, 31 | { 32 | "question": "Какие дополнительные расходы следует учесть при покупке квартиры?", 33 | "answer": "Помимо стоимости самой квартиры, покупателям следует учитывать ежемесячные расходы на содержание жилья, включая платежи за коммунальные услуги, эксплуатационные расходы и взносы в фонд капитального ремонта. Также важно помнить о налогах, которые должны быть уплачены при совершении сделки." 34 | }, 35 | { 36 | "question": "Каковы цены на недвижимость в Дубовом Квартале?", 37 | "answer": "Цены на недвижимость в Дубовом Квартале варьируются в зависимости от типа жилья и его площади. На текущий момент (май 2024 года) цены начинаются от 5 миллионов рублей за 1-комнатную квартиру площадью 45 м² и могут достигать 25 миллионов рублей за 4-комнатный таунхаус площадью 200 м². Точные цены и доступные варианты можно уточнить у нашего менеджера по продажам." 38 | }, 39 | { 40 | "question": "Какие мероприятия и активности организуются для жителей комплекса?", 41 | "answer": "В Дубовом Квартале регулярно организуются различные мероприятия и активности для жителей всех возрастов. Это включает в себя спортивные соревнования, культурные и развлекательные мероприятия, детские праздники, а также мастер-классы и тренинги. Информация о предстоящих событиях размещается на информационных стендах и в мобильном приложении комплекса." 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /n8n/http-handle.json: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": [ 3 | { 4 | "parameters": { 5 | "method": "POST", 6 | "url": "= https://api.telegram.org/bot{{ $json['api_key'] }}/setWebhook?url={{ $json['url_webhook'] }}", 7 | "options": {} 8 | }, 9 | "type": "n8n-nodes-base.httpRequest", 10 | "typeVersion": 4.2, 11 | "position": [ 12 | 300, 13 | 600 14 | ], 15 | "id": "0046b690-97ee-470c-9007-7fa4ff382eaa", 16 | "name": "Telegram Привязка" 17 | }, 18 | { 19 | "parameters": { 20 | "method": "PATCH", 21 | "url": "https://api.wazzup24.com/v3/webhooks", 22 | "sendHeaders": true, 23 | "headerParameters": { 24 | "parameters": [ 25 | { 26 | "name": "Authorization", 27 | "value": "=Bearer {{ $json['api_key'] }}" 28 | } 29 | ] 30 | }, 31 | "sendBody": true, 32 | "specifyBody": "json", 33 | "jsonBody": "={\n \"webhooksUri\": \"{{ $json['url_webhook'] }}\",\n \"subscriptions\": {\n \"messagesAndStatuses\": true,\n \"contactsAndDealsCreation\": true\n }\n}", 34 | "options": { 35 | "redirect": { 36 | "redirect": {} 37 | } 38 | } 39 | }, 40 | "type": "n8n-nodes-base.httpRequest", 41 | "typeVersion": 4.2, 42 | "position": [ 43 | 300, 44 | 120 45 | ], 46 | "id": "e93b20a0-8a7b-4bb8-a9f3-4001f76eab99", 47 | "name": "Wazzup Привязка" 48 | }, 49 | { 50 | "parameters": { 51 | "content": "# HTTP Ручки\n\n***\n\n**Автор:** [Никита Шорин](https://www.youtube.com/@shorin_nikita)\n\n***\n\n## Инструкция по привязке вебхуков\n### • Сделать связь между **СТАРТ** и нодой **SET** с которой будем работать\n### • Вставить API ключ в **api_key** в ноде **SET**\n### • Вставить адрес вебхука в **url_webhook** в ноде **SET**\n### • Запустить **Test workflow**\n### • Проверить результат в **Проверка Вебхука**\n\n***\n\n## Wazzup\nПервые 3 дня бесплатно\nРегистрация с бонусом ₽500 [по ссылке](https://wazzup24.com/?utm_p=qzzBpM)\n\n### Доступные каналы:\n• WhatsApp (серый wazzup - моментально по QR code)\n• WhatsApp WABA (официальная интеграция - после верификации в Meta)\n• Telegram Персональный\n• Telegram Bot\n• Instagram\n• Avito\n• VK\n• Viber\n\n***\n\n## Telegram Bot\nВсегда бесплатный\nРегистрация телеграм бота в [@BotFather](https:///t.me/botfather)\n\n\n***\n\n## [Присоединиться к сообществу по ИИ-автоматизации](https://t.me/PrideAIBot)", 52 | "height": 1020, 53 | "width": 460 54 | }, 55 | "type": "n8n-nodes-base.stickyNote", 56 | "typeVersion": 1, 57 | "position": [ 58 | -540, 59 | 40 60 | ], 61 | "id": "7068abfd-418f-48e7-9569-4b649bbd330d", 62 | "name": "Sticky Note" 63 | }, 64 | { 65 | "parameters": { 66 | "assignments": { 67 | "assignments": [ 68 | { 69 | "id": "f404bab6-5dfb-42a6-991f-c6fd6f05fe15", 70 | "name": "api_key", 71 | "value": "Заменить на API Wazzup", 72 | "type": "string" 73 | }, 74 | { 75 | "id": "740e516f-160a-4ab2-82d6-a63382e3b803", 76 | "name": "url_webhook", 77 | "value": "Заменить на вебхук из основного Workflow", 78 | "type": "string" 79 | } 80 | ] 81 | }, 82 | "options": {} 83 | }, 84 | "type": "n8n-nodes-base.set", 85 | "typeVersion": 3.4, 86 | "position": [ 87 | 80, 88 | 80 89 | ], 90 | "id": "f4267758-4813-4176-84a4-c67dd403927f", 91 | "name": "SET Wazzup Личный" 92 | }, 93 | { 94 | "parameters": { 95 | "assignments": { 96 | "assignments": [ 97 | { 98 | "id": "f404bab6-5dfb-42a6-991f-c6fd6f05fe15", 99 | "name": "api_key", 100 | "value": "Заменить на API Wazzup", 101 | "type": "string" 102 | }, 103 | { 104 | "id": "740e516f-160a-4ab2-82d6-a63382e3b803", 105 | "name": "url_webhook", 106 | "value": "Заменить на вебхук из основного Workflow", 107 | "type": "string" 108 | } 109 | ] 110 | }, 111 | "options": {} 112 | }, 113 | "type": "n8n-nodes-base.set", 114 | "typeVersion": 3.4, 115 | "position": [ 116 | 80, 117 | 380 118 | ], 119 | "id": "4a12ceb7-e7b6-4d7d-a227-4ff31cbfb940", 120 | "name": "SET Wazzup Клиента" 121 | }, 122 | { 123 | "parameters": { 124 | "url": "https://api.wazzup24.com/v3/webhooks", 125 | "sendHeaders": true, 126 | "headerParameters": { 127 | "parameters": [ 128 | { 129 | "name": "Authorization", 130 | "value": "=Bearer {{ $json['api_key'] }}" 131 | } 132 | ] 133 | }, 134 | "options": { 135 | "redirect": { 136 | "redirect": {} 137 | } 138 | } 139 | }, 140 | "type": "n8n-nodes-base.httpRequest", 141 | "typeVersion": 4.2, 142 | "position": [ 143 | 300, 144 | 320 145 | ], 146 | "id": "d910b2f9-85aa-4473-aaea-6f91e02fb02e", 147 | "name": "Wazzup Проверка Вебхука" 148 | }, 149 | { 150 | "parameters": { 151 | "method": "POST", 152 | "url": "= https://api.telegram.org/bot{{ $json['api_key'] }}/getWebhookInfo", 153 | "options": {} 154 | }, 155 | "type": "n8n-nodes-base.httpRequest", 156 | "typeVersion": 4.2, 157 | "position": [ 158 | 300, 159 | 740 160 | ], 161 | "id": "708a5d13-f8db-459b-9779-f2f4053d92cc", 162 | "name": "Telegram Проверка Вебхука" 163 | }, 164 | { 165 | "parameters": {}, 166 | "type": "n8n-nodes-base.manualTrigger", 167 | "typeVersion": 1, 168 | "position": [ 169 | -220, 170 | 460 171 | ], 172 | "id": "5c4f7835-fbff-489f-ab60-ae30dfd7cf4c", 173 | "name": "СТАРТ" 174 | }, 175 | { 176 | "parameters": { 177 | "content": "## Wazzup\n", 178 | "height": 500, 179 | "width": 820, 180 | "color": 4 181 | }, 182 | "type": "n8n-nodes-base.stickyNote", 183 | "typeVersion": 1, 184 | "position": [ 185 | -60, 186 | 40 187 | ], 188 | "id": "a2f90dcf-d164-48d5-a127-4e3c7fad9ab4", 189 | "name": "Sticky Note1" 190 | }, 191 | { 192 | "parameters": { 193 | "content": "## Telegram Bot", 194 | "height": 500, 195 | "width": 820, 196 | "color": 5 197 | }, 198 | "type": "n8n-nodes-base.stickyNote", 199 | "typeVersion": 1, 200 | "position": [ 201 | -60, 202 | 560 203 | ], 204 | "id": "d15b3378-74e7-4af4-8df2-04f2c3f0ba2b", 205 | "name": "Sticky Note2" 206 | }, 207 | { 208 | "parameters": { 209 | "assignments": { 210 | "assignments": [ 211 | { 212 | "id": "f404bab6-5dfb-42a6-991f-c6fd6f05fe15", 213 | "name": "api_key", 214 | "value": "Заменить на API key Telegram bot | из @BotFather", 215 | "type": "string" 216 | }, 217 | { 218 | "id": "740e516f-160a-4ab2-82d6-a63382e3b803", 219 | "name": "url_webhook", 220 | "value": "Заменить на вебхук из основного Workflow", 221 | "type": "string" 222 | } 223 | ] 224 | }, 225 | "options": {} 226 | }, 227 | "type": "n8n-nodes-base.set", 228 | "typeVersion": 3.4, 229 | "position": [ 230 | 80, 231 | 660 232 | ], 233 | "id": "7e6628ab-c3e3-4ace-8fd8-b177a7070b95", 234 | "name": "SET Telegram Bot 1" 235 | }, 236 | { 237 | "parameters": { 238 | "assignments": { 239 | "assignments": [ 240 | { 241 | "id": "f404bab6-5dfb-42a6-991f-c6fd6f05fe15", 242 | "name": "api_key", 243 | "value": "Заменить на API key Telegram bot | из @BotFather", 244 | "type": "string" 245 | }, 246 | { 247 | "id": "740e516f-160a-4ab2-82d6-a63382e3b803", 248 | "name": "url_webhook", 249 | "value": "Заменить на вебхук из основного Workflow", 250 | "type": "string" 251 | } 252 | ] 253 | }, 254 | "options": {} 255 | }, 256 | "type": "n8n-nodes-base.set", 257 | "typeVersion": 3.4, 258 | "position": [ 259 | 80, 260 | 860 261 | ], 262 | "id": "856c0dde-827b-45c0-881f-6440aa930313", 263 | "name": "SET Telegram Bot 2" 264 | }, 265 | { 266 | "parameters": { 267 | "method": "POST", 268 | "url": "= https://api.telegram.org/bot{{ $json['api key'] }}/getMe", 269 | "options": {} 270 | }, 271 | "type": "n8n-nodes-base.httpRequest", 272 | "typeVersion": 4.2, 273 | "position": [ 274 | 300, 275 | 900 276 | ], 277 | "id": "7b5eb6c7-ae4f-4092-9ed9-b3adb2055360", 278 | "name": "Telegram Данные Привязки" 279 | } 280 | ], 281 | "connections": { 282 | "SET Wazzup Личный": { 283 | "main": [ 284 | [ 285 | { 286 | "node": "Wazzup Привязка", 287 | "type": "main", 288 | "index": 0 289 | }, 290 | { 291 | "node": "Wazzup Проверка Вебхука", 292 | "type": "main", 293 | "index": 0 294 | } 295 | ] 296 | ] 297 | }, 298 | "SET Wazzup Клиента": { 299 | "main": [ 300 | [ 301 | { 302 | "node": "Wazzup Привязка", 303 | "type": "main", 304 | "index": 0 305 | }, 306 | { 307 | "node": "Wazzup Проверка Вебхука", 308 | "type": "main", 309 | "index": 0 310 | } 311 | ] 312 | ] 313 | }, 314 | "СТАРТ": { 315 | "main": [ 316 | [ 317 | { 318 | "node": "SET Wazzup Личный", 319 | "type": "main", 320 | "index": 0 321 | } 322 | ] 323 | ] 324 | }, 325 | "SET Telegram Bot 1": { 326 | "main": [ 327 | [ 328 | { 329 | "node": "Telegram Привязка", 330 | "type": "main", 331 | "index": 0 332 | }, 333 | { 334 | "node": "Telegram Проверка Вебхука", 335 | "type": "main", 336 | "index": 0 337 | }, 338 | { 339 | "node": "Telegram Данные Привязки", 340 | "type": "main", 341 | "index": 0 342 | } 343 | ] 344 | ] 345 | }, 346 | "SET Telegram Bot 2": { 347 | "main": [ 348 | [ 349 | { 350 | "node": "Telegram Привязка", 351 | "type": "main", 352 | "index": 0 353 | }, 354 | { 355 | "node": "Telegram Проверка Вебхука", 356 | "type": "main", 357 | "index": 0 358 | }, 359 | { 360 | "node": "Telegram Данные Привязки", 361 | "type": "main", 362 | "index": 0 363 | } 364 | ] 365 | ] 366 | } 367 | }, 368 | "pinData": {}, 369 | "meta": { 370 | "templateCredsSetupCompleted": true, 371 | "instanceId": "89117b89e6ee2e2d36a3f934f1a63e32c1c204c62e00bb625da8c39baf77c2c7" 372 | } 373 | } 374 | -------------------------------------------------------------------------------- /make/blueprint-connect-wazzup.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Connect Wazzup by @shorin_nikita", 3 | "flow": [ 4 | { 5 | "id": 1, 6 | "module": "http:ActionSendData", 7 | "version": 3, 8 | "parameters": { 9 | "handleErrors": true, 10 | "useNewZLibDeCompress": true 11 | }, 12 | "filter": { 13 | "name": "AIBot.School", 14 | "conditions": [] 15 | }, 16 | "mapper": { 17 | "ca": "", 18 | "qs": [], 19 | "url": "https://api.wazzup24.com/v3/webhooks", 20 | "data": "{\n \"webhooksUri\": \"{{var.input.webhook_url}}\",\n \"subscriptions\": {\n \"messagesAndStatuses\": true\n }\n}", 21 | "gzip": true, 22 | "method": "patch", 23 | "headers": [ 24 | { 25 | "name": "Authorization", 26 | "value": "Bearer {{var.input.wazzup_api_key}}" 27 | } 28 | ], 29 | "timeout": "", 30 | "useMtls": false, 31 | "authPass": "", 32 | "authUser": "", 33 | "bodyType": "raw", 34 | "contentType": "application/json", 35 | "serializeUrl": false, 36 | "shareCookies": false, 37 | "parseResponse": false, 38 | "followRedirect": true, 39 | "useQuerystring": false, 40 | "followAllRedirects": false, 41 | "rejectUnauthorized": true 42 | }, 43 | "metadata": { 44 | "designer": { 45 | "x": 0, 46 | "y": 0 47 | }, 48 | "restore": { 49 | "expect": { 50 | "qs": { 51 | "mode": "chose" 52 | }, 53 | "method": { 54 | "mode": "chose", 55 | "label": "PATCH" 56 | }, 57 | "headers": { 58 | "mode": "chose", 59 | "items": [ 60 | null 61 | ] 62 | }, 63 | "bodyType": { 64 | "label": "Raw" 65 | }, 66 | "contentType": { 67 | "label": "JSON (application/json)" 68 | } 69 | } 70 | }, 71 | "parameters": [ 72 | { 73 | "name": "handleErrors", 74 | "type": "boolean", 75 | "label": "Evaluate all states as errors (except for 2xx and 3xx )", 76 | "required": true 77 | }, 78 | { 79 | "name": "useNewZLibDeCompress", 80 | "type": "hidden" 81 | } 82 | ], 83 | "expect": [ 84 | { 85 | "name": "url", 86 | "type": "url", 87 | "label": "URL", 88 | "required": true 89 | }, 90 | { 91 | "name": "serializeUrl", 92 | "type": "boolean", 93 | "label": "Serialize URL", 94 | "required": true 95 | }, 96 | { 97 | "name": "method", 98 | "type": "select", 99 | "label": "Method", 100 | "required": true, 101 | "validate": { 102 | "enum": [ 103 | "get", 104 | "head", 105 | "post", 106 | "put", 107 | "patch", 108 | "delete", 109 | "options" 110 | ] 111 | } 112 | }, 113 | { 114 | "name": "headers", 115 | "spec": [ 116 | { 117 | "name": "name", 118 | "type": "text", 119 | "label": "Name", 120 | "required": true 121 | }, 122 | { 123 | "name": "value", 124 | "type": "text", 125 | "label": "Value" 126 | } 127 | ], 128 | "type": "array", 129 | "label": "Headers" 130 | }, 131 | { 132 | "name": "qs", 133 | "spec": [ 134 | { 135 | "name": "name", 136 | "type": "text", 137 | "label": "Name", 138 | "required": true 139 | }, 140 | { 141 | "name": "value", 142 | "type": "text", 143 | "label": "Value" 144 | } 145 | ], 146 | "type": "array", 147 | "label": "Query String" 148 | }, 149 | { 150 | "name": "bodyType", 151 | "type": "select", 152 | "label": "Body type", 153 | "validate": { 154 | "enum": [ 155 | "raw", 156 | "x_www_form_urlencoded", 157 | "multipart_form_data" 158 | ] 159 | } 160 | }, 161 | { 162 | "name": "parseResponse", 163 | "type": "boolean", 164 | "label": "Parse response", 165 | "required": true 166 | }, 167 | { 168 | "name": "authUser", 169 | "type": "text", 170 | "label": "User name" 171 | }, 172 | { 173 | "name": "authPass", 174 | "type": "password", 175 | "label": "Password" 176 | }, 177 | { 178 | "name": "timeout", 179 | "type": "uinteger", 180 | "label": "Timeout", 181 | "validate": { 182 | "max": 300, 183 | "min": 1 184 | } 185 | }, 186 | { 187 | "name": "shareCookies", 188 | "type": "boolean", 189 | "label": "Share cookies with other HTTP modules", 190 | "required": true 191 | }, 192 | { 193 | "name": "ca", 194 | "type": "cert", 195 | "label": "Self-signed certificate" 196 | }, 197 | { 198 | "name": "rejectUnauthorized", 199 | "type": "boolean", 200 | "label": "Reject connections that are using unverified (self-signed) certificates", 201 | "required": true 202 | }, 203 | { 204 | "name": "followRedirect", 205 | "type": "boolean", 206 | "label": "Follow redirect", 207 | "required": true 208 | }, 209 | { 210 | "name": "useQuerystring", 211 | "type": "boolean", 212 | "label": "Disable serialization of multiple same query string keys as arrays", 213 | "required": true 214 | }, 215 | { 216 | "name": "gzip", 217 | "type": "boolean", 218 | "label": "Request compressed content", 219 | "required": true 220 | }, 221 | { 222 | "name": "useMtls", 223 | "type": "boolean", 224 | "label": "Use Mutual TLS", 225 | "required": true 226 | }, 227 | { 228 | "name": "contentType", 229 | "type": "select", 230 | "label": "Content type", 231 | "validate": { 232 | "enum": [ 233 | "text/plain", 234 | "application/json", 235 | "application/xml", 236 | "text/xml", 237 | "text/html", 238 | "custom" 239 | ] 240 | } 241 | }, 242 | { 243 | "name": "data", 244 | "type": "buffer", 245 | "label": "Request content" 246 | }, 247 | { 248 | "name": "followAllRedirects", 249 | "type": "boolean", 250 | "label": "Follow all redirect", 251 | "required": true 252 | } 253 | ] 254 | } 255 | } 256 | ], 257 | "metadata": { 258 | "instant": false, 259 | "version": 1, 260 | "scenario": { 261 | "roundtrips": 1, 262 | "maxErrors": 3, 263 | "autoCommit": true, 264 | "autoCommitTriggerLast": true, 265 | "sequential": false, 266 | "slots": null, 267 | "confidential": false, 268 | "dataloss": false, 269 | "dlq": false, 270 | "freshVariables": false 271 | }, 272 | "designer": { 273 | "orphans": [] 274 | }, 275 | "zone": "eu2.make.com", 276 | "notes": [ 277 | { 278 | "moduleIds": [ 279 | 1 280 | ], 281 | "content": "

PrideAIBot by shorin_nikita

", 282 | "isFilterNote": false, 283 | "metadata": { 284 | "color": "#9138FE" 285 | } 286 | } 287 | ] 288 | }, 289 | "io": { 290 | "input_spec": [ 291 | { 292 | "name": "wazzup_api_key", 293 | "type": "text", 294 | "label": "", 295 | "default": "ЗАМЕНИТЬ", 296 | "required": false, 297 | "multiline": false 298 | }, 299 | { 300 | "name": "webhook_url", 301 | "type": "text", 302 | "label": "", 303 | "default": "ЗАМЕНИТЬ", 304 | "required": false, 305 | "multiline": false 306 | } 307 | ], 308 | "output_spec": [] 309 | } 310 | } 311 | -------------------------------------------------------------------------------- /n8n/FirecrawlScreenshotTelegramPost.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "My workflow 8", 3 | "nodes": [ 4 | { 5 | "parameters": { 6 | "content": "", 7 | "height": 772, 8 | "width": 1580, 9 | "color": 7 10 | }, 11 | "type": "n8n-nodes-base.stickyNote", 12 | "typeVersion": 1, 13 | "position": [ 14 | 672, 15 | 64 16 | ], 17 | "id": "6f5e9fb2-183b-44c5-bfa1-94e9d59d8a0a", 18 | "name": "Sticky Note" 19 | }, 20 | { 21 | "parameters": { 22 | "url": "={{ $json.data.screenshot }}", 23 | "options": { 24 | "response": { 25 | "response": { 26 | "responseFormat": "file" 27 | } 28 | }, 29 | "timeout": 30000 30 | } 31 | }, 32 | "type": "n8n-nodes-base.httpRequest", 33 | "typeVersion": 4.2, 34 | "position": [ 35 | 1520, 36 | 160 37 | ], 38 | "id": "36a60702-05c9-4e4a-97ae-326c61ed3614", 39 | "name": "Получить скриншот", 40 | "continueOnFail": true 41 | }, 42 | { 43 | "parameters": { 44 | "mode": "combine", 45 | "combineBy": "combineAll", 46 | "options": {} 47 | }, 48 | "type": "n8n-nodes-base.merge", 49 | "typeVersion": 3.1, 50 | "position": [ 51 | 1824, 52 | 320 53 | ], 54 | "id": "a9655098-64ee-4e43-a5ba-3522b10429ed", 55 | "name": "Объединение данных" 56 | }, 57 | { 58 | "parameters": { 59 | "content": "", 60 | "height": 200, 61 | "width": 190, 62 | "color": 3 63 | }, 64 | "type": "n8n-nodes-base.stickyNote", 65 | "typeVersion": 1, 66 | "position": [ 67 | 944, 68 | 272 69 | ], 70 | "id": "59794b3c-b1a0-4dac-8874-d9766b5594b0", 71 | "name": "Sticky Note4" 72 | }, 73 | { 74 | "parameters": { 75 | "assignments": { 76 | "assignments": [ 77 | { 78 | "id": "78942da2-4425-4247-8083-35e40037b54a", 79 | "name": "url_site", 80 | "value": "={{ $json.chatInput }}", 81 | "type": "string" 82 | }, 83 | { 84 | "id": "dda7ff2b-feb9-4bcd-a1e3-fd0e2be71d41", 85 | "name": "api_key_firecrawl", 86 | "value": "ВСТАВИТЬ КЛЮЧ https://www.firecrawl.dev/app/api-keys", 87 | "type": "string" 88 | } 89 | ] 90 | }, 91 | "options": {} 92 | }, 93 | "type": "n8n-nodes-base.set", 94 | "typeVersion": 3.4, 95 | "position": [ 96 | 976, 97 | 320 98 | ], 99 | "id": "8ba77111-5982-4417-8141-956818923a77", 100 | "name": "API КЛЮЧИ" 101 | }, 102 | { 103 | "parameters": { 104 | "options": {} 105 | }, 106 | "type": "@n8n/n8n-nodes-langchain.chatTrigger", 107 | "typeVersion": 1.1, 108 | "position": [ 109 | 752, 110 | 320 111 | ], 112 | "id": "505eb3bb-5185-45bf-9d9b-07939fba332e", 113 | "name": "When chat message received", 114 | "webhookId": "259fcad7-e055-4c33-ad74-cd225e7e37a2" 115 | }, 116 | { 117 | "parameters": { 118 | "promptType": "define", 119 | "text": "={{ $json.data.markdown }}", 120 | "messages": { 121 | "messageValues": [ 122 | { 123 | "message": "==Ты — аналитик веб-контента для Telegram-канала об ИИ, технологиях и автоматизации. Тебе дан контент веб-страницы. Определи ТИП контента и создай соответствующую выжимку на русском для Telegram с parse_mode=HTML.\n\nЭТАП 1 - ОПРЕДЕЛИ ТИП:\n- Коммерческий сайт/лендинг (продают услуги/продукты)\n- Статья/блог (информационный контент)\n- Документация/инструкция\n- Новости/анонсы\n\nЭТАП 2 - СТРУКТУРА ПО ТИПУ:\n\nДЛЯ КОММЕРЧЕСКИХ САЙТОВ:\n1) Что это: Компания/агентство + основная специализация в 1 предложении\n2) Услуги: Конкретный список что предлагают (2-3 ключевых позиции БЕЗ ЦЕН если цены неточные)\n3) Для кого: Целевая аудитория + какую проблему решают\n4) Как заказать: Способ связи или призыв к действию\n\nДЛЯ СТАТЕЙ/БЛОГОВ:\n1) О чём статья: Основная тема в 1-2 предложениях\n2) Ключевые факты: 2-3 главных момента без воды\n3) Практическая польза: Что читатель узнает/поймет\n4) Призыв: \"Детали в статье\" или \"Сохрани полезное\"\n\nФОРМАТИРОВАНИЕ ДЛЯ TELEGRAM HTML:\n- Тон: информативный, без воды и рекламных слов\n- Эмодзи: 1-2 для структуры\n- Длина: ≤ 600 символов (с тегами)\n- ПЕРЕНОСЫ СТРОК: Используй символ перевода строки между блоками\n- Разметка: ТОЛЬКО и (только эти теги поддерживаются!)\n- СТРОГО ЗАПРЕЩЕНО:
,
,

,

, , , ,
, 
, , любые другие теги\n- Никаких ссылок, хэштегов, упоминаний\n- ВАЖНО ПО ЦЕНАМ: Указывай цены ТОЧНО как в тексте (доллары, рубли, евро) или НЕ указывай вообще если неточно\n\nПРИМЅР ПРАВИЛЬНОГО ФОРМАТА (с переносами между блоками):\nЧто это: Описание компании\nУслуги: Список услуг\nДля кого: Целевая аудитория\nКак заказать: Способ связи\n\nВАЖНО: Фокусируйся на ФАКТАХ - что конкретно предлагается/описывается, а не на эмоциях или общих фразах.\n\nВыведи ТОЛЬКО готовый пост БЕЗ пояснений, с переносами строк между блоками.\n\nКРИТИЧЕСКИ ВАЖНО: Используй обычные переносы строк, НЕ HTML теги!" 124 | } 125 | ] 126 | }, 127 | "batching": {} 128 | }, 129 | "type": "@n8n/n8n-nodes-langchain.chainLlm", 130 | "typeVersion": 1.7, 131 | "position": [ 132 | 1424, 133 | 464 134 | ], 135 | "id": "e4289628-06e5-429d-9574-d9329ae300a5", 136 | "name": "Создать пост" 137 | }, 138 | { 139 | "parameters": { 140 | "model": { 141 | "__rl": true, 142 | "value": "gpt-4.1", 143 | "mode": "list", 144 | "cachedResultName": "gpt-4.1" 145 | }, 146 | "options": {} 147 | }, 148 | "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", 149 | "typeVersion": 1.2, 150 | "position": [ 151 | 1520, 152 | 688 153 | ], 154 | "id": "3c91d88d-8c9d-4a68-8d12-4e48c6ed5cc4", 155 | "name": "ИИ модель", 156 | "credentials": { 157 | "openAiApi": { 158 | "id": "kxjGbPTTXFAfAr4U", 159 | "name": "OpenAI v7.23" 160 | } 161 | } 162 | }, 163 | { 164 | "parameters": { 165 | "content": "", 166 | "width": 170, 167 | "color": 4 168 | }, 169 | "type": "n8n-nodes-base.stickyNote", 170 | "typeVersion": 1, 171 | "position": [ 172 | 1472, 173 | 640 174 | ], 175 | "id": "ba6da68d-f05d-4bcf-8f97-df296d3050b9", 176 | "name": "Sticky Note5" 177 | }, 178 | { 179 | "parameters": { 180 | "method": "POST", 181 | "url": " https://api.telegram.org/bot{api_key_telegram}/sendPhoto", 182 | "sendBody": true, 183 | "bodyParameters": { 184 | "parameters": [ 185 | { 186 | "name": "chat_id", 187 | "value": "ВСТАВЬ СВОЙ ID | @username_to_id_bot" 188 | }, 189 | { 190 | "name": "caption", 191 | "value": "={{ $json.text }}" 192 | }, 193 | { 194 | "name": "parse_mode", 195 | "value": "HTML" 196 | }, 197 | { 198 | "name": "photo", 199 | "value": "={{ $json.data.screenshot }}" 200 | } 201 | ] 202 | }, 203 | "options": {} 204 | }, 205 | "type": "n8n-nodes-base.httpRequest", 206 | "typeVersion": 4.2, 207 | "position": [ 208 | 2048, 209 | 320 210 | ], 211 | "id": "b05315d4-066c-4e37-87a1-92bbe04e9937", 212 | "name": "Send Message" 213 | }, 214 | { 215 | "parameters": { 216 | "content": "", 217 | "height": 176, 218 | "width": 234, 219 | "color": 5 220 | }, 221 | "type": "n8n-nodes-base.stickyNote", 222 | "typeVersion": 1, 223 | "position": [ 224 | 1984, 225 | 304 226 | ], 227 | "id": "d8421048-9f3e-401e-8a90-18fbd8f045ab", 228 | "name": "Sticky Note6" 229 | }, 230 | { 231 | "parameters": { 232 | "content": "# 🤖 Система автоматического скрапинга веб-страниц с ИИ\n\n---\n\n## 👤 Автор\n**[Nikita Shorin](https://www.youtube.com/@shorin_nikita)**\n\n---\n\n## 📝 Описание проекта\n\nВоркфлоу автоматически парсит веб-страницы, создает скриншоты, формирует контент с помощью ИИ и отправляет готовые посты в Telegram.\n\n---\n\n## ⚙️ Настройка и конфигурация\n\n### 🔴 **1. FireCrawl API**\n- **Получение ключа:** Зарегистрируйтесь на [firecrawl.dev](https://www.firecrawl.dev/referral?rid=LGGW3NBT)\n- **Настройка:** В соответствующей ноде замените `api_key_firecrawl` на реальный API-ключ\n\n### 🔵 **2. Telegram Bot**\n- **Создание бота:** Перейдите к [@BotFather](https://t.me/BotFather/) и создайте нового бота\n- **Настройка API:** В ноде \"sendMessage\" замените `api_key_telegram` на токен вашего бота\n- **Настройка чата:** Замените `chat_id` на ID целевого чата для отправки постов\n\n### 🟢 **3. OpenAI API**\n- **Получение ключа:** Создайте API-ключ на [platform.openai.com](https://platform.openai.com/api-keys)\n- **Настройка:** Настройте учетные данные OpenAI в ноде \"GPT 4.1\"\n\n---\n\n## 🛠️ Основные функции\n\n| Функция | Статус | Описание |\n|---------|--------|----------|\n| Парсинг веб-сайтов | ✅ | Автоматическое извлечение контента с помощью FireCrawl |\n| Создание скриншотов | ✅ | Генерация визуальных превью страниц |\n| ИИ-обработка контента | ✅ | Создание структурированных постов с помощью GPT |\n| Отправка в Telegram | ✅ | Автоматическая публикация готового контента |\n\n---\n\n## 🎯 Результат работы\n\n**Что получает пользователь:**\n- 📸 Скриншот главной страницы сайта\n- 📄 Структурированное описание контента\n- 🚀 Готовый пост в Telegram-канале/чате\n\n---\n\n## 🔧 Технический стек\n\n- **Парсинг:** FireCrawl API\n- **ИИ:** OpenAI GPT-4\n- **Мессенджер:** Telegram Bot API\n- **Автоматизация:** n8n workflow", 233 | "height": 1232, 234 | "width": 1064, 235 | "color": 6 236 | }, 237 | "type": "n8n-nodes-base.stickyNote", 238 | "typeVersion": 1, 239 | "position": [ 240 | -432, 241 | -160 242 | ], 243 | "id": "16067301-43f4-4188-a2ee-27288228e8dd", 244 | "name": "Sticky Note7" 245 | }, 246 | { 247 | "parameters": { 248 | "method": "POST", 249 | "url": "https://api.firecrawl.dev/v1/scrape", 250 | "sendHeaders": true, 251 | "headerParameters": { 252 | "parameters": [ 253 | { 254 | "name": "Authorization", 255 | "value": "=Bearer {{ $json.api_key_firecrawl }}" 256 | } 257 | ] 258 | }, 259 | "sendBody": true, 260 | "specifyBody": "json", 261 | "jsonBody": "={\n \"url\": \"{{ $json.url_site }}\",\n \"formats\": [\n \"json\",\n \"screenshot\"\n ],\n \"onlyMainContent\": true,\n \"waitFor\": 3000,\n \"timeout\": 60000,\n \"maxAge\": 3600000,\n \"removeBase64Images\": true,\n \"blockAds\": true,\n \"proxy\": \"auto\",\n \"storeInCache\": true,\n \"jsonOptions\": {\n \"prompt\": \"Сделай краткое резюме статьи для бизнес-профессионалов.\"\n }\n}", 262 | "options": {} 263 | }, 264 | "type": "n8n-nodes-base.httpRequest", 265 | "typeVersion": 4.2, 266 | "position": [ 267 | 1200, 268 | 160 269 | ], 270 | "id": "924b6190-2db1-4094-91dc-66562b065c82", 271 | "name": "Скриншот страницы", 272 | "continueOnFail": true 273 | }, 274 | { 275 | "parameters": { 276 | "method": "POST", 277 | "url": "https://api.firecrawl.dev/v1/scrape", 278 | "sendHeaders": true, 279 | "headerParameters": { 280 | "parameters": [ 281 | { 282 | "name": "Authorization", 283 | "value": "=Bearer {{ $json.api_key_firecrawl }}" 284 | }, 285 | { 286 | "name": "Content-Type", 287 | "value": "application/json" 288 | } 289 | ] 290 | }, 291 | "sendBody": true, 292 | "specifyBody": "json", 293 | "jsonBody": "={\n \"url\": \"{{ $json.url_site }}\",\n \"formats\": [\"markdown\"]\n}", 294 | "options": { 295 | "timeout": 30000 296 | } 297 | }, 298 | "type": "n8n-nodes-base.httpRequest", 299 | "typeVersion": 4.2, 300 | "position": [ 301 | 1200, 302 | 464 303 | ], 304 | "id": "8272abf9-ac89-444a-ae90-27785f35e328", 305 | "name": "Парсер веб страницы", 306 | "continueOnFail": true 307 | } 308 | ], 309 | "pinData": {}, 310 | "connections": { 311 | "Получить скриншот": { 312 | "main": [ 313 | [ 314 | { 315 | "node": "Объединение данных", 316 | "type": "main", 317 | "index": 0 318 | } 319 | ] 320 | ] 321 | }, 322 | "API КЛЮЧИ": { 323 | "main": [ 324 | [ 325 | { 326 | "node": "Скриншот страницы", 327 | "type": "main", 328 | "index": 0 329 | }, 330 | { 331 | "node": "Парсер веб страницы", 332 | "type": "main", 333 | "index": 0 334 | } 335 | ] 336 | ] 337 | }, 338 | "When chat message received": { 339 | "main": [ 340 | [ 341 | { 342 | "node": "API КЛЮЧИ", 343 | "type": "main", 344 | "index": 0 345 | } 346 | ] 347 | ] 348 | }, 349 | "Создать пост": { 350 | "main": [ 351 | [ 352 | { 353 | "node": "Объединение данных", 354 | "type": "main", 355 | "index": 1 356 | } 357 | ] 358 | ] 359 | }, 360 | "ИИ модель": { 361 | "ai_languageModel": [ 362 | [ 363 | { 364 | "node": "Создать пост", 365 | "type": "ai_languageModel", 366 | "index": 0 367 | } 368 | ] 369 | ] 370 | }, 371 | "Объединение данных": { 372 | "main": [ 373 | [ 374 | { 375 | "node": "Send Message", 376 | "type": "main", 377 | "index": 0 378 | } 379 | ] 380 | ] 381 | }, 382 | "Скриншот страницы": { 383 | "main": [ 384 | [ 385 | { 386 | "node": "Получить скриншот", 387 | "type": "main", 388 | "index": 0 389 | } 390 | ] 391 | ] 392 | }, 393 | "Парсер веб страницы": { 394 | "main": [ 395 | [ 396 | { 397 | "node": "Создать пост", 398 | "type": "main", 399 | "index": 0 400 | } 401 | ] 402 | ] 403 | } 404 | }, 405 | "active": false, 406 | "settings": { 407 | "executionOrder": "v1" 408 | }, 409 | "versionId": "2b7ced27-5367-4640-a38d-75d04615df80", 410 | "meta": { 411 | "instanceId": "89117b89e6ee2e2d36a3f934f1a63e32c1c204c62e00bb625da8c39baf77c2c7" 412 | }, 413 | "id": "FvejQYz16Tu9Dkko", 414 | "tags": [] 415 | } 416 | -------------------------------------------------------------------------------- /n8n/telegram_ai_bot.json: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": [ 3 | { 4 | "parameters": { 5 | "rules": { 6 | "values": [ 7 | { 8 | "conditions": { 9 | "options": { 10 | "caseSensitive": true, 11 | "leftValue": "", 12 | "typeValidation": "strict", 13 | "version": 2 14 | }, 15 | "conditions": [ 16 | { 17 | "leftValue": "={{ $('Webhook').item.json.body.message.text }}", 18 | "rightValue": "", 19 | "operator": { 20 | "type": "string", 21 | "operation": "notEmpty", 22 | "singleValue": true 23 | }, 24 | "id": "74e14772-fc81-456d-acc9-179d2e232fad" 25 | } 26 | ], 27 | "combinator": "and" 28 | }, 29 | "renameOutput": true, 30 | "outputKey": "text" 31 | }, 32 | { 33 | "conditions": { 34 | "options": { 35 | "caseSensitive": true, 36 | "leftValue": "", 37 | "typeValidation": "strict", 38 | "version": 2 39 | }, 40 | "conditions": [ 41 | { 42 | "id": "8d07ef59-070c-4e57-ae1c-5e61c140889a", 43 | "leftValue": "={{ $('Webhook').item.json.body.message.voice }}", 44 | "rightValue": "", 45 | "operator": { 46 | "type": "object", 47 | "operation": "notEmpty", 48 | "singleValue": true 49 | } 50 | } 51 | ], 52 | "combinator": "and" 53 | }, 54 | "renameOutput": true, 55 | "outputKey": "voice" 56 | }, 57 | { 58 | "conditions": { 59 | "options": { 60 | "caseSensitive": true, 61 | "leftValue": "", 62 | "typeValidation": "strict", 63 | "version": 2 64 | }, 65 | "conditions": [ 66 | { 67 | "id": "4fbee3dc-de53-4ee7-b88e-3415d89f8bb1", 68 | "leftValue": "={{ $('Webhook').item.json.body.message.audio }}", 69 | "rightValue": "", 70 | "operator": { 71 | "type": "object", 72 | "operation": "notEmpty", 73 | "singleValue": true 74 | } 75 | } 76 | ], 77 | "combinator": "and" 78 | }, 79 | "renameOutput": true, 80 | "outputKey": "audio" 81 | }, 82 | { 83 | "conditions": { 84 | "options": { 85 | "caseSensitive": true, 86 | "leftValue": "", 87 | "typeValidation": "strict", 88 | "version": 2 89 | }, 90 | "conditions": [ 91 | { 92 | "id": "78190833-73ff-4c43-af7a-35f9de9c7b5b", 93 | "leftValue": "={{ $('Webhook').item.json.body.message.photo[3] }}", 94 | "rightValue": "image", 95 | "operator": { 96 | "type": "object", 97 | "operation": "notEmpty", 98 | "singleValue": true 99 | } 100 | } 101 | ], 102 | "combinator": "and" 103 | }, 104 | "renameOutput": true, 105 | "outputKey": "photo" 106 | } 107 | ] 108 | }, 109 | "options": {} 110 | }, 111 | "type": "n8n-nodes-base.switch", 112 | "typeVersion": 3.2, 113 | "position": [ 114 | 1180, 115 | 400 116 | ], 117 | "id": "a648fe13-a121-4912-b977-9b8cb1a52b84", 118 | "name": "Switch" 119 | }, 120 | { 121 | "parameters": { 122 | "httpMethod": "POST", 123 | "path": "telegam", 124 | "options": {} 125 | }, 126 | "type": "n8n-nodes-base.webhook", 127 | "typeVersion": 2, 128 | "position": [ 129 | 160, 130 | 280 131 | ], 132 | "id": "eab96923-b83c-46af-8dcd-df666db5d387", 133 | "name": "Webhook", 134 | "webhookId": "528ba51a-7eb4-4356-bfb6-244aefe46bf0" 135 | }, 136 | { 137 | "parameters": { 138 | "resource": "image", 139 | "operation": "analyze", 140 | "modelId": { 141 | "__rl": true, 142 | "value": "gpt-4o", 143 | "mode": "list", 144 | "cachedResultName": "GPT-4O" 145 | }, 146 | "text": "What's in this image? Answer Russian.", 147 | "imageUrls": "=https://api.telegram.org/file/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/{{ $json.result.file_path }}", 148 | "options": {} 149 | }, 150 | "type": "@n8n/n8n-nodes-langchain.openAi", 151 | "typeVersion": 1.8, 152 | "position": [ 153 | 2060, 154 | 720 155 | ], 156 | "id": "fceb2206-5ba7-4428-a175-fc23a2d13c02", 157 | "name": "Analyze image", 158 | "credentials": { 159 | "openAiApi": { 160 | "id": "TrtfpYNJaLbwIzTC", 161 | "name": "OpenAi account VIDEO" 162 | } 163 | } 164 | }, 165 | { 166 | "parameters": { 167 | "url": "=https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/getFile", 168 | "sendBody": true, 169 | "bodyParameters": { 170 | "parameters": [ 171 | { 172 | "name": "file_id", 173 | "value": "={{ $('Webhook').item.json.body.message.photo[3].file_id }}" 174 | } 175 | ] 176 | }, 177 | "options": {} 178 | }, 179 | "type": "n8n-nodes-base.httpRequest", 180 | "typeVersion": 4.2, 181 | "position": [ 182 | 1840, 183 | 720 184 | ], 185 | "id": "b53979eb-8ac5-44ea-82e2-ad8e7f73c669", 186 | "name": "Get File Info Image" 187 | }, 188 | { 189 | "parameters": { 190 | "url": "=https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/getFile", 191 | "sendBody": true, 192 | "bodyParameters": { 193 | "parameters": [ 194 | { 195 | "name": "file_id", 196 | "value": "={{ $('Webhook').item.json.body.message.voice.file_id }}" 197 | } 198 | ] 199 | }, 200 | "options": {} 201 | }, 202 | "type": "n8n-nodes-base.httpRequest", 203 | "typeVersion": 4.2, 204 | "position": [ 205 | 1620, 206 | 320 207 | ], 208 | "id": "0af3138f-1597-4dd7-a418-4603db29bf6a", 209 | "name": "Get File Info Voice" 210 | }, 211 | { 212 | "parameters": { 213 | "url": "=https://api.telegram.org/file/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/{{ $json.result.file_path }}", 214 | "options": {} 215 | }, 216 | "type": "n8n-nodes-base.httpRequest", 217 | "typeVersion": 4.2, 218 | "position": [ 219 | 1840, 220 | 320 221 | ], 222 | "id": "c2d0cfb4-32a1-40cf-aef4-8c2a5a696a2d", 223 | "name": "Download Voice File" 224 | }, 225 | { 226 | "parameters": { 227 | "url": "=https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/getFile", 228 | "sendBody": true, 229 | "bodyParameters": { 230 | "parameters": [ 231 | { 232 | "name": "file_id", 233 | "value": "={{ $('Webhook').item.json.body.message.audio.file_id }}" 234 | } 235 | ] 236 | }, 237 | "options": {} 238 | }, 239 | "type": "n8n-nodes-base.httpRequest", 240 | "typeVersion": 4.2, 241 | "position": [ 242 | 1620, 243 | 520 244 | ], 245 | "id": "e1695977-701d-49c1-8a3b-e1c023c560c7", 246 | "name": "Get File Info Audio" 247 | }, 248 | { 249 | "parameters": { 250 | "url": "=https://api.telegram.org/file/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/{{ $json.result.file_path }}", 251 | "options": {} 252 | }, 253 | "type": "n8n-nodes-base.httpRequest", 254 | "typeVersion": 4.2, 255 | "position": [ 256 | 1840, 257 | 520 258 | ], 259 | "id": "5499d74f-63d2-4cb5-896e-31bd13d6b69e", 260 | "name": "Download Audio File" 261 | }, 262 | { 263 | "parameters": { 264 | "resource": "audio", 265 | "operation": "transcribe", 266 | "options": {} 267 | }, 268 | "type": "@n8n/n8n-nodes-langchain.openAi", 269 | "typeVersion": 1.8, 270 | "position": [ 271 | 2060, 272 | 320 273 | ], 274 | "id": "34e39969-d828-47e2-afbb-150a6f5beeac", 275 | "name": "Transcribe a recording voice", 276 | "credentials": { 277 | "openAiApi": { 278 | "id": "TrtfpYNJaLbwIzTC", 279 | "name": "OpenAi account VIDEO" 280 | } 281 | } 282 | }, 283 | { 284 | "parameters": { 285 | "resource": "audio", 286 | "operation": "transcribe", 287 | "options": {} 288 | }, 289 | "type": "@n8n/n8n-nodes-langchain.openAi", 290 | "typeVersion": 1.8, 291 | "position": [ 292 | 2060, 293 | 520 294 | ], 295 | "id": "55bb4072-855a-40c1-9721-516d971d1402", 296 | "name": "Transcribe a recording audio", 297 | "credentials": { 298 | "openAiApi": { 299 | "id": "TrtfpYNJaLbwIzTC", 300 | "name": "OpenAi account VIDEO" 301 | } 302 | } 303 | }, 304 | { 305 | "parameters": { 306 | "assignments": { 307 | "assignments": [ 308 | { 309 | "id": "902016f5-1274-4d55-9b69-4f88b8df381e", 310 | "name": "text", 311 | "value": "={{ $('Transcribe a recording voice').item.json.text }}", 312 | "type": "string" 313 | }, 314 | { 315 | "id": "cef2bdbf-3097-46e2-aafc-2ef202f81c26", 316 | "name": "chat_id", 317 | "value": "={{ $('Webhook').item.json.body.message.chat.id }}", 318 | "type": "string" 319 | }, 320 | { 321 | "id": "55817a18-1b48-46d9-ba30-e07e576310ec", 322 | "name": "telegram_bot_api_key", 323 | "value": "={{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}", 324 | "type": "string" 325 | } 326 | ] 327 | }, 328 | "options": {} 329 | }, 330 | "type": "n8n-nodes-base.set", 331 | "typeVersion": 3.4, 332 | "position": [ 333 | 2500, 334 | 320 335 | ], 336 | "id": "91b7e285-5509-4287-9d28-5b23f528974b", 337 | "name": "text voice" 338 | }, 339 | { 340 | "parameters": { 341 | "assignments": { 342 | "assignments": [ 343 | { 344 | "id": "902016f5-1274-4d55-9b69-4f88b8df381e", 345 | "name": "text", 346 | "value": "={{ $('Transcribe a recording audio').item.json.text }}", 347 | "type": "string" 348 | }, 349 | { 350 | "id": "d474666c-c1d3-44f6-b76e-587bd33556b8", 351 | "name": "chat_id", 352 | "value": "={{ $('Webhook').item.json.body.message.chat.id }}", 353 | "type": "string" 354 | }, 355 | { 356 | "id": "376cec58-690b-4036-887a-d8343c756d6c", 357 | "name": "telegram_bot_api_key", 358 | "value": "={{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}", 359 | "type": "string" 360 | } 361 | ] 362 | }, 363 | "options": {} 364 | }, 365 | "type": "n8n-nodes-base.set", 366 | "typeVersion": 3.4, 367 | "position": [ 368 | 2500, 369 | 520 370 | ], 371 | "id": "a9de5c3f-82c9-47cd-bb8f-3ef5437000ad", 372 | "name": "text audio" 373 | }, 374 | { 375 | "parameters": { 376 | "assignments": { 377 | "assignments": [ 378 | { 379 | "id": "902016f5-1274-4d55-9b69-4f88b8df381e", 380 | "name": "text", 381 | "value": "={{ $('Analyze image').item.json.content }}", 382 | "type": "string" 383 | }, 384 | { 385 | "id": "f642f03c-d0c9-42ec-96b2-57bd48f13a5c", 386 | "name": "chat_id", 387 | "value": "={{ $('Webhook').item.json.body.message.chat.id }}", 388 | "type": "string" 389 | }, 390 | { 391 | "id": "8d1aab82-79a7-45bc-8e02-1109326590ae", 392 | "name": "telegram_bot_api_key", 393 | "value": "={{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}", 394 | "type": "string" 395 | } 396 | ] 397 | }, 398 | "options": {} 399 | }, 400 | "type": "n8n-nodes-base.set", 401 | "typeVersion": 3.4, 402 | "position": [ 403 | 2500, 404 | 720 405 | ], 406 | "id": "0d94e097-142a-447e-8c48-5369ef959d73", 407 | "name": "text photo" 408 | }, 409 | { 410 | "parameters": { 411 | "assignments": { 412 | "assignments": [ 413 | { 414 | "id": "902016f5-1274-4d55-9b69-4f88b8df381e", 415 | "name": "text", 416 | "value": "={{ $('Webhook').item.json.body.message.text }}", 417 | "type": "string" 418 | }, 419 | { 420 | "id": "c9fda88d-8884-434d-bcf8-97b4b43e01f8", 421 | "name": "chat_id", 422 | "value": "={{ $('Webhook').item.json.body.message.chat.id }}", 423 | "type": "string" 424 | }, 425 | { 426 | "id": "b547f855-056e-4d77-99d7-9f334dd3ff11", 427 | "name": "telegram_bot_api_key", 428 | "value": "={{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}", 429 | "type": "string" 430 | } 431 | ] 432 | }, 433 | "options": {} 434 | }, 435 | "type": "n8n-nodes-base.set", 436 | "typeVersion": 3.4, 437 | "position": [ 438 | 2500, 439 | 120 440 | ], 441 | "id": "8b6c0ec4-67a9-4d21-b0cf-5dda8df4697c", 442 | "name": "text text" 443 | }, 444 | { 445 | "parameters": { 446 | "numberInputs": 4 447 | }, 448 | "type": "n8n-nodes-base.merge", 449 | "typeVersion": 3.2, 450 | "position": [ 451 | 2720, 452 | 500 453 | ], 454 | "id": "d184af4a-5902-472f-80db-e77656fe0d04", 455 | "name": "text" 456 | }, 457 | { 458 | "parameters": { 459 | "method": "POST", 460 | "url": "=https://api.telegram.org/bot{{ $json.telegram_bot_api_key }}/sendChatAction", 461 | "sendBody": true, 462 | "bodyParameters": { 463 | "parameters": [ 464 | { 465 | "name": "chat_id", 466 | "value": "={{ $('Webhook').item.json.body.message.from.id }}" 467 | }, 468 | { 469 | "name": "action", 470 | "value": "typing" 471 | } 472 | ] 473 | }, 474 | "options": {} 475 | }, 476 | "type": "n8n-nodes-base.httpRequest", 477 | "typeVersion": 4.2, 478 | "position": [ 479 | 900, 480 | 420 481 | ], 482 | "id": "46ad03bf-ae17-4250-b6a7-348abad02185", 483 | "name": "Telegram typing" 484 | }, 485 | { 486 | "parameters": { 487 | "method": "POST", 488 | "url": "= https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/sendMessage", 489 | "sendBody": true, 490 | "bodyParameters": { 491 | "parameters": [ 492 | { 493 | "name": "chat_id", 494 | "value": "={{ $('Webhook').item.json.body.message.from.id }}" 495 | }, 496 | { 497 | "name": "text", 498 | "value": "Секунду, прослушаю.." 499 | } 500 | ] 501 | }, 502 | "options": {} 503 | }, 504 | "type": "n8n-nodes-base.httpRequest", 505 | "typeVersion": 4.2, 506 | "position": [ 507 | 1400, 508 | 320 509 | ], 510 | "id": "41a03453-f2d5-4bfc-a6f4-94b06b823ea5", 511 | "name": "Just a moment voice" 512 | }, 513 | { 514 | "parameters": { 515 | "method": "POST", 516 | "url": "= https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/sendMessage", 517 | "sendBody": true, 518 | "bodyParameters": { 519 | "parameters": [ 520 | { 521 | "name": "chat_id", 522 | "value": "={{ $('Webhook').item.json.body.message.from.id }}" 523 | }, 524 | { 525 | "name": "text", 526 | "value": "Секунду, прослушаю.." 527 | } 528 | ] 529 | }, 530 | "options": {} 531 | }, 532 | "type": "n8n-nodes-base.httpRequest", 533 | "typeVersion": 4.2, 534 | "position": [ 535 | 1400, 536 | 520 537 | ], 538 | "id": "1c66dca1-1461-4769-9ebc-ebef32d77a7a", 539 | "name": "Just a moment audio" 540 | }, 541 | { 542 | "parameters": { 543 | "method": "POST", 544 | "url": "= https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/sendMessage", 545 | "sendBody": true, 546 | "bodyParameters": { 547 | "parameters": [ 548 | { 549 | "name": "chat_id", 550 | "value": "={{ $('Webhook').item.json.body.message.from.id }}" 551 | }, 552 | { 553 | "name": "text", 554 | "value": "Секунду, посмотрю.." 555 | } 556 | ] 557 | }, 558 | "options": {} 559 | }, 560 | "type": "n8n-nodes-base.httpRequest", 561 | "typeVersion": 4.2, 562 | "position": [ 563 | 1620, 564 | 720 565 | ], 566 | "id": "14f56dce-72fc-434a-b57b-03a89de56154", 567 | "name": "Just a moment photo" 568 | }, 569 | { 570 | "parameters": { 571 | "method": "POST", 572 | "url": "= https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/deleteMessage", 573 | "sendBody": true, 574 | "bodyParameters": { 575 | "parameters": [ 576 | { 577 | "name": "chat_id", 578 | "value": "={{ $('Webhook').item.json.body.message.from.id }}" 579 | }, 580 | { 581 | "name": "message_id", 582 | "value": "={{ $('Just a moment voice').item.json.result.message_id }}" 583 | } 584 | ] 585 | }, 586 | "options": {} 587 | }, 588 | "type": "n8n-nodes-base.httpRequest", 589 | "typeVersion": 4.2, 590 | "position": [ 591 | 2280, 592 | 320 593 | ], 594 | "id": "1c035b13-11d2-4308-aded-5f10d2f52286", 595 | "name": "Delete just a moment voice" 596 | }, 597 | { 598 | "parameters": { 599 | "method": "POST", 600 | "url": "=https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/deleteMessage", 601 | "sendBody": true, 602 | "bodyParameters": { 603 | "parameters": [ 604 | { 605 | "name": "chat_id", 606 | "value": "={{ $('Webhook').item.json.body.message.from.id }}" 607 | }, 608 | { 609 | "name": "message_id", 610 | "value": "={{ $('Just a moment audio').item.json.result.message_id }}" 611 | } 612 | ] 613 | }, 614 | "options": {} 615 | }, 616 | "type": "n8n-nodes-base.httpRequest", 617 | "typeVersion": 4.2, 618 | "position": [ 619 | 2280, 620 | 520 621 | ], 622 | "id": "df56f83c-da21-4f21-b6ce-51b49a99d6fa", 623 | "name": "Delete just a moment audio" 624 | }, 625 | { 626 | "parameters": { 627 | "method": "POST", 628 | "url": "=https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/deleteMessage", 629 | "sendBody": true, 630 | "bodyParameters": { 631 | "parameters": [ 632 | { 633 | "name": "chat_id", 634 | "value": "={{ $('Webhook').item.json.body.message.from.id }}" 635 | }, 636 | { 637 | "name": "message_id", 638 | "value": "={{ $('Just a moment photo').item.json.result.message_id }}" 639 | } 640 | ] 641 | }, 642 | "options": {} 643 | }, 644 | "type": "n8n-nodes-base.httpRequest", 645 | "typeVersion": 4.2, 646 | "position": [ 647 | 2280, 648 | 720 649 | ], 650 | "id": "492dccc5-ec93-44a8-aa61-75491fad9e9e", 651 | "name": "Delete just a moment photo" 652 | }, 653 | { 654 | "parameters": { 655 | "promptType": "define", 656 | "text": "={{ $json.text }}", 657 | "options": { 658 | "systemMessage": "Отвечай, как милая девушка. С заботой и вниманием." 659 | } 660 | }, 661 | "type": "@n8n/n8n-nodes-langchain.agent", 662 | "typeVersion": 2, 663 | "position": [ 664 | 2940, 665 | 520 666 | ], 667 | "id": "cdc871ac-c66f-4c1a-b82a-ba1203ff3017", 668 | "name": "AI Agent" 669 | }, 670 | { 671 | "parameters": { 672 | "sessionIdType": "customKey", 673 | "sessionKey": "={{ $json.chat_id }}", 674 | "contextWindowLength": 50 675 | }, 676 | "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", 677 | "typeVersion": 1.3, 678 | "position": [ 679 | 3100, 680 | 740 681 | ], 682 | "id": "13efa7fc-5db8-4043-97fc-05dfbee300ef", 683 | "name": "Simple Memory" 684 | }, 685 | { 686 | "parameters": { 687 | "method": "POST", 688 | "url": "=https://api.telegram.org/bot{{ $('text').item.json.telegram_bot_api_key }}/sendMessage", 689 | "sendBody": true, 690 | "bodyParameters": { 691 | "parameters": [ 692 | { 693 | "name": "chat_id", 694 | "value": "={{ $('text').item.json.chat_id }}" 695 | }, 696 | { 697 | "name": "text", 698 | "value": "={{ $json.output }}" 699 | } 700 | ] 701 | }, 702 | "options": {} 703 | }, 704 | "type": "n8n-nodes-base.httpRequest", 705 | "typeVersion": 4.2, 706 | "position": [ 707 | 3320, 708 | 520 709 | ], 710 | "id": "e35f77e7-7ec1-49e9-96a2-b05dea9bf72d", 711 | "name": "Send Message" 712 | }, 713 | { 714 | "parameters": { 715 | "assignments": { 716 | "assignments": [ 717 | { 718 | "id": "2f8cfb58-6572-4380-b4f8-4c5e8ee2c75d", 719 | "name": "telegram_bot_api_key", 720 | "value": "API KEY ЗАМЕНИТЬ", 721 | "type": "string" 722 | } 723 | ] 724 | }, 725 | "options": {} 726 | }, 727 | "type": "n8n-nodes-base.set", 728 | "typeVersion": 3.4, 729 | "position": [ 730 | 380, 731 | 280 732 | ], 733 | "id": "c2ac60db-5997-43b0-9ea6-e4f7c7d88a65", 734 | "name": "API KEY ЗАМЕНИТЬ" 735 | }, 736 | { 737 | "parameters": { 738 | "content": "", 739 | "height": 200, 740 | "width": 200, 741 | "color": 3 742 | }, 743 | "type": "n8n-nodes-base.stickyNote", 744 | "typeVersion": 1, 745 | "position": [ 746 | 320, 747 | 240 748 | ], 749 | "id": "ba6fff59-c010-4cd9-a0fa-2b49dfc8d405", 750 | "name": "Sticky Note3" 751 | }, 752 | { 753 | "parameters": { 754 | "content": "# Инструкция по Telegram боту с AI\n\nАвтор: [Nikita Shorin](https://www.youtube.com/@shorin_nikita)\n\n## Описание\nВоркфлоу создает умного Telegram бота, который обрабатывает текст, голос, аудио и изображения с помощью OpenAI.\n\n## Настройка:\n\n1. 🔴 **API ключ Telegram бота**:\n - Создайте бота в [@BotFather](https://t.me/botfather)\n - В узле \"API KEY ЗАМЕНИТЬ\" замените на реальный токен \n\n2. 🟢 **OpenAI credentials**:\n - Создайте API-ключ на [платформе OpenAI](https://platform.openai.com/api-keys)\n - Настройте учетные данные OpenAI в соответствующих узлах\n\n3. 🟡 **Webhook**:\n - Внутри ноды укажите path. Например, **telegram**\n - Скачайте шаблон: [**http handle**](https://github.com/shorin-nikita/PrideAIBot/blob/main/n8n/HTTP%20handle.json) и выполните привязку вебхука\n\n4. 🔵 **AI Agent**:\n - Измените **System prompt** под ваши задачи\n\n## Функции:\n- ✅ Ответы на текст\n- ✅ Транскрибация голоса/аудио\n- ✅ Анализ изображений\n- ✅ Память контекста\n- ✅ Статус \"печатает...\"\n\nБот работает на русском языке и показывает временные уведомления при обработке файлов.", 755 | "height": 900, 756 | "width": 880, 757 | "color": 6 758 | }, 759 | "type": "n8n-nodes-base.stickyNote", 760 | "typeVersion": 1, 761 | "position": [ 762 | -840, 763 | -20 764 | ], 765 | "id": "51ae5e30-a669-4347-b85b-043339f4c9db", 766 | "name": "Sticky Note4" 767 | }, 768 | { 769 | "parameters": { 770 | "content": "", 771 | "height": 580, 772 | "width": 180, 773 | "color": 4 774 | }, 775 | "type": "n8n-nodes-base.stickyNote", 776 | "typeVersion": 1, 777 | "position": [ 778 | 2020, 779 | 300 780 | ], 781 | "id": "c46b57d3-2cda-44df-9867-57d0a8b9c6c5", 782 | "name": "Sticky Note5" 783 | }, 784 | { 785 | "parameters": { 786 | "content": "", 787 | "height": 140, 788 | "width": 150, 789 | "color": 4 790 | }, 791 | "type": "n8n-nodes-base.stickyNote", 792 | "typeVersion": 1, 793 | "position": [ 794 | 2920, 795 | 720 796 | ], 797 | "id": "6916b8ad-b6bb-4881-9350-0df3065e62cd", 798 | "name": "Sticky Note6" 799 | }, 800 | { 801 | "parameters": { 802 | "model": { 803 | "__rl": true, 804 | "mode": "list", 805 | "value": "gpt-4.1-mini" 806 | }, 807 | "options": {} 808 | }, 809 | "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", 810 | "typeVersion": 1.2, 811 | "position": [ 812 | 2960, 813 | 740 814 | ], 815 | "id": "861c209b-b61a-44c5-938e-d4b6c9140633", 816 | "name": "GPT 4.1 mini", 817 | "credentials": { 818 | "openAiApi": { 819 | "id": "TrtfpYNJaLbwIzTC", 820 | "name": "OpenAi account VIDEO" 821 | } 822 | } 823 | }, 824 | { 825 | "parameters": { 826 | "content": "", 827 | "height": 200, 828 | "width": 180 829 | }, 830 | "type": "n8n-nodes-base.stickyNote", 831 | "typeVersion": 1, 832 | "position": [ 833 | 120, 834 | 240 835 | ], 836 | "id": "ccae8947-5813-4c71-834d-5f9fec562a75", 837 | "name": "Sticky Note" 838 | }, 839 | { 840 | "parameters": { 841 | "content": "", 842 | "width": 320, 843 | "color": 5 844 | }, 845 | "type": "n8n-nodes-base.stickyNote", 846 | "typeVersion": 1, 847 | "position": [ 848 | 2920, 849 | 500 850 | ], 851 | "id": "0af76598-2a2a-4134-87d6-79473bf99793", 852 | "name": "Sticky Note2" 853 | }, 854 | { 855 | "parameters": { 856 | "content": "", 857 | "height": 900, 858 | "width": 3440, 859 | "color": 7 860 | }, 861 | "type": "n8n-nodes-base.stickyNote", 862 | "typeVersion": 1, 863 | "position": [ 864 | 60, 865 | -20 866 | ], 867 | "id": "75dfba53-60bc-4b76-9463-ef4354d9b0a3", 868 | "name": "Sticky Note1" 869 | }, 870 | { 871 | "parameters": { 872 | "mode": "delete", 873 | "deleteMode": "all" 874 | }, 875 | "type": "@n8n/n8n-nodes-langchain.memoryManager", 876 | "typeVersion": 1.1, 877 | "position": [ 878 | 820, 879 | 20 880 | ], 881 | "id": "80702b1d-f188-4b7b-8a0d-c8f6611735ab", 882 | "name": "Chat Memory Manager" 883 | }, 884 | { 885 | "parameters": { 886 | "method": "POST", 887 | "url": "=https://api.telegram.org/bot{{ $('API KEY ЗАМЕНИТЬ').item.json.telegram_bot_api_key }}/sendMessage", 888 | "sendBody": true, 889 | "bodyParameters": { 890 | "parameters": [ 891 | { 892 | "name": "chat_id", 893 | "value": "={{ $('Webhook').item.json.body.message.chat.id }}" 894 | }, 895 | { 896 | "name": "text", 897 | "value": "НОВЫЙ ЧАТ" 898 | } 899 | ] 900 | }, 901 | "options": {} 902 | }, 903 | "type": "n8n-nodes-base.httpRequest", 904 | "typeVersion": 4.2, 905 | "position": [ 906 | 1180, 907 | 120 908 | ], 909 | "id": "9a3182b0-c54b-4b78-88b2-d803da0823e0", 910 | "name": "Send Message NEW CHAT" 911 | }, 912 | { 913 | "parameters": { 914 | "conditions": { 915 | "options": { 916 | "caseSensitive": true, 917 | "leftValue": "", 918 | "typeValidation": "strict", 919 | "version": 2 920 | }, 921 | "conditions": [ 922 | { 923 | "id": "824ed408-3e32-4af8-90ca-b11b924ad5f6", 924 | "leftValue": "={{ $('Webhook').item.json.body.message.text }}", 925 | "rightValue": "/start", 926 | "operator": { 927 | "type": "string", 928 | "operation": "equals", 929 | "name": "filter.operator.equals" 930 | } 931 | } 932 | ], 933 | "combinator": "and" 934 | }, 935 | "options": {} 936 | }, 937 | "type": "n8n-nodes-base.if", 938 | "typeVersion": 2.2, 939 | "position": [ 940 | 600, 941 | 280 942 | ], 943 | "id": "23b4fcee-0923-457d-b3c9-c343dd4787a5", 944 | "name": "Start command?" 945 | }, 946 | { 947 | "parameters": { 948 | "sessionIdType": "customKey", 949 | "sessionKey": "={{ $('Webhook').item.json.body.message.chat.id }}", 950 | "contextWindowLength": 50 951 | }, 952 | "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", 953 | "typeVersion": 1.3, 954 | "position": [ 955 | 900, 956 | 240 957 | ], 958 | "id": "4c3c6cf7-0d0a-466a-b153-220a22b00d04", 959 | "name": "Simple Memory1" 960 | } 961 | ], 962 | "connections": { 963 | "Switch": { 964 | "main": [ 965 | [ 966 | { 967 | "node": "text text", 968 | "type": "main", 969 | "index": 0 970 | } 971 | ], 972 | [ 973 | { 974 | "node": "Just a moment voice", 975 | "type": "main", 976 | "index": 0 977 | } 978 | ], 979 | [ 980 | { 981 | "node": "Just a moment audio", 982 | "type": "main", 983 | "index": 0 984 | } 985 | ], 986 | [ 987 | { 988 | "node": "Just a moment photo", 989 | "type": "main", 990 | "index": 0 991 | } 992 | ] 993 | ] 994 | }, 995 | "Webhook": { 996 | "main": [ 997 | [ 998 | { 999 | "node": "API KEY ЗАМЕНИТЬ", 1000 | "type": "main", 1001 | "index": 0 1002 | } 1003 | ] 1004 | ] 1005 | }, 1006 | "Analyze image": { 1007 | "main": [ 1008 | [ 1009 | { 1010 | "node": "Delete just a moment photo", 1011 | "type": "main", 1012 | "index": 0 1013 | } 1014 | ] 1015 | ] 1016 | }, 1017 | "Get File Info Image": { 1018 | "main": [ 1019 | [ 1020 | { 1021 | "node": "Analyze image", 1022 | "type": "main", 1023 | "index": 0 1024 | } 1025 | ] 1026 | ] 1027 | }, 1028 | "Get File Info Voice": { 1029 | "main": [ 1030 | [ 1031 | { 1032 | "node": "Download Voice File", 1033 | "type": "main", 1034 | "index": 0 1035 | } 1036 | ] 1037 | ] 1038 | }, 1039 | "Download Voice File": { 1040 | "main": [ 1041 | [ 1042 | { 1043 | "node": "Transcribe a recording voice", 1044 | "type": "main", 1045 | "index": 0 1046 | } 1047 | ] 1048 | ] 1049 | }, 1050 | "Get File Info Audio": { 1051 | "main": [ 1052 | [ 1053 | { 1054 | "node": "Download Audio File", 1055 | "type": "main", 1056 | "index": 0 1057 | } 1058 | ] 1059 | ] 1060 | }, 1061 | "Download Audio File": { 1062 | "main": [ 1063 | [ 1064 | { 1065 | "node": "Transcribe a recording audio", 1066 | "type": "main", 1067 | "index": 0 1068 | } 1069 | ] 1070 | ] 1071 | }, 1072 | "Transcribe a recording voice": { 1073 | "main": [ 1074 | [ 1075 | { 1076 | "node": "Delete just a moment voice", 1077 | "type": "main", 1078 | "index": 0 1079 | } 1080 | ] 1081 | ] 1082 | }, 1083 | "Transcribe a recording audio": { 1084 | "main": [ 1085 | [ 1086 | { 1087 | "node": "Delete just a moment audio", 1088 | "type": "main", 1089 | "index": 0 1090 | } 1091 | ] 1092 | ] 1093 | }, 1094 | "text voice": { 1095 | "main": [ 1096 | [ 1097 | { 1098 | "node": "text", 1099 | "type": "main", 1100 | "index": 1 1101 | } 1102 | ] 1103 | ] 1104 | }, 1105 | "text audio": { 1106 | "main": [ 1107 | [ 1108 | { 1109 | "node": "text", 1110 | "type": "main", 1111 | "index": 2 1112 | } 1113 | ] 1114 | ] 1115 | }, 1116 | "text photo": { 1117 | "main": [ 1118 | [ 1119 | { 1120 | "node": "text", 1121 | "type": "main", 1122 | "index": 3 1123 | } 1124 | ] 1125 | ] 1126 | }, 1127 | "text text": { 1128 | "main": [ 1129 | [ 1130 | { 1131 | "node": "text", 1132 | "type": "main", 1133 | "index": 0 1134 | } 1135 | ] 1136 | ] 1137 | }, 1138 | "text": { 1139 | "main": [ 1140 | [ 1141 | { 1142 | "node": "AI Agent", 1143 | "type": "main", 1144 | "index": 0 1145 | } 1146 | ] 1147 | ] 1148 | }, 1149 | "Telegram typing": { 1150 | "main": [ 1151 | [ 1152 | { 1153 | "node": "Switch", 1154 | "type": "main", 1155 | "index": 0 1156 | } 1157 | ] 1158 | ] 1159 | }, 1160 | "Just a moment voice": { 1161 | "main": [ 1162 | [ 1163 | { 1164 | "node": "Get File Info Voice", 1165 | "type": "main", 1166 | "index": 0 1167 | } 1168 | ] 1169 | ] 1170 | }, 1171 | "Just a moment audio": { 1172 | "main": [ 1173 | [ 1174 | { 1175 | "node": "Get File Info Audio", 1176 | "type": "main", 1177 | "index": 0 1178 | } 1179 | ] 1180 | ] 1181 | }, 1182 | "Just a moment photo": { 1183 | "main": [ 1184 | [ 1185 | { 1186 | "node": "Get File Info Image", 1187 | "type": "main", 1188 | "index": 0 1189 | } 1190 | ] 1191 | ] 1192 | }, 1193 | "Delete just a moment voice": { 1194 | "main": [ 1195 | [ 1196 | { 1197 | "node": "text voice", 1198 | "type": "main", 1199 | "index": 0 1200 | } 1201 | ] 1202 | ] 1203 | }, 1204 | "Delete just a moment audio": { 1205 | "main": [ 1206 | [ 1207 | { 1208 | "node": "text audio", 1209 | "type": "main", 1210 | "index": 0 1211 | } 1212 | ] 1213 | ] 1214 | }, 1215 | "Delete just a moment photo": { 1216 | "main": [ 1217 | [ 1218 | { 1219 | "node": "text photo", 1220 | "type": "main", 1221 | "index": 0 1222 | } 1223 | ] 1224 | ] 1225 | }, 1226 | "AI Agent": { 1227 | "main": [ 1228 | [ 1229 | { 1230 | "node": "Send Message", 1231 | "type": "main", 1232 | "index": 0 1233 | } 1234 | ] 1235 | ] 1236 | }, 1237 | "Simple Memory": { 1238 | "ai_memory": [ 1239 | [ 1240 | { 1241 | "node": "AI Agent", 1242 | "type": "ai_memory", 1243 | "index": 0 1244 | } 1245 | ] 1246 | ] 1247 | }, 1248 | "API KEY ЗАМЕНИТЬ": { 1249 | "main": [ 1250 | [ 1251 | { 1252 | "node": "Start command?", 1253 | "type": "main", 1254 | "index": 0 1255 | } 1256 | ] 1257 | ] 1258 | }, 1259 | "GPT 4.1 mini": { 1260 | "ai_languageModel": [ 1261 | [ 1262 | { 1263 | "node": "AI Agent", 1264 | "type": "ai_languageModel", 1265 | "index": 0 1266 | } 1267 | ] 1268 | ] 1269 | }, 1270 | "Chat Memory Manager": { 1271 | "main": [ 1272 | [ 1273 | { 1274 | "node": "Send Message NEW CHAT", 1275 | "type": "main", 1276 | "index": 0 1277 | } 1278 | ] 1279 | ] 1280 | }, 1281 | "Start command?": { 1282 | "main": [ 1283 | [ 1284 | { 1285 | "node": "Chat Memory Manager", 1286 | "type": "main", 1287 | "index": 0 1288 | } 1289 | ], 1290 | [ 1291 | { 1292 | "node": "Telegram typing", 1293 | "type": "main", 1294 | "index": 0 1295 | } 1296 | ] 1297 | ] 1298 | }, 1299 | "Simple Memory1": { 1300 | "ai_memory": [ 1301 | [ 1302 | { 1303 | "node": "Chat Memory Manager", 1304 | "type": "ai_memory", 1305 | "index": 0 1306 | } 1307 | ] 1308 | ] 1309 | } 1310 | }, 1311 | "pinData": { 1312 | "Webhook": [ 1313 | { 1314 | "headers": { 1315 | "host": "api.ai1618.ru", 1316 | "content-length": "504", 1317 | "accept-encoding": "gzip, deflate", 1318 | "content-type": "application/json", 1319 | "x-forwarded-for": "91.108.5.33", 1320 | "x-forwarded-host": "api.ai1618.ru", 1321 | "x-forwarded-port": "443", 1322 | "x-forwarded-proto": "https", 1323 | "x-forwarded-server": "a30807168bae", 1324 | "x-real-ip": "91.108.5.33" 1325 | }, 1326 | "params": {}, 1327 | "query": {}, 1328 | "body": { 1329 | "update_id": 248102418, 1330 | "message": { 1331 | "message_id": 13, 1332 | "from": { 1333 | "id": 6025341317, 1334 | "is_bot": false, 1335 | "first_name": "THE N", 1336 | "username": "THE1N618", 1337 | "language_code": "ru" 1338 | }, 1339 | "chat": { 1340 | "id": -4684392983, 1341 | "title": "VIDEO group", 1342 | "type": "group", 1343 | "all_members_are_administrators": true, 1344 | "accepted_gift_types": { 1345 | "unlimited_gifts": false, 1346 | "limited_gifts": false, 1347 | "unique_gifts": false, 1348 | "premium_subscription": false 1349 | } 1350 | }, 1351 | "date": 1753290247, 1352 | "text": "/bot привет", 1353 | "entities": [ 1354 | { 1355 | "offset": 0, 1356 | "length": 4, 1357 | "type": "bot_command" 1358 | } 1359 | ] 1360 | } 1361 | }, 1362 | "webhookUrl": "https://api.ai1618.ru/webhook/telegam", 1363 | "executionMode": "production" 1364 | } 1365 | ] 1366 | }, 1367 | "meta": { 1368 | "instanceId": "89117b89e6ee2e2d36a3f934f1a63e32c1c204c62e00bb625da8c39baf77c2c7" 1369 | } 1370 | } 1371 | -------------------------------------------------------------------------------- /make/blueprint-openai-assistant-wazzup.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AI ASSISTANT by @shorin_nikita", 3 | "flow": [ 4 | { 5 | "id": 1, 6 | "module": "gateway:CustomWebHook", 7 | "version": 1, 8 | "parameters": { 9 | "hook": 1106203, 10 | "maxResults": 1 11 | }, 12 | "mapper": {}, 13 | "metadata": { 14 | "designer": { 15 | "x": 0, 16 | "y": 150 17 | }, 18 | "restore": { 19 | "parameters": { 20 | "hook": { 21 | "data": { 22 | "editable": "true" 23 | }, 24 | "label": "aibot.school wazzup+make v10.22" 25 | } 26 | } 27 | }, 28 | "parameters": [ 29 | { 30 | "name": "hook", 31 | "type": "hook:gateway-webhook", 32 | "label": "Webhook", 33 | "required": true 34 | }, 35 | { 36 | "name": "maxResults", 37 | "type": "number", 38 | "label": "Maximum number of results" 39 | } 40 | ], 41 | "interface": [ 42 | { 43 | "name": "test", 44 | "type": "boolean" 45 | } 46 | ] 47 | } 48 | }, 49 | { 50 | "id": 2, 51 | "module": "datastore:ExistRecord", 52 | "version": 1, 53 | "parameters": { 54 | "datastore": 32685 55 | }, 56 | "filter": { 57 | "name": "PrideAIBot", 58 | "conditions": [ 59 | [ 60 | { 61 | "a": "{{1.messages[].status}}", 62 | "b": "inbound", 63 | "o": "text:equal" 64 | }, 65 | { 66 | "a": "{{1.messages[].text}}", 67 | "o": "exist" 68 | } 69 | ] 70 | ] 71 | }, 72 | "mapper": { 73 | "key": "{{1.messages[].chatId}}" 74 | }, 75 | "metadata": { 76 | "designer": { 77 | "x": 300, 78 | "y": 150 79 | }, 80 | "restore": { 81 | "parameters": { 82 | "datastore": { 83 | "label": "thread_id" 84 | } 85 | } 86 | }, 87 | "parameters": [ 88 | { 89 | "name": "datastore", 90 | "type": "datastore", 91 | "label": "Data store", 92 | "required": true 93 | } 94 | ], 95 | "expect": [ 96 | { 97 | "name": "key", 98 | "type": "text", 99 | "label": "Key", 100 | "required": true 101 | } 102 | ] 103 | } 104 | }, 105 | { 106 | "id": 3, 107 | "module": "builtin:BasicRouter", 108 | "version": 1, 109 | "mapper": null, 110 | "metadata": { 111 | "designer": { 112 | "x": 600, 113 | "y": 150 114 | } 115 | }, 116 | "routes": [ 117 | { 118 | "flow": [ 119 | { 120 | "id": 6, 121 | "module": "openai-gpt-3:messageAssistantAdvanced", 122 | "version": 1, 123 | "parameters": { 124 | "__IMTCONN__": 1277196 125 | }, 126 | "filter": { 127 | "name": "Новый", 128 | "conditions": [ 129 | [ 130 | { 131 | "a": "{{2.exist}}", 132 | "b": "false", 133 | "o": "text:equal" 134 | } 135 | ] 136 | ] 137 | }, 138 | "mapper": { 139 | "role": "user", 140 | "message": "{{1.messages[].text}}", 141 | "assistantId": "asst_44TqBcHSoBJErZvjKBSBvQoB" 142 | }, 143 | "metadata": { 144 | "designer": { 145 | "x": 900, 146 | "y": 0 147 | }, 148 | "restore": { 149 | "expect": { 150 | "role": { 151 | "label": "User" 152 | }, 153 | "model": { 154 | "mode": "chose" 155 | }, 156 | "tools": { 157 | "mode": "chose" 158 | }, 159 | "image_urls": { 160 | "mode": "chose" 161 | }, 162 | "assistantId": { 163 | "mode": "chose", 164 | "label": "tester (gpt-4o)", 165 | "nested": [] 166 | }, 167 | "image_files": { 168 | "mode": "chose" 169 | }, 170 | "tool_choice": { 171 | "mode": "chose", 172 | "label": "Empty" 173 | }, 174 | "response_format": { 175 | "mode": "chose", 176 | "label": "Empty" 177 | }, 178 | "truncation_strategy": { 179 | "mode": "chose", 180 | "label": "Empty" 181 | }, 182 | "file_search_resources": { 183 | "mode": "chose" 184 | }, 185 | "code_interpreter_resources": { 186 | "mode": "chose" 187 | } 188 | }, 189 | "parameters": { 190 | "__IMTCONN__": { 191 | "data": { 192 | "scoped": "true", 193 | "connection": "openai-gpt-3" 194 | }, 195 | "label": "My OpenAI connection" 196 | } 197 | } 198 | }, 199 | "parameters": [ 200 | { 201 | "name": "__IMTCONN__", 202 | "type": "account:openai-gpt-3", 203 | "label": "Connection", 204 | "required": true 205 | } 206 | ], 207 | "expect": [ 208 | { 209 | "name": "assistantId", 210 | "type": "select", 211 | "label": "Assistant", 212 | "required": true 213 | }, 214 | { 215 | "name": "role", 216 | "type": "select", 217 | "label": "Role", 218 | "required": true, 219 | "validate": { 220 | "enum": [ 221 | "user", 222 | "assistant" 223 | ] 224 | } 225 | }, 226 | { 227 | "name": "threadId", 228 | "type": "text", 229 | "label": "Thread ID" 230 | }, 231 | { 232 | "name": "model", 233 | "type": "select", 234 | "label": "Model" 235 | }, 236 | { 237 | "name": "tools", 238 | "type": "select", 239 | "label": "Tools", 240 | "multiple": true, 241 | "validate": { 242 | "enum": [ 243 | "file_search", 244 | "code_interpreter" 245 | ] 246 | } 247 | }, 248 | { 249 | "name": "file_search_resources", 250 | "type": "select", 251 | "label": "File Search Resources" 252 | }, 253 | { 254 | "name": "code_interpreter_resources", 255 | "type": "select", 256 | "label": "Code Interpreter Resources", 257 | "multiple": true, 258 | "validate": { 259 | "maxItems": 20 260 | } 261 | }, 262 | { 263 | "name": "tool_choice", 264 | "type": "select", 265 | "label": "Tool Choice", 266 | "validate": { 267 | "enum": [ 268 | "none", 269 | "auto", 270 | "required", 271 | "file_search", 272 | "code_interpreter", 273 | "function" 274 | ] 275 | } 276 | }, 277 | { 278 | "name": "instructions", 279 | "type": "text", 280 | "label": "Instructions" 281 | }, 282 | { 283 | "name": "max_prompt_tokens", 284 | "type": "uinteger", 285 | "label": "Max Prompt Tokens" 286 | }, 287 | { 288 | "name": "max_completion_tokens", 289 | "type": "uinteger", 290 | "label": "Max Completion Tokens" 291 | }, 292 | { 293 | "name": "temperature", 294 | "type": "number", 295 | "label": "Temperature", 296 | "validate": { 297 | "max": 2, 298 | "min": 0 299 | } 300 | }, 301 | { 302 | "name": "top_p", 303 | "type": "number", 304 | "label": "Top P", 305 | "validate": { 306 | "max": 1, 307 | "min": 0 308 | } 309 | }, 310 | { 311 | "name": "response_format", 312 | "type": "select", 313 | "label": "Response Format", 314 | "validate": { 315 | "enum": [ 316 | "auto", 317 | "json_object", 318 | "text" 319 | ] 320 | } 321 | }, 322 | { 323 | "name": "truncation_strategy", 324 | "type": "select", 325 | "label": "Truncation Strategy", 326 | "validate": { 327 | "enum": [ 328 | "auto", 329 | "last_messages" 330 | ] 331 | } 332 | }, 333 | { 334 | "name": "message", 335 | "type": "text", 336 | "label": "Message", 337 | "required": true 338 | }, 339 | { 340 | "name": "image_files", 341 | "type": "select", 342 | "label": "Image Files", 343 | "multiple": true 344 | }, 345 | { 346 | "name": "image_urls", 347 | "spec": { 348 | "name": "value", 349 | "type": "url", 350 | "label": "Image URL", 351 | "required": true 352 | }, 353 | "type": "array", 354 | "label": "Image URLs" 355 | } 356 | ] 357 | } 358 | }, 359 | { 360 | "id": 4, 361 | "module": "datastore:AddRecord", 362 | "version": 1, 363 | "parameters": { 364 | "datastore": 32685 365 | }, 366 | "mapper": { 367 | "key": "{{1.messages[].chatId}}", 368 | "data": { 369 | "thread_id": "{{6.thread_id}}" 370 | }, 371 | "overwrite": false 372 | }, 373 | "metadata": { 374 | "designer": { 375 | "x": 1200, 376 | "y": 0 377 | }, 378 | "restore": { 379 | "expect": { 380 | "overwrite": { 381 | "mode": "chose" 382 | } 383 | }, 384 | "parameters": { 385 | "datastore": { 386 | "label": "thread_id" 387 | } 388 | } 389 | }, 390 | "parameters": [ 391 | { 392 | "name": "datastore", 393 | "type": "datastore", 394 | "label": "Data store", 395 | "required": true 396 | } 397 | ], 398 | "expect": [ 399 | { 400 | "name": "key", 401 | "type": "text", 402 | "label": "Key" 403 | }, 404 | { 405 | "name": "overwrite", 406 | "type": "boolean", 407 | "label": "Overwrite an existing record", 408 | "required": true 409 | }, 410 | { 411 | "name": "data", 412 | "spec": [ 413 | { 414 | "name": "thread_id", 415 | "type": "text", 416 | "label": null 417 | } 418 | ], 419 | "type": "collection", 420 | "label": "Record" 421 | } 422 | ] 423 | } 424 | }, 425 | { 426 | "id": 10, 427 | "module": "http:ActionSendData", 428 | "version": 3, 429 | "parameters": { 430 | "handleErrors": false, 431 | "useNewZLibDeCompress": true 432 | }, 433 | "mapper": { 434 | "ca": "", 435 | "qs": [], 436 | "url": "https://api.wazzup24.com/v3/message", 437 | "gzip": true, 438 | "method": "post", 439 | "headers": [ 440 | { 441 | "name": "Content-Type", 442 | "value": "application/json" 443 | }, 444 | { 445 | "name": "Authorization", 446 | "value": "Bearer {{var.input.wazzup_api_key}}" 447 | } 448 | ], 449 | "timeout": "", 450 | "useMtls": false, 451 | "authPass": "", 452 | "authUser": "", 453 | "bodyType": "x_www_form_urlencoded", 454 | "formFields": [ 455 | { 456 | "key": "chatId", 457 | "value": "{{1.messages[].chatId}}" 458 | }, 459 | { 460 | "key": "channelId", 461 | "value": "{{1.messages[].channelId}}" 462 | }, 463 | { 464 | "key": "chatType", 465 | "value": "{{1.messages[].chatType}}" 466 | }, 467 | { 468 | "key": "text", 469 | "value": "{{6.result}}" 470 | } 471 | ], 472 | "serializeUrl": false, 473 | "shareCookies": false, 474 | "parseResponse": false, 475 | "followRedirect": true, 476 | "useQuerystring": false, 477 | "followAllRedirects": false, 478 | "rejectUnauthorized": true 479 | }, 480 | "metadata": { 481 | "designer": { 482 | "x": 1500, 483 | "y": 0 484 | }, 485 | "restore": { 486 | "expect": { 487 | "qs": { 488 | "mode": "chose" 489 | }, 490 | "method": { 491 | "mode": "chose", 492 | "label": "POST" 493 | }, 494 | "headers": { 495 | "mode": "chose", 496 | "items": [ 497 | null, 498 | null 499 | ] 500 | }, 501 | "bodyType": { 502 | "label": "Application/x-www-form-urlencoded" 503 | }, 504 | "formFields": { 505 | "mode": "chose", 506 | "items": [ 507 | null, 508 | null, 509 | null, 510 | null 511 | ] 512 | } 513 | } 514 | }, 515 | "parameters": [ 516 | { 517 | "name": "handleErrors", 518 | "type": "boolean", 519 | "label": "Evaluate all states as errors (except for 2xx and 3xx )", 520 | "required": true 521 | }, 522 | { 523 | "name": "useNewZLibDeCompress", 524 | "type": "hidden" 525 | } 526 | ], 527 | "expect": [ 528 | { 529 | "name": "url", 530 | "type": "url", 531 | "label": "URL", 532 | "required": true 533 | }, 534 | { 535 | "name": "serializeUrl", 536 | "type": "boolean", 537 | "label": "Serialize URL", 538 | "required": true 539 | }, 540 | { 541 | "name": "method", 542 | "type": "select", 543 | "label": "Method", 544 | "required": true, 545 | "validate": { 546 | "enum": [ 547 | "get", 548 | "head", 549 | "post", 550 | "put", 551 | "patch", 552 | "delete", 553 | "options" 554 | ] 555 | } 556 | }, 557 | { 558 | "name": "headers", 559 | "spec": [ 560 | { 561 | "name": "name", 562 | "type": "text", 563 | "label": "Name", 564 | "required": true 565 | }, 566 | { 567 | "name": "value", 568 | "type": "text", 569 | "label": "Value" 570 | } 571 | ], 572 | "type": "array", 573 | "label": "Headers" 574 | }, 575 | { 576 | "name": "qs", 577 | "spec": [ 578 | { 579 | "name": "name", 580 | "type": "text", 581 | "label": "Name", 582 | "required": true 583 | }, 584 | { 585 | "name": "value", 586 | "type": "text", 587 | "label": "Value" 588 | } 589 | ], 590 | "type": "array", 591 | "label": "Query String" 592 | }, 593 | { 594 | "name": "bodyType", 595 | "type": "select", 596 | "label": "Body type", 597 | "validate": { 598 | "enum": [ 599 | "raw", 600 | "x_www_form_urlencoded", 601 | "multipart_form_data" 602 | ] 603 | } 604 | }, 605 | { 606 | "name": "parseResponse", 607 | "type": "boolean", 608 | "label": "Parse response", 609 | "required": true 610 | }, 611 | { 612 | "name": "authUser", 613 | "type": "text", 614 | "label": "User name" 615 | }, 616 | { 617 | "name": "authPass", 618 | "type": "password", 619 | "label": "Password" 620 | }, 621 | { 622 | "name": "timeout", 623 | "type": "uinteger", 624 | "label": "Timeout", 625 | "validate": { 626 | "max": 300, 627 | "min": 1 628 | } 629 | }, 630 | { 631 | "name": "shareCookies", 632 | "type": "boolean", 633 | "label": "Share cookies with other HTTP modules", 634 | "required": true 635 | }, 636 | { 637 | "name": "ca", 638 | "type": "cert", 639 | "label": "Self-signed certificate" 640 | }, 641 | { 642 | "name": "rejectUnauthorized", 643 | "type": "boolean", 644 | "label": "Reject connections that are using unverified (self-signed) certificates", 645 | "required": true 646 | }, 647 | { 648 | "name": "followRedirect", 649 | "type": "boolean", 650 | "label": "Follow redirect", 651 | "required": true 652 | }, 653 | { 654 | "name": "useQuerystring", 655 | "type": "boolean", 656 | "label": "Disable serialization of multiple same query string keys as arrays", 657 | "required": true 658 | }, 659 | { 660 | "name": "gzip", 661 | "type": "boolean", 662 | "label": "Request compressed content", 663 | "required": true 664 | }, 665 | { 666 | "name": "useMtls", 667 | "type": "boolean", 668 | "label": "Use Mutual TLS", 669 | "required": true 670 | }, 671 | { 672 | "name": "formFields", 673 | "spec": [ 674 | { 675 | "name": "key", 676 | "type": "text", 677 | "label": "Key", 678 | "required": true 679 | }, 680 | { 681 | "name": "value", 682 | "type": "text", 683 | "label": "Value" 684 | } 685 | ], 686 | "type": "array", 687 | "label": "Fields" 688 | }, 689 | { 690 | "name": "followAllRedirects", 691 | "type": "boolean", 692 | "label": "Follow all redirect", 693 | "required": true 694 | } 695 | ] 696 | } 697 | } 698 | ] 699 | }, 700 | { 701 | "flow": [ 702 | { 703 | "id": 5, 704 | "module": "datastore:GetRecord", 705 | "version": 1, 706 | "parameters": { 707 | "datastore": 32685 708 | }, 709 | "filter": { 710 | "name": "Повторный", 711 | "conditions": [ 712 | [ 713 | { 714 | "a": "{{2.exist}}", 715 | "b": "true", 716 | "o": "text:equal" 717 | } 718 | ] 719 | ] 720 | }, 721 | "mapper": { 722 | "key": "{{1.messages[].chatId}}", 723 | "returnWrapped": false 724 | }, 725 | "metadata": { 726 | "designer": { 727 | "x": 900, 728 | "y": 300 729 | }, 730 | "restore": { 731 | "parameters": { 732 | "datastore": { 733 | "label": "thread_id" 734 | } 735 | } 736 | }, 737 | "parameters": [ 738 | { 739 | "name": "datastore", 740 | "type": "datastore", 741 | "label": "Data store", 742 | "required": true 743 | } 744 | ], 745 | "expect": [ 746 | { 747 | "name": "key", 748 | "type": "text", 749 | "label": "Key", 750 | "required": true 751 | }, 752 | { 753 | "name": "returnWrapped", 754 | "type": "boolean", 755 | "label": "Return Wrapped Output", 756 | "required": true 757 | } 758 | ], 759 | "interface": [ 760 | { 761 | "name": "thread_id", 762 | "type": "text", 763 | "label": null, 764 | "default": null, 765 | "required": false, 766 | "multiline": false 767 | } 768 | ] 769 | } 770 | }, 771 | { 772 | "id": 7, 773 | "module": "openai-gpt-3:messageAssistantAdvanced", 774 | "version": 1, 775 | "parameters": { 776 | "__IMTCONN__": 1277196 777 | }, 778 | "mapper": { 779 | "role": "user", 780 | "message": "{{1.messages[].text}}", 781 | "threadId": "{{5.thread_id}}", 782 | "assistantId": "asst_44TqBcHSoBJErZvjKBSBvQoB" 783 | }, 784 | "metadata": { 785 | "designer": { 786 | "x": 1200, 787 | "y": 300 788 | }, 789 | "restore": { 790 | "expect": { 791 | "role": { 792 | "label": "User" 793 | }, 794 | "model": { 795 | "mode": "chose" 796 | }, 797 | "tools": { 798 | "mode": "chose" 799 | }, 800 | "image_urls": { 801 | "mode": "chose" 802 | }, 803 | "assistantId": { 804 | "mode": "chose", 805 | "label": "tester (gpt-4o)", 806 | "nested": [] 807 | }, 808 | "image_files": { 809 | "mode": "chose" 810 | }, 811 | "tool_choice": { 812 | "mode": "chose", 813 | "label": "Empty" 814 | }, 815 | "response_format": { 816 | "mode": "chose", 817 | "label": "Empty" 818 | }, 819 | "truncation_strategy": { 820 | "mode": "chose", 821 | "label": "Empty" 822 | }, 823 | "file_search_resources": { 824 | "mode": "chose" 825 | }, 826 | "code_interpreter_resources": { 827 | "mode": "chose" 828 | } 829 | }, 830 | "parameters": { 831 | "__IMTCONN__": { 832 | "data": { 833 | "scoped": "true", 834 | "connection": "openai-gpt-3" 835 | }, 836 | "label": "My OpenAI connection" 837 | } 838 | } 839 | }, 840 | "parameters": [ 841 | { 842 | "name": "__IMTCONN__", 843 | "type": "account:openai-gpt-3", 844 | "label": "Connection", 845 | "required": true 846 | } 847 | ], 848 | "expect": [ 849 | { 850 | "name": "assistantId", 851 | "type": "select", 852 | "label": "Assistant", 853 | "required": true 854 | }, 855 | { 856 | "name": "role", 857 | "type": "select", 858 | "label": "Role", 859 | "required": true, 860 | "validate": { 861 | "enum": [ 862 | "user", 863 | "assistant" 864 | ] 865 | } 866 | }, 867 | { 868 | "name": "threadId", 869 | "type": "text", 870 | "label": "Thread ID" 871 | }, 872 | { 873 | "name": "model", 874 | "type": "select", 875 | "label": "Model" 876 | }, 877 | { 878 | "name": "tools", 879 | "type": "select", 880 | "label": "Tools", 881 | "multiple": true, 882 | "validate": { 883 | "enum": [ 884 | "file_search", 885 | "code_interpreter" 886 | ] 887 | } 888 | }, 889 | { 890 | "name": "file_search_resources", 891 | "type": "select", 892 | "label": "File Search Resources" 893 | }, 894 | { 895 | "name": "code_interpreter_resources", 896 | "type": "select", 897 | "label": "Code Interpreter Resources", 898 | "multiple": true, 899 | "validate": { 900 | "maxItems": 20 901 | } 902 | }, 903 | { 904 | "name": "tool_choice", 905 | "type": "select", 906 | "label": "Tool Choice", 907 | "validate": { 908 | "enum": [ 909 | "none", 910 | "auto", 911 | "required", 912 | "file_search", 913 | "code_interpreter", 914 | "function" 915 | ] 916 | } 917 | }, 918 | { 919 | "name": "instructions", 920 | "type": "text", 921 | "label": "Instructions" 922 | }, 923 | { 924 | "name": "max_prompt_tokens", 925 | "type": "uinteger", 926 | "label": "Max Prompt Tokens" 927 | }, 928 | { 929 | "name": "max_completion_tokens", 930 | "type": "uinteger", 931 | "label": "Max Completion Tokens" 932 | }, 933 | { 934 | "name": "temperature", 935 | "type": "number", 936 | "label": "Temperature", 937 | "validate": { 938 | "max": 2, 939 | "min": 0 940 | } 941 | }, 942 | { 943 | "name": "top_p", 944 | "type": "number", 945 | "label": "Top P", 946 | "validate": { 947 | "max": 1, 948 | "min": 0 949 | } 950 | }, 951 | { 952 | "name": "response_format", 953 | "type": "select", 954 | "label": "Response Format", 955 | "validate": { 956 | "enum": [ 957 | "auto", 958 | "json_object", 959 | "text" 960 | ] 961 | } 962 | }, 963 | { 964 | "name": "truncation_strategy", 965 | "type": "select", 966 | "label": "Truncation Strategy", 967 | "validate": { 968 | "enum": [ 969 | "auto", 970 | "last_messages" 971 | ] 972 | } 973 | }, 974 | { 975 | "name": "message", 976 | "type": "text", 977 | "label": "Message", 978 | "required": true 979 | }, 980 | { 981 | "name": "image_files", 982 | "type": "select", 983 | "label": "Image Files", 984 | "multiple": true 985 | }, 986 | { 987 | "name": "image_urls", 988 | "spec": { 989 | "name": "value", 990 | "type": "url", 991 | "label": "Image URL", 992 | "required": true 993 | }, 994 | "type": "array", 995 | "label": "Image URLs" 996 | } 997 | ] 998 | } 999 | }, 1000 | { 1001 | "id": 11, 1002 | "module": "http:ActionSendData", 1003 | "version": 3, 1004 | "parameters": { 1005 | "handleErrors": false, 1006 | "useNewZLibDeCompress": true 1007 | }, 1008 | "mapper": { 1009 | "url": "https://api.wazzup24.com/v3/message", 1010 | "serializeUrl": false, 1011 | "method": "post", 1012 | "headers": [ 1013 | { 1014 | "name": "Content-Type", 1015 | "value": "application/json" 1016 | }, 1017 | { 1018 | "name": "Authorization", 1019 | "value": "Bearer {{var.input.wazzup_api_key}}" 1020 | } 1021 | ], 1022 | "qs": [], 1023 | "bodyType": "x_www_form_urlencoded", 1024 | "parseResponse": false, 1025 | "authUser": "", 1026 | "authPass": "", 1027 | "timeout": "", 1028 | "shareCookies": false, 1029 | "ca": "", 1030 | "rejectUnauthorized": true, 1031 | "followRedirect": true, 1032 | "useQuerystring": false, 1033 | "gzip": true, 1034 | "useMtls": false, 1035 | "formFields": [ 1036 | { 1037 | "key": "chatId", 1038 | "value": "{{1.messages[].chatId}}" 1039 | }, 1040 | { 1041 | "key": "channelId", 1042 | "value": "{{1.messages[].channelId}}" 1043 | }, 1044 | { 1045 | "key": "chatType", 1046 | "value": "{{1.messages[].chatType}}" 1047 | }, 1048 | { 1049 | "key": "text", 1050 | "value": "{{7.result}}\n【@PrideAIBot】" 1051 | } 1052 | ], 1053 | "followAllRedirects": false 1054 | }, 1055 | "metadata": { 1056 | "designer": { 1057 | "x": 1500, 1058 | "y": 300 1059 | }, 1060 | "restore": { 1061 | "expect": { 1062 | "method": { 1063 | "mode": "chose", 1064 | "label": "POST" 1065 | }, 1066 | "headers": { 1067 | "mode": "chose", 1068 | "items": [ 1069 | null, 1070 | null 1071 | ] 1072 | }, 1073 | "qs": { 1074 | "mode": "chose" 1075 | }, 1076 | "bodyType": { 1077 | "label": "Application/x-www-form-urlencoded" 1078 | }, 1079 | "formFields": { 1080 | "mode": "chose", 1081 | "items": [ 1082 | null, 1083 | null, 1084 | null, 1085 | null 1086 | ] 1087 | } 1088 | } 1089 | }, 1090 | "parameters": [ 1091 | { 1092 | "name": "handleErrors", 1093 | "type": "boolean", 1094 | "label": "Evaluate all states as errors (except for 2xx and 3xx )", 1095 | "required": true 1096 | }, 1097 | { 1098 | "name": "useNewZLibDeCompress", 1099 | "type": "hidden" 1100 | } 1101 | ], 1102 | "expect": [ 1103 | { 1104 | "name": "url", 1105 | "type": "url", 1106 | "label": "URL", 1107 | "required": true 1108 | }, 1109 | { 1110 | "name": "serializeUrl", 1111 | "type": "boolean", 1112 | "label": "Serialize URL", 1113 | "required": true 1114 | }, 1115 | { 1116 | "name": "method", 1117 | "type": "select", 1118 | "label": "Method", 1119 | "required": true, 1120 | "validate": { 1121 | "enum": [ 1122 | "get", 1123 | "head", 1124 | "post", 1125 | "put", 1126 | "patch", 1127 | "delete", 1128 | "options" 1129 | ] 1130 | } 1131 | }, 1132 | { 1133 | "name": "headers", 1134 | "type": "array", 1135 | "label": "Headers", 1136 | "spec": [ 1137 | { 1138 | "name": "name", 1139 | "label": "Name", 1140 | "type": "text", 1141 | "required": true 1142 | }, 1143 | { 1144 | "name": "value", 1145 | "label": "Value", 1146 | "type": "text" 1147 | } 1148 | ] 1149 | }, 1150 | { 1151 | "name": "qs", 1152 | "type": "array", 1153 | "label": "Query String", 1154 | "spec": [ 1155 | { 1156 | "name": "name", 1157 | "label": "Name", 1158 | "type": "text", 1159 | "required": true 1160 | }, 1161 | { 1162 | "name": "value", 1163 | "label": "Value", 1164 | "type": "text" 1165 | } 1166 | ] 1167 | }, 1168 | { 1169 | "name": "bodyType", 1170 | "type": "select", 1171 | "label": "Body type", 1172 | "validate": { 1173 | "enum": [ 1174 | "raw", 1175 | "x_www_form_urlencoded", 1176 | "multipart_form_data" 1177 | ] 1178 | } 1179 | }, 1180 | { 1181 | "name": "parseResponse", 1182 | "type": "boolean", 1183 | "label": "Parse response", 1184 | "required": true 1185 | }, 1186 | { 1187 | "name": "authUser", 1188 | "type": "text", 1189 | "label": "User name" 1190 | }, 1191 | { 1192 | "name": "authPass", 1193 | "type": "password", 1194 | "label": "Password" 1195 | }, 1196 | { 1197 | "name": "timeout", 1198 | "type": "uinteger", 1199 | "label": "Timeout", 1200 | "validate": { 1201 | "max": 300, 1202 | "min": 1 1203 | } 1204 | }, 1205 | { 1206 | "name": "shareCookies", 1207 | "type": "boolean", 1208 | "label": "Share cookies with other HTTP modules", 1209 | "required": true 1210 | }, 1211 | { 1212 | "name": "ca", 1213 | "type": "cert", 1214 | "label": "Self-signed certificate" 1215 | }, 1216 | { 1217 | "name": "rejectUnauthorized", 1218 | "type": "boolean", 1219 | "label": "Reject connections that are using unverified (self-signed) certificates", 1220 | "required": true 1221 | }, 1222 | { 1223 | "name": "followRedirect", 1224 | "type": "boolean", 1225 | "label": "Follow redirect", 1226 | "required": true 1227 | }, 1228 | { 1229 | "name": "useQuerystring", 1230 | "type": "boolean", 1231 | "label": "Disable serialization of multiple same query string keys as arrays", 1232 | "required": true 1233 | }, 1234 | { 1235 | "name": "gzip", 1236 | "type": "boolean", 1237 | "label": "Request compressed content", 1238 | "required": true 1239 | }, 1240 | { 1241 | "name": "useMtls", 1242 | "type": "boolean", 1243 | "label": "Use Mutual TLS", 1244 | "required": true 1245 | }, 1246 | { 1247 | "name": "formFields", 1248 | "type": "array", 1249 | "label": "Fields", 1250 | "spec": [ 1251 | { 1252 | "name": "key", 1253 | "label": "Key", 1254 | "type": "text", 1255 | "required": true 1256 | }, 1257 | { 1258 | "name": "value", 1259 | "label": "Value", 1260 | "type": "text" 1261 | } 1262 | ] 1263 | }, 1264 | { 1265 | "name": "followAllRedirects", 1266 | "type": "boolean", 1267 | "label": "Follow all redirect", 1268 | "required": true 1269 | } 1270 | ] 1271 | } 1272 | } 1273 | ] 1274 | } 1275 | ] 1276 | } 1277 | ], 1278 | "metadata": { 1279 | "instant": true, 1280 | "version": 1, 1281 | "scenario": { 1282 | "roundtrips": 1, 1283 | "maxErrors": 3, 1284 | "autoCommit": true, 1285 | "autoCommitTriggerLast": true, 1286 | "sequential": false, 1287 | "slots": null, 1288 | "confidential": false, 1289 | "dataloss": false, 1290 | "dlq": false, 1291 | "freshVariables": false 1292 | }, 1293 | "designer": { 1294 | "orphans": [] 1295 | }, 1296 | "zone": "eu2.make.com", 1297 | "notes": [ 1298 | { 1299 | "moduleIds": [ 1300 | 1 1301 | ], 1302 | "content": "

PrideAIBot by shorin_nikita

Вступить в сообщество: https://pride.aibot.school

", 1303 | "isFilterNote": false, 1304 | "metadata": { 1305 | "color": "#9138FE" 1306 | } 1307 | } 1308 | ] 1309 | }, 1310 | "io": { 1311 | "input_spec": [ 1312 | { 1313 | "name": "wazzup_api_key", 1314 | "type": "text", 1315 | "label": "", 1316 | "default": "ЗАМЕНИТЬ", 1317 | "required": false, 1318 | "multiline": false 1319 | } 1320 | ], 1321 | "output_spec": [] 1322 | } 1323 | } 1324 | --------------------------------------------------------------------------------