Set up Slack notifications using the discourse-chat-integration plugin

안타깝게도 현재 그 두 가지 모두 불가능합니다.

2개의 좋아요

안녕하세요, 현재 이 설정을 진행 중인데, 인터페이스가 변경되었는지 확실하지 않습니다. 이 스코프들은 Bot Token Scopes 아래에 설정해야 하는지, 아니면 User Token Scopes 아래에 설정해야 하는지 궁금합니다.

감사합니다.

1개의 좋아요

이 두 가지는 모두 Zapier 통합을 통해 가능해야 합니다. 이상적이지는 않겠지만, 이 플러그인에 대한 대안으로 고려해 보다가 공유해 보았습니다.

1개의 좋아요

안녕하세요!

이 스레드에 설명된 대로 플러그인을 설정해 보았지만, 전사(transcript)를 게시하려고 하면 슬랙 봇에서 다음 메시지만 표시됩니다:

“전사를 불러오는 중…”

저희 Discourse는 “discourse.group” 서브도메인에 호스팅되어 있습니다. 에러 로그에서 확인한 내용은 다음과 같습니다:

/var/www/discourse/plugins/discourse-chat-integration/lib/discourse_chat/provider/slack/slack_command_controller.rb:86:in `block in process_post_request’

/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:252:in `with_connection’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:61:in `with_connection’

/var/www/discourse/lib/scheduler/defer.rb:89:in `do_work’

