Предложение по улучшению: сделать конфигурируемым «Временное окно отправки» для задачи Digest

Всем привет,

Я хотел бы запросить одну или две настройки сайта, которые позволили бы настроить «временное окно» и «дни рассылки» при постановке задач по рассылке дайджестов в очередь.

Причина этого запроса заключается в том, что для большинства сайтов, включая наш, существует преобладающий географический регион пользователей; например, у нас это США, у других это может быть Корея, Бразилия, Германия, Австралия или любой другой регион планеты.

Отправка писем-дайджестов была бы более эффективной, если бы их можно было отправлять в рабочее время и в рабочие дни (для основной базы пользователей). Многие сайты платят за услуги массовой рассылки, такие как MailGun или SendGrid, для отправки писем-дайджестов; поэтому гораздо лучше, когда эти письма попадают во входящие участников «около» 10 утра в понедельник, а не в 3 часа ночи в субботу.

Эти задачи ставятся в очередь, поэтому наличие одной или двух переменных конфигурации, таких как «временное окно очереди дайджестов» и «разрешенные дни очереди дайджестов», сделало бы расходы на отправку писем-дайджестов более эффективными.

Я поискал в репозитории ядра на GitHub и не нашел способа установить эти важные параметры. Не упустил ли я их?

Спасибо за рассмотрение этого вопроса!

2 лайка

По умолчанию Discourse будет отправлять дайджест в тот же час, когда пользователь завершает 7-дневный период бездействия, что означает, что письмо будет совпадать с временным окном, в которое пользователь был активен на сайте. Это отлично, так как система автоматически адаптируется к каждому пользователю и часовому поясу.

Очень распространенная проблема возникает при импорте, когда администраторы забывают отключить дайджесты для импортированных пользователей или забывают импортировать время последней активности в импортируемых данных, и все значения устанавливаются на полночь.

3 лайка

Превосходно!

ЛОЛ. Вы попали в самую точку, описав нашу проблему! У наших импортированных пользователей время последней активности было установлено на момент их импорта в Discourse с нашего устаревшего сайта на vB.

В нашем случае скрипты Discourse, которые мы использовали, этого не делали; и мы не могли «забыть» сделать то, о чём изначально даже не подозревали, ЛОЛ.

Как говорится, задним числом всё ясно.

Я не думаю, что большинство пользователей, впервые мигрирующих в Discourse с устаревшего форума, могут забыть что-то «до того, как узнают детали работы дайджестов в Discourse» :slight_smile:

Это не большая проблема. Но, как вы сами сказали:

Поэтому функция, о которой я прошу, помогла бы смягчить эту проблему для мигрирующих форумов, для тех самых «неподдерживаемых душ» в киберпространстве, которые обычно «оставлены на произвол судьбы» при миграции форума на Discourse :slight_smile:

Поскольку, я предполагаю, что эта «распространенная проблема» не будет устранена, не могли бы вы, пожалуйста, опубликовать ссылку на код в репозитории, где я могу написать плагин для применения патча (monkey patch) к этой проблеме для нас, заблудших душ миграции, которые «забыли что-то сделать» до того, как «вообще узнали, что это нужно было сделать»?

Спасибо!

1 лайк

Или, может быть, передумаю и вместо патча напишу Ruby-скрипт, который просто изменит время «последней активности» для мигрированных пользователей на время в рамках обычных рабочих часов (просто добавьте 10 часов к полуночи, и всё готово!).

Проблема решена :slight_smile:

1 лайк

Спасибо за эту информацию, @Falco.

Я только что обновил всех этих устаревших пользователей, чтобы их даты/время last_seen_at соответствовали 10:00 EST.

Исходя из того, как я понял ваш ответ, это поставит их письма с дайджестом в очередь примерно на это время утра, 10:00.

Правильно?

Обновление:

Хм. Похоже, это не работает. После установки дат-времени last_seen_at на 10:00 EST sidekiq теперь ставит дайджесты в очередь сразу после полуночи EST; а также логи отправленных писем в панели администратора показывают, что дайджесты отправляются прямо сейчас.

Это магическое «выравнивание последней активности» по времени отправки дайджестов, похоже, не работает так, как описано, с моей стороны.

:confused:

Хорошо. Я отлаживаю и применяю monkey-патчинг к class EnqueueDigestEmails на нашем рабочем сайте.

Сообщу, если и когда у меня будут какие-либо окончательные результаты, после ведения логов и тонкой настройки.

1 лайк