前の記事で、Slackのメッセージの取得コードの概形ができました。この記事では、Slackのメッセージの取得に必要なtokenを手に入れます。
Q. tokenはどうすれば手に入る? A. appを作るとOAuth Tokens for Your Workspaceにある
やっとArgument(引数)まで来ました。必要なのはtoken(xxxx-xxxxxxxxx-xxxxっぽいやつ)とchannel(C1234567890っぽいやつ)らしいです。「Slack token」と調べ、API トークンの生成と再生成 | Slackを見つけます。「Slack API を操作するために新しいtokenが必要な場合は、代わりにSlack アプリを作成してください。」とあるので、Slack アプリを作成します。GUIのSlackもSlackアプリと呼ばれるのでちょっとややこしいですが……
Slack API: Applications | Slackには、緑色のCreate New Appボタンがあるため、これを押します。
From scratchとFrom an app manifestがありますが、(後者はBETAらしいのと難しそうなので)From scratchをクリックします。App Nameには好きな名前を入れ、Pick a workspace to develop your app in:には自分のworkspaceを入力し、緑色のCreate Appボタンを押しました。私は「575」という名前のアプリをestieのSlackで動かしたいので以下のようになります。
さて、Appができたので、まず左のカラムを色々選択しては読みます。すると、[Basic Information]の[App Credentials]に[Verification Token]があります。これか?と思ったけれど先ほどの「xxxx-xxxxxxxxx-xxxxっぽいやつ」と形が似ていません(こういうとき、形が違うとすぐに気がつけてうれしいです)。さらにカラム散歩を続けます。[Features]の‘OAuth & Permissions]を見に行ったとき、OAuth Tokens for Your Workspaceを見つけます。説明文のリンク先のInstalling with OAuth | Slackを見ると、Using tokensに
GET /api/conversations.list?limit=50 Authorization: Bearer xoxb-1234-abcdefgh
が見つかります。先ほど見た形式なのでこれではないかと当たりを付けます。
さらに、Slack のメッセージ履歴を取得する | DevelopersIOのプログラムの
token = "XXX" header={ "Authorization": "Bearer {}".format(token) }
とよく似ているのでこれでしょう。使うtokenの心当たりが見つかったので、そのままOAuth Tokens for Your Workspaceの[Install to Workspace]ボタンを押すと、ポップアップが開きます。
権限を与えるのは怖いですね。でもチャンネルと会話に関するコンテンツと情報は575判定に必要そうなので、許可します。すると先ほどのOAuth Tokens for Your Workspaceに、それっぽいtokenが表示されます!
ちなみにこのxoxbは、「slack token xoxb」で検索して出てきたAccess tokens | SlackによるとBot tokensであることを示しています。
Q. このtokenを使えば良いんですね? A. tokenにscopeを持たせてはじめて使える
tokenを手に入れたので次はchannels:historyというscopeを渡しましょう。
同じくOAuth & Permissionsページに、Scopesがあります。Bot Token ScopesとUser Token Scopesがありますが、「Scopes that govern what your app can access.」という説明が今回の用途に合っている気がするのでBot Token ScopesのAdd an OAuth Scopeボタンを押します。channels:historyがあるのでこれをクリックすると、Bot Token Scopesにchannels:historyが追加されました。
これでおそらくappの設定が終わりました。
この記事でtokenを手に入れたので、次の記事ではchannelを手に入れる方法を説明します。