非推奨になってるSlackのRTM APIは今も使えるのだけど、使えているAppと全く同じ設定にしたClassic Appでも弾かれるので徹底的に比較して調べてみた。
アプリのClassicかどうかやパーミッションの設定は無関係で、RTM APIに1回でも成功してるとフラグが立つらしく以後使えるようになるようだ。
情報BOTやツールを作ってます。
・震度速報 (@quaketelop)
・津波注意報・警報速報 (@tsunamitelop)
・日経平均株価 (@stockaverage)
・厳選ニュース (@newsselection)
・ねこ画像ブースト (@nekodon)
・いぬ画像ブースト (@inudon)
・ほどほどトレンドワード (@feditrend)
・API検索(https://www.antun.net/tool/mastodon/mastodoc.html)
・過去投稿ビュワー(https://www.antun.net/tool/mastodon/pastodon.html)
・Mastodonの投稿についた絵文字リアクションをだいたい表示するWebツール(https://gist.githack.com/antunnet/357dde794217e56a49695fab769b3e8c/raw/mastodonReactionViewer.html)
非推奨になってるSlackのRTM APIは今も使えるのだけど、使えているAppと全く同じ設定にしたClassic Appでも弾かれるので徹底的に比較して調べてみた。
アプリのClassicかどうかやパーミッションの設定は無関係で、RTM APIに1回でも成功してるとフラグが立つらしく以後使えるようになるようだ。
つまり、oauth/authorizeで古いスコープ(client)で認可したトークンでrtm.connectを成功させれば、以後はそのAppが新しい形式だろうがoauth/v2/authorizeで新しいスコープでどんな指定で認可してようが、RTM APIが使える。
下位互換のための機能だろうから、いつかは使えなくなるだろうけど。
SlackのSocket Mode、3日前に正式公開されたばかりだったみたい。
https://medium.com/slack-developer-blog/socket-to-me-3d122f96d955
アプリの設定で有効化するとアプリレベルのトークンができる。これでhttp://apps.connections.open(CORS制限ありだった)を呼ぶとWebSocketのURLが返ってくるので繋ぐと、Events APIがサーバー立てずに受け取れた。
現状のSocket ModeはCORSがなぜか非対応でJavaScriptだけで閉じて処理できないのと、アプリトークンなので1ユーザーとして繫げられるわけではないのがネックかな。
リアルタイムクライアントの実装用ではなく、組織に閉じたボットの実装用として考えられてるみたい。
Slack APIを新しい仕様に移行中。Slack APIは変更が激しい。
RTM APIが廃止されることは知っていて、そのための処理だけ古い手法でどうにかならないかなと調べてたら、Socket Modeなる新仕様が発表されてたことを知る。RTM APIの代替がこれになりそう。ちゃんと考えてくれてたんだ。