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

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

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

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

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

Путь от смены статуса до отправки:

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

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

События ​

Запись выбирается по событию и 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) принимает плейсхолдеры заказа в трёх видах:

fenom
Заказ #{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 они разбирались на сервере. В штатных чанках поля покупателя выводятся экранированными — своим чанкам стоит делать так же, иначе покупатель сможет подставить в письмо менеджеру свою ссылку или картинку:

fenom
<td>{$address.comment | e}</td>

Пример минимального чанка 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

Фильтры в гриде ​

Над списком уведомлений три фильтра:

  • Статус заказа — показать только уведомления для конкретного статуса.
  • Канал — отфильтровать по типу канала (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. См. события уведомлений.