Pythonを使った、Slackからのメッセージ取得2/3

前の記事で、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ボタンがあるため、これを押します。

SlackApp作成ポップアップ

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で動かしたいので以下のようになります。

575という名前のappを作り、estieワークスペースで動かす設定

さて、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が表示されます!

ねんがんの 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を手に入れる方法を説明します。

© 2019- estie, inc.