Перейти к содержанию

Включить каналы уведомлений

О каждой новой заявке сайт может уведомлять по трём независимым каналам: Email, Telegram, amoCRM. Они включаются по отдельности — можно один, можно все три.

Как это работает

  1. Заявка сначала сохраняется в базу — это происходит всегда, независимо от каналов. Заявка не теряется, даже если все уведомления упадут.
  2. Затем сайт ставит в очередь задачи только для включённых каналов (фоновый воркер qcluster). Форма не ждёт их выполнения — пользователь сразу видит «спасибо».
  3. Если канал настроен неполностью — он просто пропускается с записью в лог, остальные продолжают работать.

Подробнее о потоке — в разделе Архитектура.

Двухуровневая настройка

Каждый канал требует две вещи:

Уровень Где задаётся Что задаёт
Включатель Админка → Настройки сайта → «Уведомления и аналитика» галочка «включить канал» + адресат (email / chat_id)
Учётные данные Файл .env на сервере токены и пароли (на сайте не видны)

Галочка в админке только разрешает попытку; без кредов в .env канал всё равно пропустится. Это разделение умышленное: секреты не хранятся в БД и не показываются в интерфейсе.

После правки .env на сервере нужно перезапустить контейнеры — см. Эксплуатация.


Email

Рекомендуемый канал (включён по умолчанию). Письмо о заявке уходит на указанный адрес.

В админке (Настройки сайта → Уведомления и аналитика):

  • Отправлять заявки на 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) — см. Эксплуатация.