discourse-chat-integration プラグインを使用した Slack 通知の設定

残念ながら、現時点ではそのどちらのこともできません。

「いいね!」 2

こんにちは、現在設定を進めていますが、インターフェースが変更されたかどうかはわかりません。これらのスコープは、Bot Token Scopesの下で設定するのでしょうか、それともUser Token Scopesの下で設定するのでしょうか?

よろしくお願いいたします。

「いいね!」 1

これらの機能は、Zapier 統合を使用すればどちらも実現可能です。理想的ではありませんが、このプラグインの回避策として検討していたため、共有させていただきました。

「いいね!」 1

こんにちは!

このスレッドで説明されている通りプラグインを設定しようとしましたが、トランスクリプトを投稿しようとすると、Slack ボットから以下のメッセージしか返ってきません:

“トランスクリプトを読み込んでいます…”

私の 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 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

@Vincenzo_Lomonaco さん、確認させてください。おっしゃる通り、プラグイン自体が(ルール作成時など)チャンネルにボットを追加するということでしょうか?

確かに、Slack の設定側では多くのことが変更されたようです。私は chat:write を追加しましたし、chat:write.customize も追加しました。

Slack API を通じて作成した後、ワークスペース設定の「アプリ」セクション内でアプリをチャンネルに追加する必要があるかどうかは明確ではありませんでした。私の場合はチャンネルを選択しました。

最後に、Slack のアプリ設定ページで「表示情報」を追加する必要があるかどうかについても混乱していました。追加しましたが、これは Slack アプリディレクトリや Slack の左側の「最近のアプリ」で使用される情報のようです。Discourse のボットメッセージ用に入力した画像 URL は機能していないようですが、ボットの名前は機能しています。

ありがとうございます!全体的に、進捗状況には非常に満足しています。

「いいね!」 1

@thedavidprice さん、こんにちは。

いいえ、ボットを関心のあるチャンネルに手動で追加する必要があります(少なくともトランスクリプトを投稿するためには)!Slack のボットとのプライベート会話で、以下の手順で行えます:「会話設定」>「このアプリをチャンネルに追加」

「いいね!」 1

ご協力ありがとうございます。あなたの投稿と私のテストに基づき、ガイドを更新しました。/discourse post スラッシュコマンドが機能するためには、Bot Token Scopes の設定に chat:write.customize 権限を追加する必要があることを確認しました。

ボットが自動的にチャンネルに参加できるようにするには 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 に置き換えられ 廃止された と考えています。

また、Discourse のユーザーに合わせるためにメッセージの author_nameauthor_iconカスタマイズ しているため、chat:write.customize必要 のようです。

users:read*:history のスコープは、トランスクリプト投稿のためにのみ使用されます。多くの権限が必要に見えるかもしれませんが、根本的に Discourse がトランスクリプトを作成するにはチャットの履歴へのアクセスが必要です。もしこれらの権限を付与したくない場合は、それらをスキップしてトランスクリプト投稿なしで継続することも全く問題ありません。

「いいね!」 3

スラッシュコマンドを使用すると、次のエラーが発生します:/hub がエラー "dispatch_failed" で失敗しました

(私たちは /discourse の代わりに /hub を使用しています)

アプリをチャンネルに追加することはできました。Discourse から Slack へのテスト投稿も送信できましたが、/ コマンドの設定がうまくいきません。トラブルシューティングのご協力をお願いします!

Slack アプリに追加した権限を確認してください。私が最後に設定を試した際、ガイドのステップ 5 と 6 で指定されたすべての権限をアプリのスコープに追加する必要がありました:

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

これで問題が解決しない場合は、お知らせください。

「いいね!」 1

正しい権限を持っていると思います。Bot Token Scopes の設定のスクリーンショットを以下に示します。

どうお考えですか?残念ながら、別の問題が発生しているようです。

「いいね!」 2