/var/www/discourse/lib/scheduler/defer.rb:79:in `block (2 levels) in start_thread’

이 문제를 어떻게 해결할 수 있는지 아시나요?

오류가 발생한 위치를 보면, 사이트 설정 페이지에 입력한 Slack 인증 정보가 올바르지 않은 것 같습니다. 채팅 통합(Chat Integrations) 설정을 찾으려면 관리자/설정 페이지로 이동한 후 왼쪽 메뉴를 맨 아래까지 스크롤하세요. 목록의 맨 아래에 “Chat Integrations” 버튼이 표시됩니다.

해당 설정 페이지에서 다음 설정이 올바른지 확인해 주세요:

  • chat integration discourse username
  • chat integration slack access token
  • chat integration slack incoming webhook token

이로 인해 문제가 해결되지 않는다면 알려 주세요. 사이트가 저희에 의해 호스팅되고 있으므로, 무엇이 잘못되었는지 살펴볼 수 있습니다.

2개의 좋아요

오류 해결 방법:

1) DiscourseChat::ProviderError

2) {\"ok\":false,\"error\":\"not_in_channel\"}

해답을 찾기가 아쉽게도 어려웠기 때문에 더 명확하게 설명하고자 합니다. 이 안내문 작성 이후 Slack 앱 생성 과정이 조금 변경되었습니다. 또한 봇을 Slack 채널에 실제로 통합하는 과정에도 설정이 조금 더 필요한 것 같습니다.

Slack 워크스페이스에서 봇에게 @discourse로 DM을 보내거나 /discourse 명령어를 실행하여 앱이 정상 작동하는지 확인했습니다. 그러나 Discourse 플러그인 설정에서는 오류가 발생하여 채널을 설정하거나 테스트 메시지를 보낼 수 없었습니다.

구현 방법

수정: 아래 답변들에 업데이트된 정보가 있습니다. 2020년 4월 6일 기준으로 추가된 단계를 여기에도 반영해 보았습니다. 필요에 따라 댓글을 달거나 수정해 주세요. - dp

  1. 봇 권한: /discourse 슬래시 명령어가 작동하려면 chat:write.customize 권한을 추가해야 합니다. chat:write도 함께 추가했습니다.
  2. Slack에서 채널을 생성해야 합니다. 그런 다음 해당 채널에서 /discourse 명령어를 실행하거나 Discourse에서 규칙을 설정해야 합니다.
  3. 원하는 채널에 봇을 수동으로 추가해야 합니다(적어도 트랜스크립트를 게시하려면!). Slack에서 봇과의 개인 대화에서 "대화 설정" > "이 앱을 채널에 추가"를 통해 수행할 수 있습니다.
  4. 그리고 중요하게도, discourse 봇 사용자를 채널에 추가해야 합니다. 일반적인 채널의 “사용자 추가” 또는 “앱 추가” 버튼으로는 작동하지 않았습니다. 하지만 채널 내에서 "@discourse"에게 메시지를 보내는 방식으로 성공했습니다. → 이후 Slack에서 "@discourse는 이 채널에 없습니다. 추가하시겠습니까?"라는 메시지가 표시되었습니다.
  5. 그런 다음 플러그인 설정에서 테스트 메시지를 성공적으로 보낼 수 있었습니다 :rocket:

참고: Slack 앱 설정에서 앱 이름을 @discourse로 설정했습니다.

5개의 좋아요

@thedavidprice와 @simon에게 훌륭한 지원을 해주셔서 감사합니다!

문제를 해결했습니다! 모든 것이 정상적이었지만, 봇이 채널에 추가되어야 전사본을 게시할 수 있었습니다. 위의 설명 목록에 이 점을 추가해 주실 수 있을까요?

또한 chat:write:bot 권한 범위가 더 이상 사용 불가능하다는 것을 알게 되었습니다. 이제 chat:write를 선택해야 합니다!

4개의 좋아요

Hi @Vincenzo_Lomonaco, 확인차 질문드리는데, 플러그인 자체가 이제 봇을 채널에 추가하게 된다는 말씀이신가요? (예: 규칙을 생성할 때)

실제로 Slack 설정 쪽에서 많은 것이 변경된 것 같습니다. chat:write를 추가했음을 확인합니다. 또한 chat:write.customize도 추가했습니다.

Slack API를 통해 앱을 생성한 후, 워크스페이스 설정의 Apps 섹션에서 앱을 채널에 추가해야 하는지 명확하지 않았습니다. 제 경우 채널을 선택했습니다.

마지막으로, Slack 앱 설정 페이지의 "Display Information"을 추가해야 하는지에 대해서도 혼란이 있었습니다. 해당 정보를 추가했는데, 이는 Slack 앱 디렉터리와 Slack 왼쪽 열의 "Recent Apps"에 사용되는 정보인 것 같습니다. Discourse에서 봇 메시지에 입력한 이미지 URL은 작동하지 않는 것으로 보입니다. 봇 이름은 정상적으로 작동하고 있습니다.

다시 한번 감사합니다! 전반적으로 진행 상황에 매우 만족하고 있습니다.

1개의 좋아요

안녕하세요 @thedavidprice,

아니요, 해당 채널에 봇을 수동으로 추가해야 합니다(최소 전사본을 게시하려면)! Slack에서 봇과 1:1 대화를 통해 "대화 설정" > "이 앱을 채널에 추가"로 수행할 수 있습니다.

1개의 좋아요

해당 작업을 해주셔서 감사합니다. 여러분의 게시글과 제 테스트 결과를 바탕으로 가이드를 업데이트했습니다. /discourse post 슬래시 명령어가 작동하려면 chat:write.customize 권한을 Bot Token Scopes 설정에 추가해야 한다는 점을 확인했습니다.

봇이 채널에 자동으로 참여하도록 하려면 channels:join 스코프만 있으면 충분할 것 같았지만, 테스트 결과 그렇게 작동하지 않았습니다. 현재 가이드의 15단계에 나와 있는 방법이 봇을 채널에 추가하는 가장 쉬운 방법인 것 같습니다. 더 나은 방법이 있다면 알려주세요.

가이드의 현재 상태가 다른 사용자에게도 정상적으로 작동하는지 확인되는 대로 며칠 내에 이 주제 내의 답변들을 정리하겠습니다.

1개의 좋아요

여러분, 안녕하세요. 보안 제한이 좀 더 엄격한 환경에 맞게 이 설정을 구성하려고 합니다. OP에 문서화된 필수 스코프와 현재 허용되는 스코프를 비교해 본 결과, 다음과 같은 상황이 확인되었습니다:

chat:write # ? 불분명하지만, chat:write:bot은 OK
chat:write.customize ? 불분명하지만, chat:write:bot은 OK
users:read # X 거부됨
channels:history X 거부됨
groups:history # OK, 신중하게 허용됨
im:history # OK, 허용됨

만약 앱이 다음 스코프만 구성되었다면, 어떤 기능이 정상적으로 작동하고 어떤 기능이 깨질까요?

chat:write:bot
groups:history
im:history

예를 들어, 대화 기록(트랜스크립트)은 포기해도 괜찮습니다…

3개의 좋아요

처음 이 기능을 구현한 지 좀 시간이 지났는데, 그 사이 Slack의 스코프가 많이 변경된 것 같습니다. OP의 위키를 최신 상태로 유지해 주시는 분들이 계신 것 같아 정말 좋습니다! :heart_eyes:

chat:write:bot과 chat:write:user가 chat:write로 대체되어 비추천(deprecated) 처리된 것으로 보입니다.

Discourse 사용자와 일치시키기 위해 메시지의 author_name과 author_icon를 커스터마이즈하기 때문에 chat:write.customize가 필요한 것 같습니다.

users:read와 *:history 스코프는 전사(transcript) 게시에만 사용됩니다. 권한이 많다고 느껴지실 수 있습니다! 하지만 근본적으로 Discourse는 전사를 만들기 위해 채팅 히스토리에 대한 접근 권한이 필요합니다. 이러한 권한을 부여하고 싶지 않으시다면, 해당 권한을 건너뛰고 전사 게시 없이 계속 사용하셔도 전혀 문제가 되지 않습니다.

3개의 좋아요

슬래시 명령어를 사용했을 때 다음 오류가 발생합니다: /hub failed with the error "dispatch_failed"

(우리는 /discourse 대신 /hub를 사용합니다)

채널에 앱을 추가하는 것까지는 성공했고, Discourse에서 Slack으로 테스트 게시물을 보내는 것도 가능했습니다. 하지만 / 명령어는 어떻게 사용하는지 아직 파악하지 못했습니다. 문제 해결을 도와주시면 감사하겠습니다!

Slack 앱에 추가한 권한을 확인해 주실 수 있나요? 마지막으로 이 설정을 시도했을 때, 가이드의 5단계와 6단계에 있는 모든 권한을 Apps 스코프에 추가해야 했습니다:

  • chat:write
  • chat:write.customize
  • users:read
  • channels:history
  • groups:history
  • im:history

이렇게 해도 문제가 해결되지 않으면 알려주세요.

1개의 좋아요

제 생각에는 올바른 권한이 있는 것 같습니다. Bot Token Scopes 설정에 대한 스크린샷을 첨부합니다.

어떻게 생각하시나요? 불행히도 이는 다른 문제가 있다는 것을 의미합니다.

2개의 좋아요

설정 가이드를 다시 확인하고 /hub 슬래시 명령어를 생성했습니다. 앱이 추가된 채널에서는 /hub post를 호출할 때 문제가 없습니다. 게시하신 스크린샷과 동일한 권한을 사용하고 있습니다.

가이드의 8단계를 완료했는지 확인해 주실 수 있을까요? 해당 섹션에서는 다음을 안내하고 있습니다:

Interactivity & Shortcuts 페이지로 이동하여 Interactivity 섹션을 On으로 전환하여 활성화하고, “Request URL” 아래에 이 URL을 입력하세요.

<your-discourse-url>/chat-integration/slack/interactive

또한, /hub post 명령어를 실행하려는 Slack 채널로 Discourse에서 게시물을 보낼 수 있는지 확인하는 것도 도움이 될 수 있습니다.

여전히 문제가 해결되지 않으면 알려 주세요.

1개의 좋아요

확인해 봤는데, 해당 단계를 따랐다고 생각합니다.

스크린샷을 첨부합니다.

다만, 오류는 7단계와 관련된 부분에서 발생하는 것 같습니다.

제 설정은 다음과 같습니다.

Slack에서 슬래시 명령어를 사용할 때 이렇게 표시됩니다.

네, 그 부분은 완벽하게 작동하고 있습니다.

아니요, 작동하지 않습니다. :slightly_smiling_face:

1개의 좋아요

스크린샷의 Edit Command 섹션에 있는 "Request URL"이 HTTPS를 사용하지 않고 있습니다. 이것이 문제일 수 있습니다.

2개의 좋아요

그렇게 하니까 됐어요, 감사합니다!!!

1개의 좋아요

이 가이드의 설명을 따라 Discourse/Slack 연동을 (거의) 설정했습니다. 이 플러그인 정말 잘 만들었네요! 세 가지 질문/관찰 사항이 있습니다.

부모 카테고리를 구독해도 하위 카테고리의 메시지를 구독할 수 없음

이것은 의도된 설계일 수 있지만, 처음에는 명확하지 않았습니다. 하위 카테고리가 있는 부모 카테고리가 있습니다. 부모 카테고리에 대해 "모든 게시물 및 답변"을 필터링하는 규칙을 만들면 각 하위 카테고리가 암묵적으로 포함될 것으로 기대했습니다. 그러나 이것은 작동하지 않았으며, (많은 수의) 하위 카테고리 각각에 대해 규칙을 만들어야 했습니다. 이는 몇 개의 부모 카테고리 아래에 많은 하위 카테고리가 있는 Discourse 설치 환경에서 설정을 단순화할 수 있는 훌륭한 개선 요청이 될 것입니다.

단일 규칙으로 모든 카테고리를 구독할 수 없음

이 부분에 대해 모순되는 정보를 찾았고, 이전 Slack 플러그인에서는 이것이 가능했을 것으로 추측합니다. 그러나 사이트의 모든 카테고리에서 모든 게시물과 답변을 단순히 구독하는 단일 규칙을 만드는 방법을 찾을 수 없었습니다. 이를 하나의 간단한 규칙으로 처리하기를 희망했습니다. 그러나 이 점과 위 항목으로 인해, 제 전체 Discourse 플랫폼과 Slack 채널 간의 기본적인 브릿지를 설정하는 데 단일 규칙 대신 31개의 별도 규칙이 필요했습니다. 제가 놓친 것이 없는 한, 이것도 개선 요청으로 고려해 주십시오.

Discourse post 명령어가 하나의 채널에서만 작동함

이것은 아마도 제 실수일 수 있지만, 어떻게 해결해야 할지 모르겠습니다. 관련 모든 스레드를 확인했고 도움이 필요합니다. Slack 앱의 권한을 확인하고 재확인했으며, 이것이 100% 완전히 작동하는 것을 확인할 수 있습니다… 단 하나의 채널에서만요!

/discourse post 20

즉, 액세스 토큰이 올바르게 설정되어 정상적으로 작동한다는 것을 알고 있습니다. 그러나 Slack 팀의 다른 모든 채널에서 위의 명령어는 단순히 다음을 출력합니다.

Loading the transcript...

그리고 그 이상은 없습니다. 이들은 모두 공개 채널이며, 설정의 모든 조합을 시도해 보았습니다. 작동하는 유일한 채널은 오늘 새로 생성된 것이지만, 테스트를 위해 다른 새 채널을 만들었을 때는 작동하지 않았습니다. 이 문제를 어떻게 시작해야 할지 모르겠습니다. Discourse에서 제가 아는 유일한 로그는

./launcher logs app

이지만, 거기에 아무것도 없는 것 같습니다. 어떤 설정을 놓쳤기 때문에 하나의 채널에서만 게시가 작동하는 것이며, 이 문제를 디버깅하려면 어디를 봐야 합니까?