질문을 제대로 이해했다면: 아니요, 아무것도 “나쁘게” 만들지 않습니다 — 새로운 알림을 Slack으로 보내는 것을 결코 방해하지 않도록 설계되어 있어 안전합니다. 다만, 통합 기능이 스레드를 알고 있다면 채널 대신 해당 스레드로 보내는 것뿐입니다. 어떤 이유에서든 스레드 컨텍스트를 인식하지 못하면 규칙에 설정된 대로 채널로 보내게 됩니다.
"스레드 답변이 있는 모든 게시글"은 다음을 의미합니다:
기존 주제에 새 게시글이 추가될 때:
해당 주제에 스레드 ID가 저장되어 있다면, 이를 사용하여 스레드를 게시합니다.
해당 주제에 스레드 ID가 저장되어 있지 않다면, Slack으로 알림을 게시한 후 해당 새 Slack 게시글의 스레드 ID를 주제의 추가 게시글에 사용합니다. 그 시점부터 스레딩이 시작됩니다.
새 주제가 Slack에 게시되면, 결과적으로 생성된 스레드 ID를 저장하여 해당 주제에 대한 추가 게시글이 Slack에 스레드 응답으로 보내지도록 합니다.
이를 "단순히 watch처럼 동작하되, 게시할 스레드를 알고 있다면 대신 해당 스레드로 게시한다"고 요약할 수 있습니다.
또한, “transcript” 기능을 사용하여 Slack 내용을 Discourse의 새 주제로 게시할 때, 어떤 규칙 설정과도 무관하게 항상 스레드 ID를 저장하려 시도합니다. 이를 통해 thread 규칙이 이미 존재하거나미래에 추가되더라도, Discourse의 새 주제에 대한 답변 게시가 적절한 Slack 스레드에 공지되도록 합니다.
기존 규칙은 bin/rails c로 입력하면 변경할 수 있을 것으로 생각하지만, 의도적으로 어떤 채널을 스레딩하고 어떤 채널은 하지 않기로 선택한 제 라이브 사이트에서 그렇게 하고 싶지 않습니다. 또한 Ruby를 배운 지가 너무 오래되어 포럼에서 도움을 주려 무작정 Ruby 코드를 입력했다가 여러분의 화면에서 터져버릴까 봐 걱정됩니다. 아마 DiscourseChat::Rule.where(로 시작할 것 같지만, 그 이상은 큰 도움이 되지 못할 것 같습니다. 죄송합니다!
@sunjam 참고로, 이 기능이 바람직하고 가치 있다고 평가해 주셔서 감사드립니다! (솔직히 저는 슬랙 스레드를 그다지 좋아하지는 않지만, 저보다 스레드를 더 유용하게 생각하는 다른 사람들을 위해 이 작업을 진행했기 때문에 더더욱 그렇습니다!)
UI에 모든 watch 규칙을 thread 규칙으로 변환하는 버튼을 추가하는 것이 합리적일 것 같습니다. 하지만 저는 실제로 이를 구현할 만큼 충분한 지식을 가지고 있지 않고, 저 자신도 이 기능을 사용하지 않을 것입니다. 저는 주로 백엔드 개발을 하다가 discourse에 살짝 손을 대고 있는 수준이라, 이런 버튼을 추가하는 PR을 리뷰하는 데에도 큰 도움이 되지 못할 것입니다. 누군가 이 기능을 구현하고 싶어 한다면, 제가 할 수 있는 것은 그저 열정적으로 응원하는 정도입니다.
@sunjam 참고로, 내 슬랙 통합 규칙 중 대부분을 watch에서 thread로 옮기기로 결정한 후, 그 고충을 잘 이해하게 되었습니다. 정말 눈앞이 하얘질 정도였고, 끝낼 수 있어서 다행이었습니다. 그래서 제 작업 방식에 대해 다른 접근을 했어야 했는지는 잘 모르겠지만, 변환에 필요한 노력이 결코 적지 않다는 점은 결코 과소평가하지 않습니다. 적어도 일회성 비용이니까요.
모든 일반 watch 규칙을 thread 규칙으로 변환할 수 있는 한 줄짜리 rails 콘솔 명령어가 있다면, 아직까지 찾지 못했습니다—있었다면 그걸 사용했을 텐데, 그 후 watch 규칙으로 유지하고 싶었던 몇 가지 규칙만 다시 변환했을 겁니다.
Discourse가 게시하는 메시지는 다른 Slack 스레드와 다르게 알림을 보내지 않습니다. 하지만 이 문제는 Discourse 자체를 벗어나 Slack의 스레드 알림 작동 방식과 관련된 것입니다. Slack의 스레드 알림 규칙이 훌륭하지 않다고 생각하지만, Slack은 무작위 사람들이 개선 사항을 기여할 수 있는 오픈 소스 프로젝트가 아닙니다. Slack 스레드에 참여하거나 구독해야 해당 스레드에 추가된 게시물의 알림을 받을 수 있습니다. 적어도 이번 주에는 그런 규칙입니다. Slack에 스레드가 처음 도입되었을 때 채널 알림 규칙을 따랐던 것 같습니다. Slack에서 스레드 알림이 채널 알림을 따르도록 설정할 수 있는 옵션을 찾을 수 없는데, 이로 인해 업무에서 중요한 정보를 놓치게 되어 정말 답답합니다.
저는 Slack의 스레드 구현 방식이 너무 마음에 들지 않아, 이 기능을 구현한 사람이 바로 저라는 사실은 정말 아이러니합니다. 하지만 저는 소수 의견이라고 생각하며, Slack의 스레드를 진정으로 좋아하는 다수 사용자들이 Discourse를 더 친근하게 느끼도록 하기 위해 이 기능을 구현했습니다.
설명해 주셔서 감사합니다. ThreadExample에 참여하는 사람들이 스레드 형식의 답변을 볼 수 있을 것 같고, 그렇게 작동하는 것만으로도 충분히 좋습니다. 어쨌든, 이는 Slack 쪽에서 혼란을 줄이는 데 매우 유용한 옵션이며, 다른 채팅 통합 서비스들도 이 개념의 유사한 변형을 도입하는 데 영감을 줄 수 있기를 바랍니다!
슬랙에서 Discourse 스레드 동기화 기능을 활성화해 주셔서 감사합니다. 한 가지 문제를 발견했는데, 링크를 한 줄로만 붙여넣어 onebox로 게시하면 슬랙 스레드의 게시된 메시지 안에서 해당 링크가 완전히 사라지고 빈 줄만 남습니다. 제 경우엔 링크가 두 줄의 텍스트 사이에 위치해 있었는데, 이 두 줄의 텍스트는 정상적으로 게시되었습니다.