この記事では、全文検索サーバー Fessを利用してSlackのメッセージを横断検索する方法を紹介します。
これはFess上で実際に検索を行っている画面のスクリーンショットです。
導入手順
FessでSlackを横断検索するための手順を説明します。
導入の流れは次のようになります。
- プラグイン追加
- Fessの起動
- 認証設定
- クローラの設定・実行
1. プラグイン追加
Fessの現バージョン(12.3.0)には、デフォルトでは含まれていない機能であるため、自分で追加する必要があります。
ここからfess-ds-slack-12.2.0.jarをダウンロードします。
ダウンロードしたjarファイルは[Fessのパス]/app/WEB-INF/lib/
に配置します。
2. Fessの起動
このページを参考にFessを起動します。
3. 認証設定
データを取得するために認証情報をパラメータとして与える必要があり、そのための設定を行います。
3-1. Slackアプリ作成
このページで「Create New App」をクリックしてSlackアプリを作成します。
App Nameは自分が分かれば何でもOKです。
Development Slack Workspaceは検索をしたいワークスペースを指定します。
3-2. Permission設定
アプリ作成後、左側のメニューから「OAuth & Permissions」を選択し、Scopesを設定します。
とりあえず必要なのは、channels:history
, channels:read
, users:read
, users.profile:read
, team:read
です。
(files:read
が必要となる機能は今後実装予定です)
3-3. アプリインストール
同ページの上部から、「Install App to Workspace」します。
インストール後に「OAuth Access Token」として表示されている文字列が後で必要になります。
4. クローラの設定・実行
Slackをクロールするための設定をします。
公式ドキュメントのこのページも参考にしてください。
4-1. クローラの設定
Fessの管理画面を開き、クローラ > データストア
と移動し、新規作成をします。
新規作成画面では、
- 名前
- ハンドラ
- パラメータ
- スクリプト
の4項目を設定して、作成を完了します。
「名前」には好きな文字列を入力してください。
「ハンドラ」はSlackを選択してください。
「パラメータ」は次のようなフォーマットで入力してください。
token=xoxp-************-************-************-********************************
channels=general,random
キーと値の説明は次のようになります。
キー | 値 |
---|---|
token | 3-3で入手したアクセストークン |
channels | 検索対象チャンネル(, 区切りでチャンネルを指定、*all で全てのチャンネル) |
「スクリプト」は次のようなフォーマットで入力してください。
title=message.user + " #" + message.channel
digest=message.text + "\n" + message.attachments
content=message.text
created=message.timestamp
timestamp=message.timestamp
url=message.permalink
取得出来る値のキーと値の説明は次のようになります。
ここで言う「Message」はSlackの1メッセージを指しています。
キー | 値 |
---|---|
message.text | Messageの内容 |
message.user | Messageを送信したユーザ名(表示名) |
message.channel | Messageが送信されたチャンネル名 |
message.timestamp | Messageが送信された日時 |
message.permalink | MessageをSlack上で開くリンク |
message.attachments | Messageの添付項目の要約 |
4-2. ジョブスケジューラの作成
4-1で作成したクロールをクリックすると、クロール設定が開き、そこから「新しいジョブの作成」をします。
後からでも変更はできるので、とりあえず試す場合はそのままの設定で大丈夫です。
詳しいジョブスケジューラの設定については、このページを参考にしてください。
4-3. クローラの実行
システム > スケジューラ
と移動し、4-2で作成したジョブを開きます。
その画面から、「今すぐ開始」をします。
状態が「実行中」から「有効」になるまで待ちます。
4-4. 検索のテスト
これでFessでSlackを横断検索することが出来るようになりました。