Темы с одинаковым названием, созданные из письма

Здравствуйте, эксперты Discourse,

У нас есть скрипты, которые отправляют письма в категории Discourse для автоматического отслеживания событий проекта, таких как результаты тестирования, новые проблемы пользователей и т. д. Я наивно полагал, что если два письма с одинаковой темой (например, «linux64 testing») придут, они автоматически попадут в одну тему; однако, похоже, что для каждого такого письма создается отдельная тема. (Ответ на тему по почте, как и следовало ожидать, сохраняет её в рамках той же темы).

Проведя небольшой поиск по форумам, я наткнулся на упоминания настроек «Разрешить темы с идентичными, дублирующимися заголовками» и «Разрешить темы с идентичными, дублирующимися заголовками, если категория отличается». К моему удивлению, ни одна из этих настроек не включена на нашем сайте, однако у нас есть темы с одинаковыми заголовками, созданные этими скриптами. Неужели эти настройки применяются только к темам, созданным через веб-интерфейс, а не через электронную почту?

В любом случае, есть ли способ настроить сайт Discourse так, чтобы письма, отправленные в определенную категорию с определенной темой, автоматически объединялись в одну тему, а не создавали отдельную тему для каждого сообщения? (Я понимаю, что это может вызвать небольшую путаницу, если два пользователя случайно отправят темы по почте с идентичными заголовками, но это кажется мне разумным компромиссом).

Спасибо,
-Брэд

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

Если вы не смотрите на сайт, как вы можете узнать, использовался ли уже этот заголовок?

Если вы не просматриваете сайт, как вы узнаете, использовалась ли уже данная заголовок?

Не уверен, что правильно понял ваш вопрос (так как боюсь повторяться), но попробую ответить:

Сценарий, который мотивирует этот вопрос для нашего сайта на Discourse, заключается в том, что посты генерируются скриптами, использующими предсказуемые темы (например, «linux64 testing»), при этом предполагается, что они будут сгруппированы в рамках одной темы. Для таких скриптов не имеет значения, использовался ли уже заголовок, главное, чтобы поведение было следующим: «если тема с таким заголовком уже существует, письмо должно добавить пост в существующую тему, а не создавать новую; если такой темы нет, создать новую тему с этим заголовком».

В более гипотетическом ключе можно представить пользователя, работающего в защищённой среде, где ему запрещено прямое взаимодействие с веб-сайтами, но его системные администраторы отражают содержимое интересующего сайта в его среде для просмотра в режиме только для чтения. Зная тему конкретной дискуссии, такой пользователь мог бы добавлять новые посты в эту тему по электронной почте, даже если у него в почтовом ящике нет сообщения об этой теме, на которое можно было бы ответить.

Дайте знать, если я неправильно понял, о чём вы спрашиваете.

Это очень специфичный случай, требующий изменения всего поведения.

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

Вы рассматривали возможность использования чего-то иного, кроме SMTP, для доставки сообщений?

Мы не рассматривали, но, безусловно, готовы это сделать, если это считается лучшей практикой. Чтобы убедиться, что я правильно понимаю: вы предлагаете, чтобы наши скрипты публиковали сообщения в Discourse, взаимодействуя с сайтом через HTML, как это сделал бы человек? Или сайты Discourse поддерживают API, к которому скрипты могли бы обращаться напрямую? Если у вас есть рекомендации или примеры того, как мы могли бы подойти к этому вопросу, это было бы очень полезно; мы действительно ещё очень новички в администрировании Discourse.

Или же я wondered, не существует ли какого-то другого трюка, который мы могли бы использовать в заголовках электронной почты, чтобы заставить Discourse добавлять их к существующей теме, а не создавать новую. Я предполагаю, что просто указание темы письма как «Re: linux64 testing» недостаточно, и что именно адрес в поле «Reply-to» и/или метаданные заголовков электронной почты определяют, будет ли ответ добавлен к существующей теме или начнётся новая? (В таком случае мы могли бы вручную создать темы для каждой возможной темы скрипта в категории, выяснить, какие метаданные используются, и внедрить их в наш скрипт, но это казалось бы довольно неудобным, если бы уже существовал способ автоматически объединять письма в существующую тему по теме письма, особенно для скриптов, которые со временем могут генерировать новые темы).

Это очень специфичный случай использования, чтобы просить изменить всё поведение.

Возможно, но, если быть честным, в исходном сообщении я лишь спрашивал, существует ли способ достичь того, чего мы хотим, и выражал недоумение, почему у нас создаётся несколько тем с одинаковым заголовком, несмотря на то, что настройка «разрешить дубликаты тем» была снята. Я не смог найти никакой документации, указывающей, что такое поведение является ожидаемым, и думал, что, поскольку Discourse отклоняет письма по самым разным причинам (например, «эта тема письма не похожа на предложение»), мы могли бы получить уведомления об отказе с сообщением «эта тема уже существует в этой категории» (не то чтобы это сделало меня счастливее, но это казалось бы более согласованным с названиями флажков).

Но я также не думаю, что запрос на изменение поведения настолько уж странен: я считаю, что возможность сайтов Discourse принимать публикации по электронной почте — это действительно здорово и мощно. В нашем случае это уже на 80% является хорошим решением для того, чтобы скрипты могли обновлять существующие темы в Discourse. И эта просьба о функции показалась мне похожей на другие, которые я видел на Discourse-meta и которые были реализованы, поскольку она явно полезна (многие проекты имеют скрипты, генерирующие письма) и не кажется мне изначально противоречащей философии Discourse (хотя, опять же, мы новички в администрировании). Это не значит, что это решение очевидно, просто мне не казалось неразумным задать этот вопрос.

Начните здесь

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

Функциональность «входящая почта» (в отличие от «ответ по электронной почте») на данный момент может создавать только новые темы и никогда не будет добавлять сообщения в существующие темы.

Привет @riking и @Stephen,

Мне казалось, что я понял текущее состояние Discourse после ваших комментариев по этому вопросу на прошлой неделе (которые я бы резюмировал так: «по замыслу, дублирующиеся заголовки принимаются при отправке через функцию «email-in», независимо от настройки «разрешить дублирующиеся темы», поскольку неясно, что ещё мог бы сделать сайт»). Но сегодня я запутался, так как наши скрипты получили отбой для некоторых писем со следующим сообщением:

Заголовок уже использовался

Неправильно ли я понял ситуацию, или что-то изменилось на вашей стороне с прошлой недели?

С нашей стороны произошло несколько изменений, которые могли объяснить изменение поведения:

  • Я добавил адрес электронной почты, с которого наши скрипты отправляют письма, в список «известных пользователей» на сайте Discourse, иначе я периодически получал отбои. Поэтому я решил повысить уровень доверия для этого адреса, чтобы обойти проблему (в моих предыдущих сообщениях скрипт действовал как «анонимный пользователь»).

  • Я добавил этого известного пользователя в группу, чтобы разрешить ему создавать темы в категории, которая иначе была ограничена (из-за проблемы, описанной по адресу: Category not accepting "anonymous email" from known users - #13 by BradCray).

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

Если предположить, что на вашей стороне ничего не изменилось, верно ли, что зарегистрированные пользователи подчиняются более строгим правилам в отношении невозможности отправлять темы с дублирующимися заголовками через email, чем анонимные пользователи? И есть ли у этого решения какое-то обоснование? (Я бы в целом ожидал, что возможности зарегистрированного пользователя будут выше, чем у анонимного).

Спасибо за любые разъяснения.