IT技術に関する情報掲載サイト

プログラミングに関することを掲載します。

Slackのキーワード検索の方法

Slackに投稿したメッセージを一定のキーワードで抽出したかったので、その方法を調べたのでメモ。jpから後ろは、CSV形式でダウンロードさせるためのコマンドです。

curl -s -G https://slack.com/api/search.messages \
  -H "Authorization: Bearer xoxp-<USER_TOKEN>" \
  --data-urlencode "query=キーワード" |
jq -r '.messages.matches[] | [.permalink, .text] | @tsv'

 

トークンを取る方法

Slack APIで必要なスコープを取得する流れをまとめます


1. どのスコープが必要か

  • search.messages を使う場合

    • User Token (xoxp-...) が必要

    • スコープ: search:read

    • Bot Token (xoxb-...) では利用できません

  • chat.getPermalink を使う場合

    • Bot Token / User Token どちらでも可

    • 特別なスコープは不要(通常の chat:write などがあればOK)


2. スコープを取得する手順

  1. Slack API管理画面にアクセス
    https://api.slack.com/apps にアクセスし、自分のワークスペースのアプリを作成するか既存アプリを選びます。

  2. OAuth & Permissions を設定

    • 左メニューの "OAuth & Permissions" をクリック

    • 「User Token Scopes」セクションで search:read を追加します。

    • Botトークンに付ける場合は「Bot Token Scopes」に権限を追加します。

  3. Install App to Workspace

    • 画面下の「Install App to Workspace」を押して権限をワークスペースにインストールします。

    • インストール後に xoxp-... (User Token)xoxb-... (Bot Token) が発行されます。

  4. トークンを使う

    • search.messages を使うコードでは xoxp-... トークンを使う必要があります。

    • chat.getPermalinkBotトークンでも動くので、既存Botに組み込むならこちらでも可です。


3. ポイント・注意点

  • User Tokenは個人ユーザーにひもづくので、他ユーザーの検索も対象になります。

  • Bot Tokenでは検索APIは不可なので注意してください。

  • 会社のSlackだと管理者の承認が必要な場合があります(特にUser Tokenを発行する時)。