Slack は RTM をサポートしなくなるようです
先日、slackbotでを新しくBotを作成しようとした際に
動かず困ったので調べてみたところ、SlackはRTMのサポートを終了する ということが判明しました。
現状の回避策と、詳細をまとめてみることにします。
slackbotを使ったBotの作成
pipパッケージで、簡単に使えるBotフレームワークです。
利用している人も多く見かけます。
Based on slack Real Time Messaging API
slackbot
はRTM APIを利用してBotを比較的簡単に実装できるように作られています。
新しく作成したApp Tokenでは、どうやらslackbotが動かないぞ
新しくSlack Botを作成しようとして、環境を構築しましたが
slacker.Error: missing_scope
👆のエラーで異変に気付きました。
Scope を修正してみた
Slack API - Your Apps から、該当のAppを選択し
OAuth & Permissions
の項目から Scope
を確認しました。
以前は、Scopesを定義しなくても Bot Token
を利用することで
自動的にBot向けのScopeが内部で承認されていました。
しかし、必要なScopeを追加してもエラーは発生し続けました。
余談
slackbot側を調べてみました。
def start(self, simple_latest=False, no_unreads=False, mpim_aware=False):
return self.get('rtm.start',
params={
'simple_latest': int(simple_latest),
'no_unreads': int(no_unreads),
'mpim_aware': int(mpim_aware),
})
Pythonのエラーメッセージから、👆の関数でエラーとなっている事がわかります。
Slackの公式ドキュメントを読んでみる
Slack - Real Time Messaging API
RTMに関することは、👆に書いてあるようです。
読む前に、目立つセクションがありました。
New Slack apps may not use any Real Time Messaging API method.
Create a classic app and use the V1 Oauth flow to use RTM.
要約すると
- 新しいAppはRTMを利用できない
- RTMを使いたいんだったら
Classic app
を使ってね
ということです。
Classic app の作成
Classic app
の作成は、Slack - Real Time Messaging API の最下部のリンクから行えます。
Appを作成したら、 Legacy bot user
を追加する必要があります。
Classic app の Scopesを見てみましょう
bot
の OAuth Scopeが deprecated
となっていることがわかります。
スコープのアップデートには要注意
App Home
へアクセスすると、 Tools
セクションに Update to Granular Scopes
というのが存在します。
つまりは、Slackは 以前のBot向けスコープから
より細かいスコープへ移行することを推薦しています。
しかし、移行しようとすると下記メッセージが表示されます。
The RTM API is not accessible to updated Bot Tokens.
If your app requires RTM functionality, please exit this update and continue using your existing scopes.
移行すると、RTM APIは利用できなくなります。
Classic app
のサポートは、明示的に期間が定められている訳ではなさそうですが
今後RTMを利用したSlack Botの作成は、別の手段へ移行する必要がありそうです。