Я обдумывал это и изучил документацию по API chat.postMessage в Slack, и, думаю, могу свести свою простыню текста к чему-то гораздо более простому.
Только правило watch, а не follow, имеет возможность выбирать потоковые ответы, хотя механизм, который я использую, я пока пытаюсь определить. Или же, @david, что вы думаете о новом фильтре правил thread с приоритетом mute thread watch follow, и о передаче этого правила через trigger_notification для включения поведения, чувствительного к правилам?
-
Если
watchнастроен на использование потоков (или определено правилоthread), при отправке уведомления о новом посте в канал Slack, если тема поста имеет связанный с нейtsв Slack, опубликовать сообщение в этом потоке Slack, установивthread_tsравным значениюts, полученному от Slack. -
При отправке уведомления о новом посте в канал Slack, если тема поста не имеет связанного с ней
ts, сохранить возвращённое значениеtsдля этой темы (чтобы будущие посты по этой теме могли быть объединены в поток, еслиwatchнастроен на потоки). -
При использовании команды
post thread :thread_urlсохранитьtsпотока в созданной теме, который будет использоваться только правиламиwatchдля потоков.
Вот мои текущие мысли и опасения:
-
Как определить, нужно ли публиковать в потоках на основе каждого правила. На данный момент мне кажется самым простым новым фильтром, но возможно, я что-то упускаю.
-
Передача исходного URL сообщения в Slack и идентификатора потока через поток транскрипции — это то, что сейчас кажется мне наиболее непрозрачным. Похоже, мне действительно нужно добавить идентификатор потока для каждого провайдера в каком-то месте и сохранить его до сохранения поста. Я бы реализовал это только для
tsв Slack, но, вероятно, это не будет единственной интеграцией чата с потоками. -
Для публикации, думаю, мне нужно хранить
tsSlack в пользовательском поле, специфичном для Slack, в теме, а не в общем пользовательском полеDiscourseChatдля потока.