今回は、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」は検索をしたいワークスペースを指定します。
◆Permissionの設定
アプリ作成後、左側のメニューから「OAuth & Permissions」を選択し、「Scopes」を設定します。
「channels:history」「channels:read」「users:read」「users.profile:read」「team:read」の5つのスコープが必要になります。「Add an OAuth Scope」をクリックし、これらのスコープを選択してください。
◆アプリのインストール
同ページの上部にある「Install App to Workspace」をクリックします。以下のような権限リクエスト確認が表示されるので、内容を確認後、許可してインストールします。
インストール後に「OAuth Access Token」として表示されている文字列が後で必要になります。
クローラの設定・実行
Slackのメッセージをクロールするためにはデータストアクロールを利用します。
◆クロールの設定
Fessの管理画面を開き、「クローラ」>「データストア」と移動し、「新規作成」をクリックします。
「名前」には任意の設定名を指定し、「ハンドラ名」には「SlackDataStore」を選択します。「パラメータ」は、以下のように設定してください。
channels=general,random
キーと値の説明は次の通りです。
キー | 値 |
---|---|
token | Slackアプリのインストールで取得したアクセストークン |
channels | 検索対象チャンネル(「,」区切りでチャンネルを指定、「*all」で全てのチャンネル) |
「スクリプト」は、以下のように設定します。
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の検索画面を表示して、検索フォームから適当に検索してください。
Slackのメッセージが検索できることを確認できます。
* * *
今回は、Fessを利用して、Slackのメッセージを検索する方法を紹介しました。 Slackのメッセージを検索したり、バックアップ先として利用したりして、Fessを活用してみてください。
著者紹介
菅谷 信介 (Shinsuke Sugaya)
Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。