SlackのEnterprise SearchをOrganziationにインストールする手順をまとめる
こんばんは、情報システム部の夏目です。
業務でSlackのEnterprise Searchについて調べたり作ったりしていた中で、インストール手順で少し手間取ったので、やり方を共有します。
Enterprise Search
Enterprise Gridプラン以上で使える機能で、Slack外に対してもSlackの検索窓で検索可能になる機能です。
Google DriveやGithubなどに接続するための公式コネクタの他に、Slack Appで実装するカスタムコネクタがあります。
今回苦労したのはカスタムコネクタをどうやってインストールするのかという部分でした。
何が問題だったの?
大きく分けると2点。
- manifest.jsonで設定しようとしたらデッドロックした
- そもそもOrganization側も含めてどういう手順でインストールして有効化したらいいのかわからない
manifest.jsonで設定しようとしたらデッドロックした
Enterprise SearchはBoltフレームワークで動かすことが前提であり、今回AWS LambdaとLambda URL Functionsで実装していました。
Enterprise Searchの設定はmanifestで行う必要があるのでmanifest.jsonで設定しようとしました。
BoltフレームワークではBot用のOAuth Tokenが必要になるが、Slack Appを作りOrganizationやWorkspaceにインストールするまでわからない。
Slack Appを作ろうにも、エンドポイントとなるURLが必要だがAWSにデプロイしないとわからない。
一度に設定しようとすると完全にデッドロックしてしまいました。
こちらは設定を2段に分けて適用することで、デッドロック回避できました。
そもそもOrganization側も含めてどういう手順でインストールして有効化したらいいのかわからない
Enterprise SearchはOrganizationレベルでのインストールになるので、必ず管理者による作業が必要になります。
こちらについては調べるだけではどうにもならなかったので実際に動かして、整理しました。
インストールと有効化の手順
手順においては User と Admin の二つにわけてどちらでの表示なのか操作なのかを整理します。
前提条件
今回はSlack Developer Programで作成したサンドボックス環境で実際にインストールしていきます。
いくつか制限がありますが、全てのエンタープライズプランに含まれる機能が無料で使えます。
また、Enterprise環境なのでSSOが必須です。
管理者ユーザーと一般ユーザーの二つで作業を進めていきたいのでSimpleIdPというSlack Appでユーザー追加を行いました。
https://docs.slack.dev/enterprise/testing-enterprise-org-apps/#simple-idp
また今回のブログでは、Enterprise Searchのインストール手順なので、前提となる環境構築の手順や Boltフレームワークを使った実装については触れません 。
手順 01. [User] 最小の内容しかもたない manifest.jsonを用意
一度に完全なmanifest.jsonを設定できないので二度に分けた初回です。
{
"_metadata": {
"major_version": 2,
"minor_version": 1
},
"display_information": {
"name": "TrialEnterpriseSearch",
"description": "Trial Enterprise Search App",
"background_color": "#2c2d30"
},
"settings": {
"org_deploy_enabled": true,
"socket_mode_enabled": false,
"token_rotation_enabled": false,
"function_runtime": "remote"
},
"features": {
"bot_user": {
"display_name": "TrialEnterpriseSearch",
"always_online": true
}
},
"oauth_config": {
"scopes": {
"bot": [
"team:read",
"users:read",
"users:read.email"
]
}
}
}
Enterprise SearchはOrganizationレベルでインストールする必要があるので settings.org_deploy_enabled をtrueにしています。
Bot用のOAuth Tokenも必要なので oauth_config.scopes.bot にいくつかスコープを書いています。
ここは実装する際に必要な権限を書いてください。
手順 02. [User] Slack Appを作成
こちらにアクセスします。

Create an App をクリックします。

From a manifest をクリックします。

インストールするワークスペースを選択し、 Next をクリックします。

手順 01 で作成した manifest.jsonをここに貼り付けて、 Next をクリックします。

Create をクリックします。

Slack Appの作成ができました。
手順 03. [User] Organizationにインストールするための申請を出す
Features -> OAuth & Permissins -> OAuth Tokens を見ます。

Request to Org Install をクリックします。

管理者宛の申請のメッセージを書いて、 リクエストを送信する をクリックします。

Request to Org Install Submitted と灰色の非活性したボタンがあります。

Slackの画面にも通知が来ています。
手順 04. [Admin] 申請を承認する
管理者のユーザーのSlack画面に申請の通知が来ます。

