Open Alex300 opened 1 month ago
Этот Сендер могут использовать и другие расширения для своих уведомлений. Также он должен быть расширяемый с возможностью добавления других транспортов (Телеграм, например)
Тогда это по классификации больше похоже на очередь сообщений (MessageQueue), а транспорты как email, телеграм и т.д. это уже Сендеры. У себя использую похожую систему - модуль это очередь, а транспортеры это API плагины к разным сущностям - email, sms, мессенджеры, push-уведомления на телефон, а если это магазин или крупная торговая площадка или даже ERP\CRM система то еще и API интеграции к другим платформам. Есть даже примеры с еко-системами "умного дома". Добавление в очередь это как плагин подписки например, а другими плагинами реализуются другие триггеры добавления сообщений в очередь. По крону или кастомным сценариям происходит обработка очереди (или всей или отдельных частей).
Потому предлагаю переклассифицировать тикет, отвязавшись от Форума в заголовке и нацелится на платформу для более широкого использования. В рамках тикета - да, реализовать работу с модулями форума, личными сообщениям и страницами. А сендер предусмотреть дефолный в виде почты, а остальные уже как кастомные вне коробочные решения для тех кому нужно больше. Ну и небольшой плагин подписки тогда прийдеться тоже заточить под такую связку. В перспективе это даст большее широкое поле для манёвра.
Тут имею ввиду все таки Сендер, который будет предоставлять единый интерфейс остальным компонентам системы. Он, предположительно, должен выполнять 2 функции:
Но да - это надо продумать и сделать отдельный тикет. Этот же тикет про уведомления с форума.
1) In the topic, show a drop-down list:
Receive notifications about new messages in this topic: none/in private messages/by email
2) There should be a text at the bottom of the letter: you received this letter because you subscribed to notifications in the topic... and the "unsubscribe" link
3) Perhaps for this we need to make a common MessageSender component, its sent method allows to send a message to the user using the specified transports
The subscription storage table should be shared across the entire site. It can store: id, user_id, subject (user id, subscription code). The second table contains a list of transports for subscription. So the user can be unsubscribed from all subscriptions with two requests.
[RU]
1) В теме форума вывести выпадающий список Получать уведомления о новых сообщениях в этой теме: нет/в личные сообщения/на email (Или, лучше, возможность выбора несколько вариантов)
2) Внизу письма должен быть текст: вы получили это письмо т.к. подписаны на уведомления в теме ... и ссылка "отписаться"
3) В личном кабинете пользователя вывести список активных подписок, чтобы он мог отписаться. Возможно на отдельной странице в модуле Users
4) Возможно для этого нужно сделать общий MessageSender, метод sent которого позволяет отправлять сообщение пользователю указанными транспортами
и метод для рассылки сообщения множеству пользователей каким то одним транспортом:
(Текст может содержать плейсхолдеры
{userName}
,{someThingElse}
. Массив $params - ключ id пользователя, значение - список для подстановки в плйсхолдеры)Таблица для хранения подписок должна быть общая для всего сайта. В ней можно хранить: id, user_id, subject (id пользователя, код подписки). Вторая таблица содержит список транспортов для подписки. Так пользователя можно отписать от всех подписок двумя запросами.
Этот Сендер могут использовать и другие расширения для своих уведомлений. Также он должен быть расширяемый с возможностью добавления других транспортов (Телеграм, например)