セットアップガイドを再度確認し、/hub スラッシュコマンドを作成しました。アプリを追加したチャンネルであれば、/hub post の呼び出しは正常に動作しています。私が使用している権限は、あなたが投稿したスクリーンショットと同じものです。

ガイドのステップ 8 を完了したことを確認してください。そのセクションでは、以下のように指示されています。

<kbd>Interactivity & Shortcuts</kbd> ページに移動し、<kbd>Interactivity</kbd> セクションを <kbd>On</kbd> に切り替えて有効化し、「Request URL」の下に以下の URL を入力します。

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

また、Discourse から /hub post コマンドを実行しようとしている Slack チャンネルへ投稿できるかも確認することをお勧めします。

それでも動作しない場合は、お知らせください。

「いいね!」 1

確認しましたが、そのステップは正しく行ったと思います。

以下はスクリーンショットです。

エラーはステップ 7 に関連する部分で発生していると考えています。

以下が私の設定です。

Slack でスラッシュコマンドを使用しようとしたときに表示されるのは以下の通りです。

はい、その部分は完全に機能しています。

いいえ、まだ動作しません。:slightly_smiling_face:

「いいね!」 1

スクリーンショットの「編集コマンド」セクションにある「リクエスト URL」が HTTPS を使用していません。それが問題の原因かもしれません。

「いいね!」 2

それです、ありがとうございます!!!

「いいね!」 1

このガイドの手順に従い、Discourse/Slack 統合は(ほぼ)動作するようになりました。このプラグインの素晴らしい仕事に感謝します!ただ、3 つの質問と観察点があります。

親カテゴリを購読しても、サブカテゴリのメッセージには購読できない

これは設計上の意図かもしれませんが、最初は分かりませんでした。親カテゴリの下に子カテゴリがある構成です。親カテゴリに対して「すべての投稿と返信」をフィルタリングするルールを作成すれば、子カテゴリも自動的に含まれるだろうと考えていました。しかし、それは機能しなかったため、多くの子カテゴリそれぞれに対して個別にルールを作成する必要がありました。いくつかの親カテゴリの下に多数のサブカテゴリを持つ Discourse インストールのセットアップを簡素化するための素晴らしい機能リクエストになるでしょう。

単一のルールで全カテゴリを購読できない

これについては矛盾する情報も見つかりましたが、古い Slack プラグインでは可能だったと推測しています。しかし、サイト内のすべてのカテゴリからのすべての投稿と返信を購読する単一のルールを作成する方法が見つかりませんでした。すべてを単一のシンプルなルールで行いたいと考えていましたが、上記の点も含め、Discourse プラットフォーム全体と Slack チャンネル間の基本的なブリッジを構築するだけで、単一のルールではなく 31 個の個別ルールが必要でした。何か見落としている可能性はありますが、これも機能リクエストとしてご検討ください。

Discourse 投稿コマンドが 1 つのチャンネルでのみ動作する

これはおそらく私のミスだとは思いますが、原因が分かりません。関連するスレッドをすべて確認しましたが、お手伝いいただけると幸いです。Slack アプリの権限を確認し、100% 問題なく動作していることを確認しました。ただし、それは私の Slack チーム内の 1 つのチャンネルでのみです。

/discourse post 20

アクセストークンの設定と動作は問題ないことが分かっています。しかし、他のすべてのチャンネルでは、上記のコマンドは以下のように出力するだけです。

Loading the transcript...

それ以上何も表示されません。これらはすべて公開チャンネルであり、設定のあらゆる組み合わせを試してみました。動作するチャンネルは今日新しく作成したものでしたが、テスト用に別の新しいチャンネルを作成したところ、動作しませんでした。トラブルシューティングの着手点すら分かりません。Discourse に存在するログは以下のものだけだと認識しています。

./launcher logs app

しかし、そこには何も表示されていないようです。どの設定を見落としていたために投稿が 1 つのチャンネルでのみ動作するようになったのか、また、この問題をデバッグするにはどこを確認すればよいでしょうか?