
Центр уведомлений
Управление уведомлениями о событиях заказа доступно через Extras → MiniShop3 → Уведомления.
Здесь настраивается, какие уведомления и кому отправлять при создании заказа и смене его статуса, через какие каналы (email, Telegram и др.) и по какому шаблону.
Назначение
Центр уведомлений — единая точка для управления цепочкой оповещений магазина:
- Письмо клиенту при создании заказа.
- Письмо менеджеру о новом заказе.
- Уведомление клиента при переходе в статус «Оплачен», «Отправлен», «Доставлен» и т.д.
- Дублирующее уведомление в Telegram-канал менеджеров.
- Любые комбинации «событие → статус → получатель → канал».
Каждое уведомление — отдельная запись. На одно событие можно настроить несколько уведомлений (например, одновременно email клиенту и Telegram менеджеру).
Поля уведомления
| Поле | Тип | Описание |
|---|---|---|
event | string | Тип события: смена статуса заказа, создание заказа |
status_id | int | ID статуса заказа. Только для события «смена статуса». Пусто = срабатывать на любой статус |
recipient_type | string | Получатель: customer (клиент) или manager (менеджер) |
channel | string | Канал доставки: email, telegram и др. |
enabled | bool | Включено / отключено |
subject | string | Тема письма (для email; поддерживает Fenom) |
template | string | Имя чанка для тела сообщения. Пусто = стандартный шаблон канала |
delay | int | Задержка отправки в секундах. Требует Scheduler |
position | int | Порядок отправки при нескольких уведомлениях на одно событие |
События
В текущей версии поддерживаются:
| Событие | ID | Когда срабатывает |
|---|---|---|
| Создание заказа | order_created | Покупатель оформил заказ (фронтенд) или менеджер финализировал черновик |
| Смена статуса заказа | order_status_changed | Заказ переходит из одного статуса в другой |
Для события «смена статуса» можно дополнительно ограничить поле status_id — тогда уведомление срабатывает только при переходе в указанный статус. Если оставить пустым — будет отправляться при любой смене статуса.
Получатели
- Клиент (
customer) — получает уведомление по контактам из заказа (email, телефон, Telegram chat_id, если указан). - Менеджер (
manager) — получает уведомление по контактам, заданным в системных настройках канала (например,ms3_email_managersдля email, Telegram bot chat ID для Telegram).
Каналы
Email (встроенный)
Канал по умолчанию. Использует SMTP-настройки MODX.
Параметры в системных настройках:
ms3_email_from— адрес отправителя.ms3_email_managers— адреса менеджеров через запятую.
Для тела письма можно указать имя чанка в поле template — например, tpl.msEmail.order.new. Если поле пустое — используется стандартный шаблон канала.
Тема письма (subject) поддерживает синтаксис Fenom, можно использовать плейсхолдеры заказа:
Заказ #{$num} — изменение статусаTelegram
Канал для отправки сообщений в Telegram (бот → клиент по chat_id или бот → канал/чат менеджеров).
Параметры (системные настройки):
ms3_telegram_bot_token— токен бота, полученный у@BotFather.ms3_telegram_managers_chat_id— ID чата/канала менеджеров.
Для уведомления клиента нужно, чтобы у клиента в заказе был указан telegram_chat_id (через кастомное поле или авторизацию через Telegram-бота). Без этого канал для клиента работать не сможет.
SMS и кастомные каналы
В коде есть скелет SMS-канала. Любой компонент может зарегистрировать собственный канал — см. раздел разработки Notification Events, событие msOnRegisterNotificationChannels. Зарегистрированные сторонним кодом каналы автоматически появляются в выпадающем списке формы.
Шаблоны сообщений
В поле template указывается имя чанка MODX, который рендерится через Fenom. Доступные плейсхолдеры:
{$order}— массив полей заказа (num,cost,status_idи т.д.).{$customer}— данные клиента.{$products}— массив позиций заказа.{$status_name},{$old_status_name}— для события смены статуса.{$shop_name}— название магазина из системной настройки.
Пример минимального чанка tpl.msEmail.order.new:
<h1>Спасибо за заказ #{$order.num}</h1>
<p>Сумма: {$order.cost}</p>
<ul>
{foreach $products as $product}
<li>{$product.name} × {$product.count}</li>
{/foreach}
</ul>Если чанк не указан или не найден — канал использует свой стандартный шаблон.
Задержка отправки
Поле delay (в секундах) позволяет отложить отправку. Полезно для сценариев вроде «через 24 часа после оплаты — спасибо за заказ» или «через 7 дней после доставки — попросить отзыв».
Для работы задержки требуется установленный и настроенный компонент Scheduler: уведомление встаёт в очередь как отложенная задача и отправляется по расписанию. Без Scheduler параметр игнорируется и уведомление уходит сразу.
Несколько уведомлений на одно событие
На одно событие можно настроить любое количество записей. Поле position определяет порядок отправки внутри одного события: меньшее значение — раньше.
Типовая связка для нового заказа:
| Position | Event | Status | Recipient | Channel | Subject / Template |
|---|---|---|---|---|---|
| 1 | order_created | — | customer | «Спасибо за заказ #{$num}» / tpl.msEmail.order.thanks | |
| 2 | order_created | — | manager | «Новый заказ #{$num}» / tpl.msEmail.order.new.manager | |
| 3 | order_created | — | manager | telegram | — / tpl.msTelegram.order.new |
Фильтры в гриде
Над списком уведомлений три фильтра:
- Статус заказа — показать только уведомления для конкретного статуса.
- Канал — отфильтровать по типу канала (email / telegram / ...).
- Получатель — клиент или менеджер.
Фильтры применяются по кнопке «Применить», сбрасываются по «Очистить».
Действия
- Добавить уведомление — открывает диалог создания.
- Редактировать (иконка карандаша) — диалог правки записи.
- Включить / отключить — чекбокс в первой колонке грида, переключает поле
enabledбез перехода в редактор. - Удалить (иконка корзины) — с подтверждением.
Связанные разделы
- Системные настройки —
ms3_email_from,ms3_email_managers,ms3_telegram_bot_token,ms3_telegram_managers_chat_idи др. - Справочник статусов заказа — определяет, какие
status_idдоступны для привязки. Настраивается в админке (MiniShop3 → Настройки → Статусы). - События уведомлений — подписка плагинов, регистрация кастомных каналов.
Частые вопросы
Письма не отправляются. Проверьте: системную настройку ms3_email_from, SMTP-настройки MODX, лог ошибок MODX (там пишется ошибка отправки конкретного канала с пометкой [ms3] Notification error), статус «Включено» у нужной записи в Центре уведомлений.
Уведомление пришло на старый email клиента, а не на тот, что в форме заказа. Известное поведение, причина — в текущей реализации канала. См. issue #218 и связанный архитектурный аудит #219.
Хочу свой канал отправки (например, push в мобильное приложение). Нужен плагин на событие msOnRegisterNotificationChannels, который зарегистрирует класс канала, реализующий ChannelInterface. См. события уведомлений.
