channels.join
is not allowed for bot users。 RTMを使用するボットに、ボット統合ページにリストされているチャネル以外のチャネルをリッスンしてもらいたい。
ボット統合ページでチャネルを変更する方法がわかりません。
これはボットの制限にすぎませんか、それともここで基本的な何かが欠けていますか?
私は同じ問題を抱えていて、ボットが特定のチャンネルのみを聞いている理由がわかりませんでした。
ボットは、ユーザーが各チャネルに招待する必要があります。 Slackアプリの必要なチャネル内でこのコマンドを実行してください。
/invite @<your_bot_name>
チャネルに入ると、イベントを聞くことができるはずです。
導入されたバグのため、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をその目的で使用することを許可する限り、便利ではありませんが、必要に応じて機能するようです。
私は実際にこれを試していませんが、実際のユーザー(例:自分)の代わりにchannels.join
を呼び出してから、そのユーザーとしてchannels.invite
を呼び出して、そのチャネルにボットを追加できると思います。 。私はそれが許可されることを期待しており、ボットがそのチャネルと対話することを許可します。これにより、すべてを自動化できます。