最近、Slack には、ボットが以前よりも多くのことを実行できる機能が追加されました。これは素晴らしい!。何年にもわたって、多くのクラシック スタイルのボットを問題なく RTM API に接続することができました。昨日、新しいスタイルのボットを作成して RTM API に接続し、いくつかの新機能を試してみましたが、できませんでした。
新しいスタイルのボットの作成中に、ボットにさまざまな権限を付与した後、次のようなメッセージが表示されます。
選択したスコープでアプリがトークンを発行できるようにするには、OAuth コードにいくつかの変更を加えて、これらのスコープを反映し、新しい応答形式を処理する必要があります。アプリはこれらのスコープをリクエストする必要があります
ボット トークンのスコープ
チャット:書き込み
チャット:読む
アプリの認証 URL を次のように変更します。
https://slack.com/oauth/v2/authorize?client_id=123456789012.123456789012&scope=chat :書き込みチャット:読み取り
私が抱えている問題は、RTM (Python) API では、通常、OAuth メソッドに直接アクセスしないことです。表面的には、ボットを認証するために RTM API に URL を提供する方法はないようです。公式ドキュメントによると、ボットを接続する方法は基本的に次のとおりです。
slack_token = 'xoxb-123456-......'
rtm_client = RTMClient(token=slack_token)
rtm_client.start()
クラシック スタイルのボットの認証トークンを提供すると、すべてが期待どおりに接続されます。この方法を使用して新しいスタイルのボットを認証すると、次のようになります。
slack.errors.SlackApiError: The request to the Slack API failed.
The server responded with: {'ok': False, 'error': 'not_allowed_token_type'}
これは、新しいスタイルのボットでのみ発生する問題のようです。繰り返しになりますが、RTM API を介して OAuth メソッドに直接アクセスすることは通常ないため、提供された URL がどこにプラグインされるかはわかりません。
機能しているように見える RTMClient オブジェクトの唯一のパラメーターは、「base_url」パラメーターです。提供された URL をそのパラメーターに提供しようとしましたが、認証されませんでした。
The server responded with: {}
RTM API に新しいスコープを提供するにはどうすればよいですか?