Многие команды уже общаются с клиентами в Telegram. С помощью n8n — инструмента автоматизации рабочих процессов с открытым исходным кодом — можно собрать Telegram-бота, который отвечает на вопросы с помощью ИИ-модели, помнит контекст разговора, следует вашим указаниям о тоне и рамках общения и при необходимости передаёт диалог живому сотруднику, причём без разработки полноценного приложения. В этой статье мы установим n8n на ваш сервер за HTTPS, создадим бота и соберём рабочий процесс (workflow) с локальной моделью в Ollama или с API поставщика ИИ.
В Telegram откройте диалог с @BotFather, отправьте /newbot, задайте имя и username, оканчивающийся на «bot», и скопируйте токен. Командами /setdescription и /setuserpic можно придать боту профессиональный вид. Храните токен в секрете: любой, у кого он есть, управляет ботом.
n8n работает в Docker (см. наше руководство по установке Docker). Замените домен и часовой пояс на свои.
docker volume create n8n_data
docker run -d --name n8n --restart always \
-p 127.0.0.1:5678:5678 \
--add-host=host.docker.internal:host-gateway \
-e N8N_HOST=n8n.example.com \
-e N8N_PROTOCOL=https \
-e WEBHOOK_URL=https://n8n.example.com/ \
-e GENERIC_TIMEZONE=Asia/Hong_Kong \
-e TZ=Asia/Hong_Kong \
-e N8N_PROXY_HOPS=1 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
WEBHOOK_URL должен содержать публичный HTTPS-адрес: n8n использует его при регистрации вебхука в Telegram.
server {
listen 443 ssl;
http2 on;
server_name n8n.example.com;
ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 300s;
}
}
Откройте https://n8n.example.com и сразу создайте учётную запись владельца. О сертификатах — в статье бесплатный SSL с Certbot или acme.sh.
http://host.docker.internal:11434 (Ollama должна быть настроена по статье запуск локальной LLM с Ollama, включая шаг, разрешающий подключения из Docker-контейнеров, и правила файрвола).Создайте новый workflow и добавьте следующие узлы (названия могут немного отличаться в разных версиях n8n):
qwen2.5:7b или чат-модель вашего поставщика) и узел памяти (Simple Memory) с ключом по chat ID, чтобы у каждого клиента была своя история переписки.Выражения для полей узлов:
AI Agent - prompt (user message): {{ $json.message.text }}
Simple Memory - session key: {{ $('Telegram Trigger').item.json.message.chat.id }}
Telegram - chat ID: {{ $('Telegram Trigger').item.json.message.chat.id }}
Telegram - text: {{ $json.output }}
Хорошее системное сообщение удерживает ответы краткими и по теме, например:
You are the customer service assistant of ACME Hosting.
Answer briefly and politely in the customer's language.
Only answer questions about our services, orders and technical support.
If you are not sure, or the customer asks for a refund or a person,
say that a colleague will reply soon. Never invent prices or promises.
Сохраните workflow и активируйте его — после этого n8n зарегистрирует вебхук в Telegram. Отправьте боту сообщение. Если ничего не происходит, проверьте статус вебхука:
curl -s "https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getWebhookInfo"
В поле url должен быть ваш домен n8n, а last_error_message объясняет причину сбоев, например проблемы с сертификатом или недоступность сервера.
{{ $json.message.chat.id }} входит в список chat ID вашей команды.Для одного токена бота можно установить только один вебхук. Другой workflow, тестовый запуск или скрипт с тем же токеном его заменяет. Проверьте getWebhookInfo, держите для каждого бота только один активный workflow и используйте для тестов отдельного бота.
На CPU небольшие модели отвечают быстрее. Делайте системное сообщение коротким, ограничьте окно памяти последними 10 сообщениями и держите модель загруженной в Ollama.
Да. Тот же workflow может искать заказы в вашей базе данных, создавать тикеты в поддержку, публиковать сообщения в группе или отправлять ежедневные отчёты. Требования n8n к серверу описаны в статье требования к серверу для Dify, n8n и ИИ-агентов.
Если проблема не решена, создайте тикет — техническая поддержка IMIDC работает 24/7. Укажите IP сервера, домен n8n, вывод getWebhookInfo и docker logs n8n, чтобы мы быстрее нашли причину.