이 문제에 대해 고민하며 chat.postMessage Slack API 문서를 읽어보았는데, 내 긴 설명을 훨씬 더 간단한 것으로 정리할 수 있을 것 같습니다.
watch만 follow와 달리 어떤 메커니즘을 통해 스레드 응답을 선택할 수 있는지 아직 파악 중입니다. 아니면 @david, mute thread watch follow 우선순위를 가진 새로운 thread 규칙 필터를 도입하고, trigger_notification을 통해 규칙을 전달하여 규칙에 민감한 동작을 활성화하는 방식은 어떻게 생각하시나요?
-
watch가 스레드로 설정되어 있는 경우(또는thread규칙이 정의된 경우), Slack 채널에 새 게시물 알림을 보낼 때 해당 게시물 토픽에 Slackts가 연결되어 있다면, Slack에서 제공된ts값을thread_ts로 설정하여 해당 Slack 스레드에 게시물을 게시합니다. -
Slack 채널에 새 게시물 알림을 보낼 때, 해당 게시물 토픽에
ts가 연결되어 있지 않다면, 토픽에 대한 반환된 응답의ts를 저장합니다(이렇게 하면watch가 스레드로 설정되어 있을 경우 해당 토픽의 향후 게시물들을 스레드로 묶을 수 있습니다). -
post thread :thread_url명령을 사용할 때, 생성되는 토픽에 스레드ts를 저장합니다. 이 값은 스레드watch규칙에서만 사용됩니다.
현재 제 생각과 우려 사항은 다음과 같습니다:
-
규칙별로 스레드에 게시할지 여부를 어떻게 결정할 것인가. 현재로서는 새로운 필터를 추가하는 것이 가장 쉬워 보이지만, 제가 무언가를 놓치고 있는 것일 수도 있습니다.
-
원래의 Slack 게시물 URL과 스레드 ID를 전사(transcript) 흐름을 통해 전달하는 부분이 현재 가장 불분명합니다. 게시물을 저장할 때까지 유지하기 위해 어딘가에 제공자별(provider-specific) 스레드 ID를 추가해야 할 것 같습니다. Slack
ts에 대해서만 구현할 계획이지만, 아마도 스레드를 지원하는 채팅 통합은 Slack만이 아닐 것입니다. -
게시물을 위해 Slack
ts를 일반적인DiscourseChat커스텀 스레드 필드가 아니라 Topic의 Slack 전용 커스텀 필드에 저장해야 한다고 생각합니다.