Skip to content
  1. Компоненты
  2. MiniShop3
  3. Интерфейс админки
  4. Центр уведомлений

Центр уведомлений ​

Откройте Пакеты → MiniShop3 → Уведомления. Задаёте, кому и через какой канал писать при смене статуса заказа, и какой шаблон использовать.

Назначение ​

Типовые записи:

  • Письмо клиенту при создании заказа.
  • Письмо менеджеру о новом заказе.
  • Уведомление клиенту при переходе в статус «Оплачен», «Отправлен», «Доставлен».
  • Дубль в Telegram-канал менеджеров.
  • Любые комбинации «событие → статус → получатель → канал».

Поля уведомления ​

ПолеТипОписание
eventstringТип события: смена статуса заказа, создание заказа
status_idintID статуса заказа. Только для события «смена статуса». Пусто = срабатывать на любой статус
recipient_typestringПолучатель: customer (клиент) или manager (менеджер)
channelstringКанал доставки: email, telegram и др.
enabledboolВключено / отключено
subjectstringТема письма (для email, поддерживает Fenom)
templatestringИмя чанка для тела сообщения. Пусто: для email письмо не отправится; Telegram и SMS строят сообщение по умолчанию
delayintЗадержка отправки в секундах. Действует только при включённой настройке ms3_use_scheduler и установленном Scheduler
positionintПорядок отправки при нескольких уведомлениях на одно событие
configJSONСлужебная конфигурация канала записи. В сиде пустая, в 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 и плейсхолдеры заказа:

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:

fenom
<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 определяет порядок отправки внутри одного события: меньшее значение — раньше.

Типовая связка для нового заказа:

ПорядокСобытиеСтатусПолучательКаналТема / Шаблон
1order_status_changedID «Новый»customeremail«Спасибо за заказ #{$num}» / tpl.msEmail.order.thanks
2order_status_changedID «Новый»manageremail«Новый заказ #{$num}» / tpl.msEmail.order.new.manager
3order_status_changedID «Новый»managertelegram— / 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. См. события уведомлений.