web-dev-qa-db-ja.com

リアルタイムメッセージングボットユーザーとしてSlackチャネルに参加する方法

channels.join is not allowed for bot users。 RTMを使用するボットに、ボット統合ページにリストされているチャネル以外のチャネルをリッスンしてもらいたい。

ボット統合ページでチャネルを変更する方法がわかりません。

bot integration page

これはボットの制限にすぎませんか、それともここで基本的な何かが欠けていますか?

29
Dustin Wyatt

私は同じ問題を抱えていて、ボットが特定のチャンネルのみを聞いている理由がわかりませんでした。

ボットは、ユーザーが各チャネルに招待する必要があります。 Slackアプリの必要なチャネル内でこのコマンドを実行してください。

/invite @<your_bot_name>

チャネルに入ると、イベントを聞くことができるはずです。

50
Matt Gifford

導入されたバグのため、2017年5月の時点でもこれはボットの制限です-paulhammodの回答を参照 https://github.com/slackapi/node-slack-sdk/issues/26 。ボットを追加する正しい方法は、@ MattGiffordが指摘したスラッシュコマンド_/invite @<bot.user> <channel_name>_です。

ただし、@ nafgは興味深い回避策を導入しました。アカウントの個人用API_TOKENを生成した場合は、それを使用してボットを招待できます。たとえば、pythonでは、次のように実行できます。

import slackclient sc = slackclient.SlackClient(<PERSONAL_API_TOKEN>) sc.api_call('channels.invite', channel=<channel_id>, user=<user_id>)

これにより、ボットがチャンネルに招待されます。ボットを新しいチャネルに自動的に招待する場合は、 https://api.slack.com/rtm にあるAPIでイベントリスナーを確認できます。

API_TOKENをその目的で使用することを許可する限り、便利ではありませんが、必要に応じて機能するようです。

3
Dragoe

私は実際にこれを試していませんが、実際のユーザー(例:自分)の代わりにchannels.joinを呼び出してから、そのユーザーとしてchannels.inviteを呼び出して、そのチャネルにボットを追加できると思います。 。私はそれが許可されることを期待しており、ボットがそのチャネルと対話することを許可します。これにより、すべてを自動化できます。

0
nafg