
Центр уведомлений
Откройте Пакеты → MiniShop3 → Уведомления. Задаёте, кому и через какой канал писать при смене статуса заказа, и какой шаблон использовать.
Назначение
Типовые записи:
- Письмо клиенту при создании заказа.
- Письмо менеджеру о новом заказе.
- Уведомление клиенту при переходе в статус «Оплачен», «Отправлен», «Доставлен».
- Дубль в Telegram-канал менеджеров.
- Любые комбинации «событие → статус → получатель → канал».
Поля уведомления
| Поле | Тип | Описание |
|---|---|---|
event | string | Тип события: смена статуса заказа, создание заказа |
status_id | int | ID статуса заказа. Только для события «смена статуса». Пусто = срабатывать на любой статус |
recipient_type | string | Получатель: customer (клиент) или manager (менеджер) |
channel | string | Канал доставки: email, telegram и др. |
enabled | bool | Включено / отключено |
subject | string | Тема письма (для email, поддерживает Fenom) |
template | string | Имя чанка для тела сообщения. Пусто: для email письмо не отправится; Telegram и SMS строят сообщение по умолчанию |
delay | int | Задержка отправки в секундах. Действует только при включённой настройке ms3_use_scheduler и установленном Scheduler |
position | int | Порядок отправки при нескольких уведомлениях на одно событие |
config | JSON | Служебная конфигурация канала записи. В сиде пустая, в UI не редактируется — правится только кодом |
События
В коде вызывается только событие order_status_changed (StatusChangedNotification). Письма и каналы выбираются по этому событию и status_id.
| Событие | ID | Работает сейчас |
|---|---|---|
| Смена статуса заказа | order_status_changed | Да — при смене статуса заказа |
| Создание заказа | order_created | Нет — пункт есть в форме, но отправка по нему не вызывается |
order_created
Событие order_created можно выбрать в UI, но на ad7da5fb уведомления с этим событием не отправляются (ни при отправке формы на витрине, ни при финализации черновика). Отслеживание: MiniShop3#811. Пока баг не закрыт, настраивайте оповещения о новом заказе через order_status_changed и нужный status_id.
Получатели
- Клиент (
customer) — получает уведомление по контактам из заказа (email, телефон, Telegram chat_id, если указан). - Менеджер (
manager) — получает уведомление по контактам, заданным в системных настройках канала (например,ms3_email_managerдля email,ms3_telegram_managerдля Telegram,ms3_phone_managerдля SMS).
Каналы
Email (встроенный)
Канал по умолчанию. Берёт SMTP-настройки MODX.
Параметры в системных настройках:
ms3_email_manager— адреса менеджеров через запятую. При пустом значении используетсяemailsender.- Отправитель — настройка ядра MODX
emailsender(Настройки → Системные настройки), имя отправителя —site_name. Отдельной настройки «от» для писем магазина нет.
Тема письма (subject) принимает Fenom и плейсхолдеры заказа:
Заказ #{$num} — изменение статусаTelegram
Канал для отправки сообщений в Telegram (бот → клиент по chat_id или бот → канал/чат менеджеров).
Параметры (системные настройки):
ms3_telegram_bot_token— токен бота, полученный у@BotFather.ms3_telegram_manager— chat ID менеджеров через запятую.
Для клиента в заказе нужен telegram_chat_id (своё поле или авторизация через Telegram-бота). Без него канал клиенту не отправит сообщение.
SMS и свои каналы
В коде есть скелет SMS-канала. Компонент регистрирует свой канал через событие msOnRegisterNotificationChannels, см. События уведомлений. Зарегистрированные каналы появляются в списке формы.
Шаблоны сообщений
В поле template указывается имя чанка MODX, его тело отрисовывает Fenom. Доступные плейсхолдеры:
{$order}— массив полей заказа (num,cost,status_idи т.д.).{$customer}— данные клиента.{$products}— массив позиций заказа.{$status_name},{$old_status_name}— для события смены статуса.{$site_name}— название магазина (настройкаsite_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>Если чанк не указан: для email письмо не отправится, Telegram и SMS строят сообщение по умолчанию (лексикон). Если чанк указан, но не найден, отправка падает с ошибкой в лог MODX.
Задержка отправки
Поле delay (в секундах) откладывает отправку. Пример: через 24 часа после оплаты или через 7 дней после доставки.
Задержка работает только при включённой системной настройке ms3_use_scheduler и установленном Scheduler: уведомление встаёт в очередь и уходит по расписанию. При выключенной настройке (значение по умолчанию) или без Scheduler delay игнорируется, уведомление уходит сразу.
Несколько уведомлений на одно событие
На одно событие можно настроить любое количество записей. Поле position определяет порядок отправки внутри одного события: меньшее значение — раньше.
Типовая связка для нового заказа:
| Порядок | Событие | Статус | Получатель | Канал | Тема / Шаблон |
|---|---|---|---|---|---|
| 1 | order_status_changed | ID «Новый» | customer | «Спасибо за заказ #{$num}» / tpl.msEmail.order.thanks | |
| 2 | order_status_changed | ID «Новый» | manager | «Новый заказ #{$num}» / tpl.msEmail.order.new.manager | |
| 3 | order_status_changed | ID «Новый» | manager | telegram | — / tpl.msTelegram.order.new |
Примеры с order_created сейчас не срабатывают. См. предупреждение выше.
Фильтры в гриде
Над списком уведомлений три фильтра:
- Статус заказа — показать только уведомления для конкретного статуса.
- Канал — отфильтровать по типу канала (email / telegram / ...).
- Получатель — клиент или менеджер.
Фильтры применяются по кнопке «Применить», сбрасываются по «Очистить».
Действия
- Добавить уведомление — открывает диалог создания.
- Редактировать (иконка карандаша) — диалог правки записи.
- Включить / отключить — чекбокс в первой колонке грида, переключает поле
enabledбез перехода в редактор. - Удалить (иконка корзины) — с подтверждением.
Связанные страницы
- Системные настройки —
ms3_email_manager,ms3_telegram_bot_token,ms3_telegram_manager,ms3_use_schedulerи др. - Справочник статусов заказа — определяет, какие
status_idдоступны для привязки. Настраивается в админке (MiniShop3 → Настройки → Статусы). - События уведомлений — подписка плагинов, регистрация своих каналов.
Частые вопросы
Письма не отправляются.
Проверьте:
- заполненное поле
template: без чанка email-канал письма не отправляет; - настройка отправителя
emailsenderи SMTP-настройки MODX; - лог ошибок MODX: ошибка отправки канала пишется с пометкой
[ms3] Notification error; - статус «Включено» у нужной записи в Центре уведомлений.
Письмо ушло не на email из формы заказа.
Сначала берётся email из адреса заказа (msOrderAddress). Email msCustomer подставляется только если в адресе поле пустое.
Хочу свой канал отправки (например, push в мобильное приложение).
Нужен плагин на событие msOnRegisterNotificationChannels, который зарегистрирует класс канала, реализующий ChannelInterface. См. события уведомлений.
