Представьте, что участник выбрал группы и подкатегории, которые его интересуют.
Я хочу отправить объявление тем, кто выбрал любую из этих групп или подкатегорий.
Пример: Город состоит из главного глобального города, нескольких районов и тем.
Также у меня есть группы, специфичные для конкретных пар «район–тема».
Пользователь может выбрать:
Конкретную тему (которая является общей группой);
Группу в своём районе по этой теме;
Группы в двух других районах по этой теме;
Вторую конкретную тему (которая также является общей группой);
Все группы во всех районах по этой теме;
Главную группу для главного города;
Если я захочу отправить письмо одной или нескольким группам или подкатегориям внутри этих групп, некоторые пользователи могут получить одно и то же объявление несколько раз, особенно если человек выбрал группу главного города, которая пересылает информацию из всех районов и по всем темам, плюс некоторые подгруппы и т. д.
Вопрос: Как подготовить рассылку, охватывающую более одной целевой группы и списка подкатегорий, без дубликатов, и отправить это сообщение?
Нужно ли использовать внешний скрипт?
Нужно ли использовать внешний процессор электронной почты?
Спасибо. Знаете ли вы, можно ли это автоматизировать? Например, запрашивать у API сообщения о каждой новой регистрации участника/выходе или выборе группы/категории, получая только новые изменения. Или (менее предпочтительно) получать полный список с указанием их групп/категорий, который может запрашивать программа на Python?
(Я могу написать код на Python). Вопрос скорее об автоматизации взаимодействия между Discourse и Python, а также между Python и почтовым процессором.
Discourse предоставляет надежный REST API, который позволяет:
Получать списки всех пользователей, групп и членства пользователей в группах
Отслеживать регистрацию новых пользователей и действия вступления/выхода из групп (через опрос или веб-хуки)
Получать конфигурации членства в категориях
Вы можете запросить полный список или попытаться отслеживать недавние изменения. Для полной детекции инкрементальных изменений, возможно, потребуется реализовать проверки на основе времени и локально управлять различиями. Аутентификация осуществляется через заголовки HTTP (Api-Key, Api-Username).
Однако для более эффективного и интегрированного управления я рекомендую создать пользовательский плагин Discourse. Плагин работает внутри среды сервера Discourse и предоставляет прямой доступ к внутренним компонентам Discourse, таким как:
Обновления членства пользователей, групп и категорий
Хуки событий жизненного цикла для регистрации и изменений в группах
Прямой доступ к внутренним API и базе данных Discourse
Такой подход обеспечивает возможности работы в реальном времени и большую гибкость при реализации автоматизированных рабочих процессов, таких как обработка почты или сегментация пользователей.
Можем ли мы создать плагин, который будет работать на нашем экземпляре, даже если он размещён Discourse, или нам нужно разместить его самостоятельно?
Затем, для отправки электронной почты, нужно ли мне экспортировать список, созданный плагином?
Что будет делать плагин? Могу ли я создать своего рода длинный список непосредственно на сервере Discourse? Или идея заключается в отправке информации на другой сервер?
@EMHmark7, вы в итоге решили, как хотите это реализовать?
В Discourse один из способов сделать то, что вам нужно, — это создать категории и позволить участникам сообщества «подписаться» на эти категории, выбрав уровень уведомлений «Слежение». Параметры «Слежение по умолчанию за категориями» или «Слежение по умолчанию за первым сообщением в категории» удобны для создания категории объявлений на вашем сайте, чтобы охватить всех пользователей.
Полагаю, существуют способы настроить это на основе членства в группах или других критериев, но я давно этим не занимался — возможно, кто-то другой сможет поделиться готовым решением.
Другой подход — отправлять личные сообщения (ЛС) напрямую группам: если вы отправите ЛС нескольким группам, и один и тот же участник входит в несколько из них, дублирования сообщений не будет.
Однако мне кажется, что вам может понадобиться другой инструмент, если ваша цель — не форум или сообщество, куда люди заходят для участия в обсуждениях, а набор рассылочных списков, отправляющих электронные письма.