Я могу поклясться, что это работало в моих ранних тестах, так как это ключевой элемент моего рабочего процесса: я мог пометить существующий пост, и пользователи с настройкой watching_first_post для этого тега получали уведомление.
Теперь я обнаружил, что это не работает так (…больше..?)
Или, возможно, это игнорируется, когда под этой темой уже есть ответы?
Предполагаю, что я мог бы переместить темы в категорию, где все настроены на «слежение за первым постом», но…
Уведомления срабатывают только при создании темы?
Я не уверен, приведет ли наличие ответов к игнорированию триггера «первого поста».
Мне очень хотелось бы сохранять связанные темы в одной категории и «эскалировать» некоторые из них через теги.
Я готов запустить скрипт для инициирования уведомлений каждый раз, но Askbot не смог помочь мне создать работающий скрипт.
Это довольно однозначно, значит, я, должно быть, ошибаюсь в воспоминаниях и создавал тестовые темы с наличием отслеживаемого тега.
О нет — я не предлагаю, чтобы установка пользователя в режим «наблюдать за первым сообщением» через тег имела какие-либо ретроспективные эффекты.
Но surely часто бывает, что опубликованные темы позже помечаются сотрудниками. Я просто представлял, что когда к существующей теме применяется тег «наблюдать за первым сообщением», это должно генерировать уведомление об этой теме для пользователей, которые уже наблюдают за этим тегом.
Я всё ещё работаю с Askbot, чтобы создать адаптивный скрипт для таких случаев…
После примерно 60 итераций Askbot и я почти заставили скрипт на Rails работать.
Скрипт ниже — для темы 239 и тега ‘tagtest’ — генерирует ожидаемые уведомления «Новая тема» с правильным заголовком темы и создаёт соответствующие письма.
Некоторые элементы кажутся неактивными (message: и display_username: не отображаются ни в одном выводе), но он почти работает.
Главная проблема в том, что письма приходят без реального заголовка темы в заголовке. Вместо него отображается « %{topic_title} ». Поле topic_title, по-видимому, недопустимо для метода Notification, поэтому я не уверен, какой минимальный код необходим, чтобы передать его в письмо. (Askbot пытался добавлять всё более сложные методы отправки писем, что приводило к всё возрастающему числу ошибок.)
Если кто-то сможет помочь с этой деталью, это поможет мне продержаться, пока я не научусь правильно всё это чистить…!
topic_id = 239
Tag.where(name: 'tagtest').each do |tag|
TagUser.where(tag_id: tag.id, notification_level: TagUser.notification_levels[:watching_first_post]).each do |tag_user|
user = User.find(tag_user.user_id)
puts "Username: #{user.username}, ID: #{user.id}"
# Получаем заголовок темы
topic = Topic.find(topic_id)
topic_title = topic.title
# Создаём уведомление для темы
Notification.create!(
user_id: user.id,
notification_type: Notification.types[:watching_first_post],
topic_id: topic_id,
post_number: 1, # Предполагаем, что нужно уведомить о первом посте темы
data: {
message: 'У вас есть новое уведомление по теме, за которой вы следите.',
display_username: 'system'
}.to_json
)
end
end
Риск возникает и в момент простановки тегов. Например, при массовой простановке тегов к 500 темам вы получите 500 уведомлений — и всё, ваши уведомления превратятся в кашу.
Или ещё хуже: администратор проставит 100 тегов с интервалом в 10 секунд.
Это сложная проблема. Чтобы внедрить подобную функцию, нам пришлось бы очень тщательно агрегировать уведомления.
Разве это не то же самое, что массово переместить темы в другую категорию? Перемещение тем в другую категорию также вызывает уведомления о просмотре первого сообщения.
Да, я просто считаю, что в целом перекатегоризация встречается гораздо реже, чем перемечение тегов, поэтому масштаб проблемы несколько смягчается. Не могли бы вы сделать быстрый скриншот того, что происходит, когда вы массово перекатегоризируете три темы в раздел «Смотреть в первую очередь»?
Я бы и не подумал массово тегать 500 тем, но интересно: создаст ли это большую нагрузку, чем публикация в категории «Объявления», на которую подписаны все? (Редактирование: Ой, Moin написал, пока я составлял сообщение.)
Мой собственный сценарий использования — возможно, один пост в неделю для «эскалации» через уведомления по электронной почте.
Это похоже на более раннее обсуждение тем, которые были перекатегоризированы: (Редактирование: вы уже об этом знаете, извините.)
Я просто хочу использовать тег, вместо того чтобы иметь две категории для похожих тем. (Они должны быть вместе, но некоторые после публикации считаются достойными отправки нашим тихим пользователям, которые иногда читают только по электронной почте.)
Просто из любопытства/для сравнения я тестирую поведение функции «наблюдение за первым постом в категории», и уведомления не приходят при перемещении поста в другую категорию.
Мой параметр email time window mins установлен на 10, и я выдерживаю паузу в 15 минут между шагами.
Я уже несколько раз повторял этот процесс…
Создал новую тему в категории «песочница», за которой не ведётся наблюдение. Ждал 15 минут.
Переместил тему в категорию, за которой пользователь ведёт наблюдение: сработало мгновенное уведомление, письмо отправлено через 10 минут.
Создал ещё одну новую тему в категории «песочница», за которой не ведётся наблюдение. Ждал 15 минут.
Переместил тему в категорию, где пользователь настроен на «наблюдение за первым постом»: ничего не происходит, никогда.
(Самостоятельная установка стандартной версии, 3.4.0.beta2-dev (0c019b2e45), все тесты пройдены.)
Возможно, дело в моём процессе, но я не могу представить, что именно. Не могло ли функциональное решение, реализованное в 2018 году, снова перестать работать?
Кстати, добавление тега к существующей теме должно отправлять уведомление всем, кто следит за первым сообщением для этого тега.
Я только что протестировал это на своём тестовом сайте (3108e3a6b6), и всё ещё работает корректно.
Только для проверки: вы в какой-то момент меняли административную настройку disable tags edit notifications? (А также disable category edit notifications для версии с категориями).
Я забыл, что такие настройки существуют. Мне кажется, когда я их отключил, я думал только об уведомлениях вроде «администратор добавил тег или изменил категорию вашей темы», а не о действиях вроде «Слежение» или уведомлениях «Только первый пост».
Кажется, всё ещё могут быть некоторые несоответствия: например, слежение за категорией, похоже, игнорирует настройку disable category edit modifications, тогда как «Только первый пост» — нет. В качестве искупления я проведу более тщательное тестирование и свяжусь с ещё парой человек, которых я ранее упоминал по этому вопросу.
(Кстати, @sam в какой-то мере подтвердил мой вывод )
Но спасибо @JammyDodger за то, что спасли меня от ещё нескольких часов возни со скриптами Rails. Следующим шагом мне было бы продать диван и нанять @pfaffman за помощь.