今回は、Fessを利用してSlackのメッセージを横断検索する方法を紹介します。

今回紹介する機能を使うことで、Slack内の検索に加えて、取得したメッセージをFess内に蓄積できるため、メッセージのバックアップ先としても利用することができます。

導入手順

では早速、Slackのメッセージを検索するための手順を説明していきましょう。今回は、Fess 13.4.3を使用します。

プラグインの追加

Fessを起動後、管理画面の「システム」>「プラグイン」で「インストール」をクリックして、プラグインのインストール画面を表示します。リモートタブで「fess-ds-slack-13.4.0」を選択し、「インストール」をクリックするとプラグインがインストールされます。

プラグインのインストール画面

Slackの設定

FessがSlackのメッセージを取得するために、Slackアプリを作成します。

◆Slackアプリの作成

SlackのYour Appsで「Create New App」をクリックして、Slackアプリを作成します。

「App Name」は任意の名前を設定し、「Development Slack Workspace」は検索をしたいワークスペースを指定します。

Slackアプリの作成

◆Permissionの設定

アプリ作成後、左側のメニューから「OAuth & Permissions」を選択し、「Scopes」を設定します。

「channels:history」「channels:read」「users:read」「users.profile:read」「team:read」の5つのスコープが必要になります。「Add an OAuth Scope」をクリックし、これらのスコープを選択してください。

Permissionの設定

◆アプリのインストール

同ページの上部にある「Install App to Workspace」をクリックします。以下のような権限リクエスト確認が表示されるので、内容を確認後、許可してインストールします。

アプリのインストール

インストール後に「OAuth Access Token」として表示されている文字列が後で必要になります。

クローラの設定・実行

Slackのメッセージをクロールするためにはデータストアクロールを利用します。

◆クロールの設定

Fessの管理画面を開き、「クローラ」>「データストア」と移動し、「新規作成」をクリックします。

「名前」には任意の設定名を指定し、「ハンドラ名」には「SlackDataStore」を選択します。「パラメータ」は、以下のように設定してください。

token=xoxp-************-************-************-********************************
channels=general,random

キーと値の説明は次の通りです。

キー
token Slackアプリのインストールで取得したアクセストークン
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.user メッセージを送信したユーザー名(表示名)
message.channel メッセージが送信されたチャンネル名
message.timestamp メッセージが送信された日時
message.permalink メッセージをSlack上で開くリンク
message.attachments メッセージの添付項目の要約

設定画面は次のようになります。

データストアのクロール設定画面

◆クローラの実行

「システム」 > 「スケジューラ」と移動し、「Default Crawler」のジョブを開きます。 その画面上の「今すぐ開始」をクリックして、クローラを開始します。

ジョブの状態が「実行中」から「有効」になるまで待ちます。

◆検索のテスト

Fessの検索画面を表示して、検索フォームから適当に検索してください。

Fessの検索画面で、Slackのメッセージが検索できる

Slackのメッセージが検索できることを確認できます。

* * *

今回は、Fessを利用して、Slackのメッセージを検索する方法を紹介しました。 Slackのメッセージを検索したり、バックアップ先として利用したりして、Fessを活用してみてください。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。