
Центр уведомлений
Откройте Пакеты → MiniShop3 → Уведомления. Здесь задаётся, кому и каким каналом писать при смене статуса заказа и по какому шаблону.
Типовые записи
- Письмо покупателю при создании заказа.
- Письмо менеджеру о новом заказе.
- Уведомление покупателю при переходе в статус «Оплачен», «Отправлен», «Доставлен».
- Дубль в Telegram-канал менеджеров.
- Любые комбинации «событие → статус → получатель → канал».
Путь от смены статуса до отправки:
Поля уведомления
| Поле | Тип | Описание |
|---|---|---|
event | string | Тип события: смена статуса заказа, создание заказа |
status_id | int | ID статуса заказа. Только для события «смена статуса». Пусто = срабатывать на любой статус |
recipient_type | string | Получатель: customer (покупатель) или manager (менеджер) |
channel | string | Канал доставки: email, telegram и др. |
enabled | bool | Включено / отключено |
subject | string | Тема письма. Только для email, принимает плейсхолдеры заказа |
template | string | Имя чанка для тела сообщения. Пусто: для email письмо не отправится; Telegram и SMS строят сообщение по умолчанию |
delay | int | Задержка отправки в секундах. Действует только при включённой настройке ms3_use_scheduler и установленном Scheduler |
position | int | Порядок отправки при нескольких уведомлениях на одно событие |
config | JSON | Служебная настройка канала. По умолчанию пустая, в форме не редактируется — правится только кодом |
События
Запись выбирается по событию и status_id.
| Событие | ID | Работает сейчас |
|---|---|---|
| Смена статуса заказа | order_status_changed | Да |
| Создание заказа | order_created | Нет — пункт есть в форме, но отправка по нему не вызывается |
order_created
Событие order_created можно выбрать в форме, но уведомления с ним не отправляются — ни при отправке формы на фронтенде, ни при финализации черновика. Отслеживание: MiniShop3#811. Пока баг не закрыт, настраивайте оповещения о новом заказе через order_status_changed и нужный status_id.
Получатели
| Получатель | Откуда берутся контакты |
|---|---|
Покупатель (customer) | Из заказа: email, телефон, Telegram chat_id, если указан |
Менеджер (manager) | Из системных настроек канала: ms3_email_manager, ms3_telegram_manager (Telegram), ms3_phone_manager (SMS) |
Каналы
Email (встроенный)
Канал по умолчанию. Берёт SMTP-настройки MODX.
Системные настройки:
ms3_email_manager— адреса менеджеров через запятую. Пусто — берётсяemailsender.emailsender(настройка ядра MODX) — адрес отправителя, имя отправителя берётся изsite_name. Отдельной настройки «от» для писем магазина нет.
Тема письма (subject) принимает плейсхолдеры заказа в трёх видах:
Заказ #{num} — изменение статуса
Заказ #{$num} — изменение статуса
Заказ #[[+num]] — изменение статусаВсе три равнозначны. До 1.14.2-beta1 простая форма {num} вместе с любой конструкцией Fenom на той же строке давала пустую тему — например Заказ #{num} / {$status_name}.
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 и так далее. Без token и idempotency_key, uuid на месте |
{$customer} | Публичные поля покупателя и его свои поля. Без пароля и токена |
{$address} | Поля адреса заказа |
{$delivery}, {$payment} | Способ доставки и способ оплаты. Только пять полей: id, name, description, price, logo |
{$products} | Позиции заказа |
{$total} | Итоги с форматированными суммами |
{$status_name}, {$old_status_name} | Статусы заказа, только для события смены статуса |
{$site_name} | Название магазина (настройка site_name) |
Данные покупателя в шаблоне — это текст, а не разметка
Теги MODX и конструкции Fenom, попавшие в комментарий к заказу, имя или адрес, в письме не исполняются: до 1.14.2-beta1 они разбирались на сервере. В штатных чанках поля покупателя выводятся экранированными — своим чанкам стоит делать так же, иначе покупатель сможет подставить в письмо менеджеру свою ссылку или картинку:
<td>{$address.comment | e}</td>Пример минимального чанка 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 |
Фильтры в гриде
Над списком уведомлений три фильтра:
- Статус заказа — показать только уведомления для конкретного статуса.
- Канал — отфильтровать по типу канала (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. См. события уведомлений.
