私が以前、Pythonで使ったslackbotはこちらだ。
RTMを使っている、と。
まあ、そうなるよねぇ。
ただ、New Slack appsはRTMは使わんだろう、と書いてある。
では、Newだとどんな感じでイベントを受け取るのだろうか。
うーん・・・Request URLは必須なのか?
おお、ツール一覧があるのか。
しかし、PythonとかJavaScriptとかしかない。。。
うん、RTMを使わないでやる方法はあきらめたよ、私は。
RTMを使おう。
まずは、classic Slack appを選択。
そして、適当にOAuth & Permissionsの設定をして、Bot User OAuth Access Tokenを取得。
どのパーミッションがいるのか分からないので、やりながら調べるのだ。
とりあえず、channels:readを追加しないとchannelsのサンプルが動作しないことは分かった。
まずは、これだけ付けておこう。
- app_menthins:read
- channels:read
- im:read
- im:write
- reactions:write
まずは、websocketサンプルが良かろう。
というのも、これは主にイベントログを出すためのサンプルのようだったからだ。
slack-bot: 2020/03/11 21:45:18 websocket_managed_conn.go:177: Connecting to RTM
Event Received: slack-bot: 2020/03/11 21:45:19 rtm.go:71: Using URL:
slack-bot: 2020/03/11 21:45:19 websocket_managed_conn.go:181: Failed to start or connect to RTM: not_allowed_token_type
slack-bot: 2020/03/11 21:45:19 websocket_managed_conn.go:147: reconnection 1 failed: not_allowed_token_type reconnecting in 100ms
not_allowed_token_typeね。うんうん、いい調子だ。
user tokenにはscopeはいらないが、botの方は"bot"というscopeがいるらしい。
が、botというscopeはdeprecatedっていわれたんだよなぁ。
そして、Scopes Updateとかいう画面に遷移してみると、やたらとチェックが入っていたので、適当に外したのが今の状態なのだ。
もしや・・・あのチェックが入った状態が"bot"を選択したのと同じだったのか・・・?
何も読まずに進めたのがまずかったか。。。
再確認だ。
まず、別のclassic appを作って"bot" scopeを追加する。
update scopesをクリック。
Step1は、bot token scopeの選択だ。
・・・うん、旧来のscopeには全部チェックが入っているな。
気にせず、一番下にあるcontinueをクリック。
Step2は、user token scopeの選択。
rtm.connectには不要らしいので、これはそのまま。
Step3は確認で、Step4はなんかURLとか出てきた。
疲れてるので、今回はスルー。
では、Bot Token Scopesを見ておこう。
- calls:read
- calls:write
- channels:read
- chat:write
- dnd:read
- files:read
- groups:read
- im:history
- im:read
- im:write
- mpim:history
- mpim:read
- mpim:write
- pins:write
- reactions:read
- reactions:write
- remote_files:read
- remote_files:share
- remote_files:write
- team:read
- users:read
- users:read.email
- users:write
いやあ、こんなにいらんじゃろう。
とは思うものの、さっき失敗したので、まずはこれらのscopesを追加して試そう。
・・・ダメじゃないか。変わらないじゃないか。。。
もしかして、update scopesしたときに変更したのがまずかったのか?
いや、そうでもないようだ。
はっ!
もしかして、Update Scopesしたこと自体がまずかったのか??
むう、やはりUpdate Scopesしないとダメなのか・・・。
と、Update Scopesに飛んだのだが、よく見ると一番上にメッセージが出ていた。
いやいや、それができないから困ってるのだよ。
もしかして、ドキュメントの更新が遅れているだけで、今からアプリを追加した人はRTMが使えなくなっているんじゃなかろうか。
「今から」と書いたのは、私が以前作ったPythonのアプリは動いているからだ。
動くとか動かないとかいう以前に、設定ができないので利用できなくなってるという気がしている。。。
落ち着くために、しばしSlackは忘れよう。
"update scopes"しなければよいだけ・・・?
返信削除classic app を作成後、 update scopes をせずに bot スコープだけ付与して workspace に install すればうまくいきました。
返信削除こんにちは。
返信削除2週間ほど前に「RTMに接続したいな」と思ってこの記事を拝見し、上記の匿名さんの方法を試しましたができませんでした。
カスタムインテグレーションの「Bots」でBotを作って発行されたトークンで今日、やっと成功しました。
https://slack.com/apps/A0F7YS25R-bots
すぐできると思います。
コメントありがとうございます。
削除10日前にSlackからEvent APIについてのメールが来ていたので「とうとう機能削除か!」と思ったのですが、単なる仕様変更のようでした。
まだ大丈夫そうですね。
https://api.slack.com/changelog/2020-09-15-events-api-truncate-authed-users