28
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Slackの特定チャンネルのメッセージをクロールする方法

Posted at

はじめに

  • 今回は、Slackで特定のチャンネルに投稿されたメッセージをクロールする方法について紹介していきます。

Slack API

  • 今回、Slack内のメッセージをクロールする際に使用するのが、Slack APIです。
  • Slack APIでは、Slack内のさまざまなタイプのデータの読み取り、書き込み、および更新へのアクセスを提供する一連のAPIです。
  • Slack APIには、いくつか種類があり、例えばWeb APIやEvent APIなどがあります。
  • 今回は、Web APIを使用していきます。

conversations.history

  • Slackのweb APIでは、それぞれ用途別にメソッドが分かれています。
  • 今回は、その中でもSlackで特定のチャンネルに投稿されたメッセージをクロールしたいので、使用するメソッドは、conversations.historyというものが適切だと考えます。

設定できるパラメータ

  • token: 必須 - 取得したToken
  • channel : 必須 - 取得したいSlackのワークスペースに含まれるChannel ID
  • cursor: オプション - Next_token的なものがresponseに返ってくるので、ページングしたい時にresponseの(next_cursor)の値を入れるとページングされた結果が返される。
  • inclusive: オプション - (defaultでは 0が設定されている) タイムスタンプが指定されている場合にのみ、最新または最古のタイムスタンプを持つメッセージを結果の境界を含むか含めないかを指定できる。
  • latest: オプション - (defaultは現在時刻が入っている [UnixTime]) 結果に含めるメッセージの時間範囲の終了
  • limit : オプション - (defaultは100) 返品するアイテムの最大数。ユーザー リストの最後に達していなくても、要求された数より少ないアイテムが返される場合があります。
  • oldest: オプション - (defaultは0 [UnixTime]) 結果に含めるメッセージの時間範囲の開始。

Tokenの取得方法

  • Tokenの取得なのですが、Legacy tokensの取得は非推奨の為、アプリベースのToken取得が必要になってきます。

① アプリの作成

  • https://api.slack.com/apps より、Slack APIにアクセスします。

  • 下記の画面が表示されたら、「Create New App」をクリックします。
    スクリーンショット 2021-06-08 13.38.25.png

  • モーダルが表示されたら、「From scratch」をクリックする。
    スクリーンショット 2021-06-08 13.40.58.png

  • アプリの名前とワークスペースを選択し、「Create App」をクリックする。
    スクリーンショット 2021-06-08 13.42.06.png

② Permisionを指定する。

  • アプリを作成すると、下記のような画面「Basic Information」が表示されるので、右下にある、「Permission」を選択する。
    スクリーンショット 2021-06-08 13.43.28.png

  • 「Permission」をクリックすると、下記のような画面に遷移する。
    スクリーンショット 2021-06-08 13.46.08.png

  • スクロールしていき、「Scopes」までいったら、「User Token Scopes」の「Add an OAuth Scope」 に下記の内容を追記していきます。
    スクリーンショット 2021-06-08 13.46.50.png

追加するPermission
スクリーンショット 2021-06-08 13.48.03.png

設定するPermission
  • 上記で指定したPermissionは、 conversations.historyで必要とするものになります。

スクリーンショット 2021-06-04 9.39.22.png

③ Tokenを発行する。

  • 最後に下記の「Install to Workspace」をクリックすると新規にTokenが払い出されます。

スクリーンショット 2021-06-08 13.52.11.png

Pythonでの実装例

slack.py
import requests

SLACK_CHANNEL_ID = '指定したいChannelのID名を記載'
SLACK_URL = "https://slack.com/api/conversations.history"
TOKEN = "取得したTokenを記載"

def main():
    payload = {
        "channel": SLACK_CHANNEL_ID,
        "oldest": "1622761200"
    }
    headersAuth = {
    'Authorization': 'Bearer '+ str(TOKEN),
    }  
    response = requests.get(SLACK_URL, headers=headersAuth, params=payload)
    json_data = response.json()
    msgs = json_data['messages']

    return print(msgs)

if __name__ == "__main__":
    main()

参考文献

28
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?