Включить каналы уведомлений
О каждой новой заявке сайт может уведомлять по трём независимым каналам: Email, Telegram, amoCRM. Они включаются по отдельности — можно один, можно все три.
Как это работает
- Заявка сначала сохраняется в базу — это происходит всегда, независимо от каналов. Заявка не теряется, даже если все уведомления упадут.
- Затем сайт ставит в очередь задачи только для включённых каналов
(фоновый воркер
qcluster). Форма не ждёт их выполнения — пользователь сразу видит «спасибо». - Если канал настроен неполностью — он просто пропускается с записью в лог, остальные продолжают работать.
Подробнее о потоке — в разделе Архитектура.
Двухуровневая настройка
Каждый канал требует две вещи:
| Уровень | Где задаётся | Что задаёт |
|---|---|---|
| Включатель | Админка → Настройки сайта → «Уведомления и аналитика» | галочка «включить канал» + адресат (email / chat_id) |
| Учётные данные | Файл .env на сервере |
токены и пароли (на сайте не видны) |
Галочка в админке только разрешает попытку; без кредов в .env канал
всё равно пропустится. Это разделение умышленное: секреты не хранятся в БД
и не показываются в интерфейсе.
После правки .env на сервере нужно перезапустить контейнеры — см.
Эксплуатация.
Рекомендуемый канал (включён по умолчанию). Письмо о заявке уходит на указанный адрес.
В админке (Настройки сайта → Уведомления и аналитика):
- ✅ Отправлять заявки на email
- E-mail для уведомлений — адрес-получатель. Если пусто, канал пропускается.
Это не e-mail продаж
«E-mail для уведомлений» и «E-mail отдела продаж» — разные поля. Первое скрыто и служит только для писем о заявках; второе показывается на странице «Контакты». Не путайте их.
В .env (SMTP-доступ отправителя):
DEFAULT_FROM_EMAIL=noreply@example.com
EMAIL_HOST=smtp.example.com
EMAIL_PORT=465
EMAIL_HOST_USER=noreply@example.com
EMAIL_HOST_PASSWORD=<пароль приложения>
EMAIL_USE_SSL=True
EMAIL_USE_TLS=False
Важные моменты при настройке SMTP:
EMAIL_HOST_USERиDEFAULT_FROM_EMAILдолжны совпадать — почтовые провайдеры не дают отправлять от чужого имени.EMAIL_HOST_PASSWORD— обычно пароль приложения, а не основной пароль от почты (создаётся в настройках безопасности почтового аккаунта).- SSL или TLS, но не оба сразу. Для порта 465 —
EMAIL_USE_SSL=True,EMAIL_USE_TLS=False. Оба флагаTrue— Django не стартует.
Пример выше — для типового SMTP-провайдера (порт 465, SSL). Полное описание полей — Переменные окружения.
В разработке письма не уходят
Локально (dev) письма печатаются в консоль runserver — реальный SMTP
не нужен. Настоящая отправка — только на проде.
Telegram
Уведомление приходит сообщением в чат через бота.
В админке:
- ✅ Отправлять уведомления в Telegram
- Telegram chat_id — числовой ID чата (не
@username).
В .env:
TELEGRAM_BOT_TOKEN=<токен бота от @BotFather>
Если токен или chat_id пусты — канал пропускается.
Доступность Telegram API зависит от сети сервера
Telegram должен быть доступен с сервера. Если API недоступно, канал штатно
падает (заявка при этом сохранена, форма отвечает «спасибо»), а в логах
qcluster будет ошибка сети.
amoCRM
Заявка выгружается в CRM: создаётся контакт и сделка.
В админке:
- ✅ Отправлять заявки в amoCRM
В .env:
AMOCRM_BASE_URL=https://<поддомен>.amocrm.ru
AMOCRM_CLIENT_ID=<из карточки интеграции>
AMOCRM_CLIENT_SECRET=<из карточки интеграции>
AMOCRM_REDIRECT_URI=<из карточки интеграции>
AMOCRM_PIPELINE_ID=0 # 0 = первый этап главной воронки
AMOCRM_STATUS_ID=0
Пустые ID ломают запуск на проде
AMOCRM_PIPELINE_ID и AMOCRM_STATUS_ID должны быть числами. Если воронку
не выбираете — ставьте 0, а не оставляйте пустыми, иначе контейнер web
не стартует.
Разовая авторизация. Интеграция работает по OAuth 2.0 — кроме кредов нужна первичная авторизация (обмен кода на токены). На сервере:
docker compose -f deploy/selectel/compose.prod.yaml exec web \
python manage.py amocrm_auth <code>
<code> — код авторизации из карточки интеграции amoCRM. После этого токены
сохранятся в БД и будут обновляться автоматически. Без этого шага канал
пропускается с записью «нет авторизации» в лог.
Проверка
После настройки оставьте тестовую заявку через форму на сайте и проверьте:
- запись появилась в админке (Заявки);
- уведомление дошло по включённым каналам;
- при проблемах — логи воркера:
docker compose -f deploy/selectel/compose.prod.yaml logs -f qcluster.
Изменения .env применяются после перезапуска
Контейнеры читают .env при старте. После правки переменных перезапустите
стек (up -d) — см. Эксплуатация.