ソリューション連携 第3回 - Slack -
ソリューション連携の連載シリーズ、第3回はSlackになります。
まず最初に、Blue PrismのDigital Exchange(以降、DX)でSlackを検索すると、Slack for Slack Messaging というSkill を見つけることができます。
※1:本Skillはバージョンアップにより仕様・構成が本記事作成時とは異なっています。本記事は、旧バージョン(Slack+Skill+v1.1)の内容に基づき
記載しております。旧バージョン(Slack+Skill+v1.1)の仕様については、こちらをご確認下さい。
こちら、以下の通り主要なアクションについては一通りカバーされている事が確認できます。よって、本記事ではこれをベースとして利用していきたいと思います。
【アクション一覧】
List Conversations: Slack workspace内のチャネル一覧を取得
List Users: Slack workspace内の登録ユーザリストを取得
Look Up User (by Email) : 登録ユーザをEmailにて検索
Look Up User: 登録ユーザをUser IDで検索
Post Message: メッセージをポスト
Post Message (Blocks): Block Kit を利用したメッセージポスト
Upload File: ファイルをターゲットチャネルにアップロード
ただし、Blue Prism と Slack のインタラクションを想定すると、1つ気になる事があります。それは、チャネル内のメッセージを取得するActionが無いという点です。
取得したメッセージ内容から自動処理内容を決める、といったユースケースも十分考えられるため、本記事では、Slack for Slack Messaging Skill を修正してメッセージ一覧を取得するアクションを追加していきたいと思います。
事前準備
では、事前準備としてまずSlack側の設定をしていきましょう。
まず、Slack APIの画面にアクセスし、「Create an App」をクリックします(アプリ未作成の場合)。すると、アプリ作成ウィザードが立ち上がるため、ここで対象のワークスペース名を選択し、任意のアプリ名を入力して「Create App」ボタンで作成します。
次に、作成したアプリの設定画面で「OAuth & Permissions」(左メニュー)を選択します。ここではボットが実行可能な作業範囲の権限、スコープ(パーミッション)を設定します。Bot Token Scopesに必要な権限(chat:write, chat:write.customize、等)を適宜追加します。
続いて、左メニューから「App Home」を選択し、「Your App’s Presence in Slack」で「Edit」ボタンをクリックします。ここで、ボットの表示名(日本語可)とユーザー名(半角英数字のみ)を入力し、「Add」ボタンをクリックします。
最後に、左メニューの「OAuth & Permissions」画面で「Install App to Workspace」ボタンをクリック、事前に設定したスコープの内容に対し、「許可する」ボタンをクリック、有効化します。
以上より、ボット用のアクセストークンが発行されます。Copyボタンをクリックして、(アクセストークンを)コピーしておきます。
認証情報の準備
次に、Blue Prism にて認証情報の準備を行います。「システム > セキュリティ > 認証情報」で「新規」を選択し、作成します。
ここで、タイプ=ベアラートークンを選択、トークンには、事前準備で取得したアクセストークンを入力します(アクセス権についても、適切な設定を実施)。
Slack for Slack Messaging Skill のインポートとWeb API の設定
ここで、DXよりダウンロードしたSlack for Slack Messaging Skill をインポートし、設定を実施します。
Skillをインポートすると、「システム > オブジェクト > Web APIサービス」に「Slack」というサービスができていますので、これを開いて編集します。
まず、共通認証では、先程設定したベアラートークンを以下のように設定します。
次に、API仕様を参考にして、アクション「Conversations history」を追加していきます。
パラメーターとしては、以下の4つを設定します。
Channel ID: チャネルID
Limit: 取得するメッセージ数の上限
OldestTimeStamp: 取得するメッセージの中で最も古いタイムスタンプ(Unixタイムスタンプ)
LatestTimeStamp: 取得するメッセージの中で最も最新のタイムスタンプ(Unixタイムスタンプ)※Unixタイムスタンプについては、こちらを参照
上記パラメーターを使用したリクエスト形式は、以下の通りとなります。
サンプルプロセスの作成
最後に、作成したWeb APIを呼び出すサンプルプロセスを作成します。
上記例では、特定条件の元メッセージ一覧を取得し、コレクション(Messages)に出力します。
メッセージ一覧取得アクションでは、以下の入力情報(取得条件)をセットします。
Slack Bearer Token: 使用する認証情報の名前
Channel ID: チャネルID
OldestTimeStamp: 取得するメッセージの中で最も古いタイムスタンプ(Unixタイムスタンプ)
LatestTimeStamp: 取得するメッセージの中で最も最新のタイムスタンプ(Unixタイムスタンプ)
Limit: 取得件数
最後に、取得したメッセージ一覧の例を以下にご紹介いたします。
以上、今回は、DXにあるSlack for Slack Messaging Skill を修正し、メッセージ一覧取得アクションを追加する方法をご紹介いたしました。上記の方法を参考に、様々なユースケースに応じたWeb API部品, VBO, プロセスを作成頂ければと思います。
最後に、記事で作成・使用したWeb API部品, VBO, プロセス については、こちらのリリースファイル(Blue Prism v7.0.1にて作成)をダウンロードの上ご確認ください。