SlackAppのOAuth & Permissionsとscope設定
SlackAppの設定で最初につまずいたのが「OAuth & Permissions」の「scope(スコープ)」だったので、scopeの設定について説明したいと思います。
scope(スコープ)とは?
SlackAppのscopeとは、コードを書くとき、その関数にのみ与えられる権限という理解で大丈夫だと思います。
まず、SlackAppは権限を与えないと何もできません。
投稿を読みこむことも、投稿することも、リアクションを読むことも、リアクションすることも、全て各権限の許可をしてあげないと動作しない仕様です。
そのため、投稿したり、リアクションしたりといったscopeという権限をSlackAppに与えてあげる必要があります。
でも、「自分がしたいことをするために何の権限を与えたらいいのか」が分からないと権限も与えられないですよね。
ここで私はすごくつまずきました…。
Slackのメソッドを確認する
そこで、Slack側が用意してくれているメソッドの中に書いてくれているscopeを確認するといいです。
初心者にとっては「いやメソッド(method)ってなに?」って感じだと思うんですが、簡単にいうと、これをしてくれってSlackAppにお願いするための決まりのようなものかなーと思ってます。
SlackAppは当然一人でに何かできるわけではないので、「これをしてくれ!」と頼む必要があり、そのときに呼び出す方法がメソッドになるわけです。
※ちゃんとした説明はほかの方のを見てください…!
とりあえずやってみたほうが早いと思うので、実際見てみましょう!
Slackのメッセージを取得したい場合のscope
例えば、Slackのメッセージを取得してスプレッドシートに自動で記載したい場合、SlackAppにメッセージを取得してもらわないといけないですよね。
今回は投稿を読み込みたいので、「Web API methods | Slack」で「history(履歴)」と検索してみましょう。
見たいのはメソッドなので、「Methods」をクリックします。
説明に「Fetches a conversation's history of messages and events.(会話のメッセージとイベントの履歴を取得します。)」とある通り、今回は投稿の履歴を見たいので「conversations.history」をクリックします。
見てみると、「Required scopes(必須スコープ)」が書いてありますね!
このscopeの権限をSlackAppに与えれば、botが「conversations.history」のメソッドを使えるようになり、メッセージを取得できるようになります!
ちなみに
昔は「conversations.history」ではなく、「channels.history」だったらしいんですけど、現在「channels.history」は廃止されているようです。
※「channels.history」はリプライの履歴も拾えたようなんですが、「conversations.history」ではできません…。
日本人からするとconversations(会話)ってなかなか馴染みがないというか、Slackだしposting(投稿)やmessage(メッセージ)じゃないのかって感じですけど、Slackのメソッドだとconversations(会話)みたいです…!
messageはEvent APIで使用しているので、メソッドは別のものを割りあたたのだと思いますが…。
Required scopes(必須スコープ)はどれを使えばいい?
「Required scopes」になにやらたくさんscopeが書いてありますが、どれを使用するかはメッセージをやりとりしているチャンネルによって異なります。
ここも参考にしたサイトに書いていなくて困ったので、覚えておくといいと思います。
- 公開チャンネル:channels
- プライベートチャンネル:groups
- ダイレクトメッセージ:im
- 複数人とのダイレクトメッセージ:mpim
「bot token」と「user token」とは?
SlackAppはbotを動かすことも、ユーザーを動かすこともできます。
botはbot自身がメッセージを投稿したり、リアクションしたりするのを想像するとわかりやすいと思います。
ユーザーを動かすというのはSlackAppが@takanashiでメッセージを投稿したり、リアクションしたりするということです。
ユーザーの指定はGAS側のコードで指定します。
今回はscopeの話でした。
メソッドもそうですが、使ってみないとなかなかピンとこないと思います…!
とりあえずbotを動かしてみたい方はこちらを参考にしてみてください!