2020/03/11

[slack]もしかしてRTMはもう使えなくなったのか(2020/03/11)?

私が以前、Pythonで使ったslackbotはこちらだ。

https://github.com/lins05/slackbot

RTMを使っている、と。
まあ、そうなるよねぇ。

ただ、New Slack appsはRTMは使わんだろう、と書いてある。

https://api.slack.com/rtm

では、Newだとどんな感じでイベントを受け取るのだろうか。

https://api.slack.com/authentication/basics#listening

うーん・・・Request URLは必須なのか?

 

おお、ツール一覧があるのか。

https://api.slack.com/tools

しかし、PythonとかJavaScriptとかしかない。。。


うん、RTMを使わないでやる方法はあきらめたよ、私は。
RTMを使おう。

まずは、classic Slack appを選択。

https://api.slack.com/apps?new_classic_app=1

そして、適当に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ね。うんうん、いい調子だ。

https://api.slack.com/methods/rtm.connect

user tokenにはscopeはいらないが、botの方は"bot"というscopeがいるらしい。
が、botというscopeはdeprecatedっていわれたんだよなぁ。
そして、Scopes Updateとかいう画面に遷移してみると、やたらとチェックが入っていたので、適当に外したのが今の状態なのだ。

もしや・・・あのチェックが入った状態が"bot"を選択したのと同じだったのか・・・?
何も読まずに進めたのがまずかったか。。。

 

再確認だ。

まず、別のclassic appを作って"bot" scopeを追加する。

image

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したこと自体がまずかったのか??

image

むう、やはりUpdate Scopesしないとダメなのか・・・。

 

と、Update Scopesに飛んだのだが、よく見ると一番上にメッセージが出ていた。

image

いやいや、それができないから困ってるのだよ。

 

もしかして、ドキュメントの更新が遅れているだけで、今からアプリを追加した人はRTMが使えなくなっているんじゃなかろうか。
「今から」と書いたのは、私が以前作ったPythonのアプリは動いているからだ。

 

動くとか動かないとかいう以前に、設定ができないので利用できなくなってるという気がしている。。。
落ち着くために、しばしSlackは忘れよう。

4 件のコメント:

  1. "update scopes"しなければよいだけ・・・?

    返信削除
  2. 匿名11:50

    classic app を作成後、 update scopes をせずに bot スコープだけ付与して workspace に install すればうまくいきました。

    返信削除
  3. こんにちは。
    2週間ほど前に「RTMに接続したいな」と思ってこの記事を拝見し、上記の匿名さんの方法を試しましたができませんでした。
    カスタムインテグレーションの「Bots」でBotを作って発行されたトークンで今日、やっと成功しました。
    https://slack.com/apps/A0F7YS25R-bots
    すぐできると思います。

    返信削除
    返信
    1. コメントありがとうございます。

      10日前にSlackからEvent APIについてのメールが来ていたので「とうとう機能削除か!」と思ったのですが、単なる仕様変更のようでした。
      まだ大丈夫そうですね。
      https://api.slack.com/changelog/2020-09-15-events-api-truncate-authed-users

      削除

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。