見出し画像

ソリューション連携 第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つを設定します。

  1. Channel ID: チャネルID

  2. Limit: 取得するメッセージ数の上限

  3. OldestTimeStamp: 取得するメッセージの中で最も古いタイムスタンプ(Unixタイムスタンプ)

  4. 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にて作成)をダウンロードの上ご確認ください。