Slack連携機能(version 2.6以降)¶
目次:
概要¶
統合制御サーバーでは、 Slack のチャンネルにIROHA2のステータス情報を投稿することができる。 これにより、ユーザーはIROHA2が置かれているネットワークの外部からIROHA2のステータスを確認することができるようになる。
主な機能は以下の通りである。
Slackアプリのトークンの管理
実験課題番号に紐づいたSlackチャンネルの作成
チャンネルへのユーザー登録補助(実際の登録作業はSlackアプリケーションで行う)
指定したチャンネルへのメッセージおよび画像の投稿
Slack投稿機能のOn/Off
投稿内容および周期、モードの設定
Slackのワークスペースには、実験課題毎に専用のprivateチャンネルが作成され、このチャンネルにIROHA2のステータス情報を投稿する。 このチャンネルには装置スタッフおよび実験ユーザーが参加し、Slackアプリケーションから投稿を確認することができる。
Slackにおける準備¶
Slack連携機能を使用するまでの大まかな流れは以下の通りである。
Slackのワークスペースを作成する
Slackアプリを作成し、ワークスペースに追加する
統合制御サーバーにアプリのトークンを登録する
統合制御サーバーで設定を行う
Slackのアプリを作成してワークスペースに追加するまでを説明する。
ワークスペースの作成¶
ここでは詳細な説明は省略するが、 公式のヘルプページ などを参考にワークスペースを作成する。
アプリの作成¶
SlackアプリはWeb APIを利用してチャンネルを作成したり、メッセージを投稿したりすることができる。
まず、 slack api にアクセスする。
Create an app からアプリを作成することができる。 既存のアプリが存在しない場合には Fig. 293 のダイアログが表示される。
From scratch を選択する。
App Name にアプリ名を入力し、 Pick a ~ でワークスペースを選択する ( Pick a ~ に選択肢が表示されない場合には、 Sign into a different workspace からワークスペースにログインする必要がある)。 設定後、 Create App を選択し、アプリを作成する。
アプリの権限の設定¶
新規作成したアプリは初期状態では何の権限も持たないため、権限を追加する必要がある。
アプリを作成すると(もしくはslack apiの画面で既存のアプリを選択すると)、 Fig. 295 が表示される。
アプリの権限を追加するには OAuth & Permissions を選択する。
Scopes において、 Bot Token Scopes に権限を追加する。 Add an OAuth Scope を選択すると権限の一覧が表示されるので、必要な権限をすべて選択する。 必要な権限を Table 99 に示す。
OAuth scope |
説明 |
---|---|
channels:manage |
Publicチャンネルの管理と作成 |
channels:read |
Publicチャンネルの情報を取得 |
chat:write |
メッセージの投稿 |
files:write |
ファイルのアップロード |
groups:write |
privateチャンネルの作成 |
groups:read |
privateチャンネルの情報を取得 |
team:read |
ワークスペースの情報を取得 |
users:read |
ワークスペースのユーザーの情報を取得 |
users:read:email |
ワークスペースのユーザーのメールアドレスを取得 |
権限を1つ以上追加すると、 OAuth & Permissions の上部( Fig. 296 )の OAuth Tokens for Your Workspace の Install to Workspace が有効になるため、これを選択する。 権限の追加を許可するかどうかを確認されるため、これを許可する。
トークンの取得¶
実際にアプリを利用してSlackにメッセージを投稿するにはトークンが必要になる。 アプリの権限の設定後、 OAuth & Permissions の上部( Fig. 296 )の OAuth Tokens for Your Workspace にBotのトークンが表示されるようになる。
このトークンの文字列をコピーしておき、後ほど統合制御サーバーに登録する。
ワークスペースへのアプリの追加¶
Slackアプリケーションにおいて、作成したアプリをワークスペースに追加する。 詳細は 公式のヘルプページ を参照のこと。
Slackユーザーの種別¶
Slackのユーザーは、ワークスペースのすべてのチャンネルにアクセスできる通常ユーザーと 特定(大抵は1つ)のチャンネルにしかアクセスできないゲストユーザーに分けられる。
装置スタッフは 通常ユーザー としてワークスペースに招待しておく。 通常ユーザーとしてワークスペースに参加したユーザーは、統合制御サーバーで新しくチャンネルを作成した際に、 自動的にそのチャンネルに追加されるため、実験のたびに手動でチャンネルに追加する手間を省くことができる。
実験ユーザーは ゲストユーザー として特定のチャンネルに招待する。 ゲストユーザーは招待された特定のチャンネルにしかアクセスできないため、情報へのアクセスを制限することができる。
統合制御サーバーにおける操作¶
統合制御サーバーにおいて、メニューから Settings 画面を開き、 Slack タブを選択してSlack連携機能の設定画面を表示する。
この設定画面は
管理者のみがアクセスできる Slack API Settings パネル
すべてのユーザーがアクセスできる Slack Post Settings パネル
で構成される。
Slack API Settings パネルでは、トークンの登録やチャンネルの作成、機能のOn/Offの切り替えなどを行う。 Slack Post Settings パネルでは、投稿するイベントの種類の選択、投稿周期の設定などを行う。
管理者による設定¶
トークンの登録(更新)¶
Slack API Settings パネルの Token 入力欄にトークンを入力し、 Update ボタンを押下する。 正しくトークンが登録されると、 Workspace にワークスペース名が表示されるようになる。
Note
ワークスペース名が表示されない場合、アプリの権限(Scope)の設定が誤っている可能性がある。 トークンが正しくない場合、以降の操作は行うことができない。
装置スタッフの表示¶
Slack API Settings パネルの BL member にワークスペースに参加している装置スタッフの情報を表示することができる。 Update ボタンを押下すると装置スタッフの名前とメールアドレスが表として表示される。
チャンネルの作成¶
Slack API Settings パネルの New Channel Name においてチャンネルの作成を行うことができる。
New Channel Name の入力欄に新しく追加するチャンネル名を入力する(通常は実験課題番号を入力する)。 装置管理サーバーにおいて連携データベースとの接続を行って実験課題情報を取得している場合、 入力欄に実験課題番号がリストとして表示されるため、そこから選択することもできる(前方検索でリストを絞ることができる)。 必要があれば実験課題番号を修正し、 Add ボタンを押下すると、ワークスペースに新しいチャンネルが作成される。
Note
Slackのチャンネル名には大文字を使用することができないため、大文字を入力した場合には自動的に小文字に変換される。
チャンネルの選択¶
Slack API Settings パネルの Channels リストにおいてチャンネルの選択を行うことができる。 チャンネルを変更すると、メッセージの投稿先がそのチャンネルに変更される。 リストには統合制御サーバーで作成したチャンネルが含まれており、チャンネルを選択して Change ボタンを押下することで設定される。 チャンネルを変更すると、 Channel Name (Proposal No.) にそのチャンネル名が表示される。
チャンネルへのユーザーの招待補助機能¶
Slackの料金プランによっては、Web APIからゲストユーザーを直接的に追加することができない場合があるため、 各チャンネルへのユーザーの招待および追加は手動で行うこととしている。
そのため、ユーザーの招待を補助する機能として、指定したチャンネルにユーザーの招待を促すメッセージを投稿する機能を作成した。
Slack API Settings パネルの Posting channel for inviting member においてメッセージの投稿先のチャンネルを設定する。 投稿先のチャンネルは現在選択されているチャンネルがデフォルトだが、任意のチャンネル(#generalなど)を選択することができる。 Change ボタンを押下すると招待を促すメッセージの投稿先が変更される。
Slack API Settings パネルの Invite Member において招待したいユーザーの情報を登録する。
- Name & E-mail
ユーザーの名前とメールアドレスを入力する。 + ボタンでユーザーを追加、 - ボタンでユーザーを削除することができる。
- Message (optional)
投稿するメッセージに文言を追加する(任意)。
Request for invitation ボタンを押下すると、指定したチャンネルに招待を促すメッセージが投稿される。
チャンネルユーザーの表示¶
Slack API Settings パネルの Invite Member にある Update ボタンを押下すると、 現在選択されているチャンネルに参加しているユーザーの情報が表として表示される。
Note
招待されたユーザーがいつチャンネルに参加するかは、統合制御サーバーからはわからないので、 Update ボタンで情報を更新する必要がある。
Slack連携機能の有効化¶
Slack API Settings パネルの Service ボタンを切り替え、 Apply ボタンを押下することで、Slack連携機能のOn/Offを切り替えることができる。
- On
Slack連携機能を有効化する。現在選択されているチャンネルにメッセージが投稿される。
- Off
Slack連携機能を無効化する。メッセージ投稿が停止する。
Note
統合制御サーバーを再起動した場合、意図しないメッセージ投稿を避けるため、Slack連携機能は自動的にOffになる。
投稿の設定¶
投稿に関する設定は管理者だけではなく、すべてのユーザーが行うことができる。 ただし、投稿自体のOn/Offは管理者のみ設定することができる。
イベントの選択¶
投稿するイベントの種類を選択する。選択されたイベントは、そのイベントが起きたタイミングでメッセージが投稿される。
投稿したいイベントにチェックを付ける。それぞれのイベントの意味を Table 100 に示す。
イベント名 |
説明 |
---|---|
Begin |
測定の開始 |
End |
測定の終了 |
Apply |
デバイスへのパラメータ送信 |
Sequence progress |
シーケンスの進捗(コマンドの開始や終了など) |
Error |
デバイス、測定、DAQにおけるエラー |
ページ下部の Apply ボタンを押下すると設定が反映される(他の投稿設定の項目と一括で反映できる)。
デバイスの選択¶
選択したデバイスのステータスを投稿することができる。メッセージは指定した周期で投稿される。
Interval に投稿する周期(秒)を入力する。
表にはデバイスの一覧が表示される( Scan Devices で更新する必要がある)。 Post にチェックを付けると、そのデバイスのステータスが投稿されるようになる。
ページ下部の Apply ボタンを押下すると設定が反映される(他の投稿設定の項目と一括で反映できる)。
投稿モードの選択¶
投稿のモードを選択する。それぞれのモードの説明を Table 101 に示す。
モード |
説明 |
---|---|
Text |
ステータス情報を文字列で投稿する |
Image |
ステータス情報を画像で投稿する |
Both |
TextとImageの両方で投稿する |
ページ下部の Apply ボタンを押下すると設定が反映される(他の投稿設定の項目と一括で反映できる)。
Imageモードで画像を投稿する場合、統合制御サーバーを起動している計算機にwkhtmltoimageをインストールする必要がある (下記のコマンドはCentOS7にインストールする場合)。
$ sudo yum install xorg-x11-fonts-75dpi
$ sudo yum install xorg-x11-fonts-Type1
$ wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.x86_64.rpm
$ sudo rpm -ivh wkhtmltox-0.12.6-1.centos7.x86_64.rpm