申請のメッセージも来てますね。
確認して OrG に対して承認する をクリックして承認します。
Organizationの管理コンソールで承認する場合
Slackの画面だけではなく、Organizationの管理コンソールからも承認できます。
インテグレーション -> リクエスト を開きます。

リクエストが来ていることがわかります。
リクエストした人の名前をクリックすると、申請メッセージを表示することができます。

名前の横の三点リーダーをクリックして、 承認 をクリックしても承認できます。
手順 05. [User] OrganizationとWorkspaceにインストールする
承認されるとSlackの画面に通知が来ます。

Slack Appの Features -> OAuth & Permissions -> OAuth Tokensを開きます。

ボタンが変わっています。
Install to organization {Organization名} をクリックします。

許可する をクリックします。

Reinstall to organization {Organization名} というボタンがあり、Bot用のOAuth Tokenがあることからもインストールできたことがわかります。
Workspaceにもインストールしたいので Install to {Workspace名} をクリックします。

許可する をクリックします。

今回は何故かボタンに変化がありません。
しかし、ワークスペースにインストールされているので安心してください。
手順 06. [User] AWSにデプロイする
次の二つの値を確認し、AWSにLambdaをデプロイします。
Features -> OAuth & Permissions -> OAuth TokensにあるBot User OAuth TokenSettings -> Basic Infomation -> App Credentials -> Signing Secret


AWSにデプロイしてエンドポイントのURLを取得します。
手順 07. [User] manifestを更新する
{
"_metadata": {
"major_version": 2,
"minor_version": 1
},
"display_information": {
"name": "TrialEnterpriseSearch",
"description": "Trial Enterprise Search App",
"background_color": "#2c2d30"
},
"settings": {
"org_deploy_enabled": true,
"event_subscriptions": {
"request_url": "https://setv3ioo4t5c6i4v4wj3euvj740jhwgk.lambda-url.ap-northeast-0.on.aws/",
"bot_events": [
"function_executed"
]
},
"socket_mode_enabled": false,
"token_rotation_enabled": false,
"function_runtime": "remote"
},
"features": {
"bot_user": {
"display_name": "TrialEnterpriseSearch",
"always_online": true
},
"search": {
"search_function_callback_id": "search"
}
},
"oauth_config": {
"scopes": {
"bot": [
"team:read",
"users:read",
"users:read.email"
]
}
},
"functions": {
"search": {
"title": "TrialEnterpriseSearch",
"description": "Returns search results for the given query from internal data sources",
"input_parameters": {
"properties": {
"query": {
"type": "string",
"title": "Query",
"description": "The search query string"
},
"user_context": {
"type": "slack#/types/user_context",
"title": "User Context",
"description": "Context of the user performing the search"
}
},
"required": ["query", "user_context"]
},
"output_parameters": {
"properties": {
"search_results": {
"type": "slack#/types/search_results",
"title": "Search Results",
"description": "The search results returned by the app"
}
},
"required": ["search_results"]
}
}
}
}
手順 06 で作成したエンドポイントを settings.event_subscriptions.request_url に記載し、 その他Enterprise Searchに必要な設定を行います。
詳しいことはドキュメントを参照してください。
手順 08. [User] manifestを反映する
Slack Appの画面で Features -> App Manifest を開きます。

手順 07 で作成した manifest.json を貼り付けて、 save changes をクリックします。

URLのVerifyを求められるので Click here to verify をクリックします。
Verifyに成功すればユーザー側の準備は終了です。
手順 09. [Admin] Enterprise Searchを有効にする
Enterprise Searchはインストールするだけでは使えません。
管理者側でユーザーに対して有効化する必要があります。

Organizationの管理コンソールで 設定 -> エンタープライズ検索 を開きます。

公式コネクタの下に追加したものがあります (TrialEnterpriseSearch)。
右の 設定する をクリックします。

現在 該当するメンバーなし になっています。
右の 編集 (二つあるうち上の方)をクリックします。

管理者はここで有効化するユーザーを選択できます。
今回は 全員 にします。
AI検索も有効にします (実はよくわかってない)。
保存する をクリックします。

アクセスを許可する をクリックします。

これで使用可能になりました。
使ってみる

Slackの画面の検索窓に TrialEnterpriseSearch があり、検索できていることがわかります。
まとめ
以上、インストールと有効化手順でした。
正直この結論に至るまでかなりの時間を使ってしまいました。
何かのお役に立てれば幸いです。









