今回は Questetra BPM Suite の Slack 関連の自動工程の中から、「Slack: チャット投稿 (Incoming Webhook)」と「Slack: チャット投稿 (Bots)」の2つを取り上げます。どちらも Ver. 11.9 から標準搭載されているものです。

Slack とは

Slack は、Slack 社が開発・運営するビジネス向けのチャットツールです。話題やチームなどに応じて複数のチャンネルを使い分けることができるほか、様々なアプリとの連携ができたり、API を使用して Bot を作成することもできます。

Slack について詳しくは、Slack の公式ページをご覧ください。

自動工程の説明

Slack にQuestetra からメッセージを投稿する自動工程です。2種類ありますが、基本的な機能は同じで、Slack 側でメッセージを受け取る仕組みと、それに関する設定だけが違います。

Slack 投稿工程(Incoming Webhook 版)の設定画面
Slack 投稿工程(Bots 版)の設定画面

左が Incoming Webhook 版、右が Bots 版です。 それぞれ Incoming Webhook または Bot で投稿します。

まず、双方に共通の設定項目について説明します。

項目名(項目番号は「Incoming Webhook 版/ Bots 版」)
必須 説明
C2/C3: 送信するテキスト
送信するテキストを入力します。EL 式も使用可能です。
C3/C4: Attachment の要約 (送信テキストが空の場合に、通知で使用される)「 C2: 送信するテキスト 」が空の場合、Slack からの通知に使われるテキストを入力します。EL 式も使用可能です。
C4/C5: Attachment の色Attachment のサイドバーの色を設定します。使えるのは “good” “warning” “danger” とカラーコードです。
C5/C6: Attachment のタイトルAttachment のタイトルに使用するテキストを入力します。EL 式も使用可能です。
C6/C7: Attachment のタイトルリンクAttachment のタイトルにリンクを設定する場合、リンク先の URL を入力します。EL 式も使用可能です。
C7/C8: Attachment のテキスト Attachment の本文に使用するテキストを入力します。EL 式も使用可能です。

これらは投稿するメッセージに関する設定です。テキストメッセージの他、Attachment の一部 (後述) も使えます。「送信するテキスト」「Attachment のタイトル」「Attachment のテキスト」の3つ全てが空白になっているとスクリプトエラーになります。また、 このとき、「C6: Attachment のタイトル」を入力しないと、 「C7: Attachment のタイトルリンク」 は無効になります。 これらのことに注意してください。

次に、Incoming Webhook 版固有の設定項目について説明します。

項目名
必須 説明
C1: Incoming Webhook の URL送信先となる Incoming Webhook の URL を入力します。

次に、Bots 版固有の設定項目について説明します。

項目名
必須 説明
C1: Slack Bot のトークン使用する Bot のトークンを入力します。
C2: 投稿するチャンネルの名前 投稿先となるチャンネルの名前を入力します。# の有無は問われません。

Attachment について

Attachment は、Slack のメッセージを拡張する仕組みです。Questetra の自動工程では、「タイトル」「タイトルリンク」「テキスト」「色」「Attachment の要約(フォールバックメッセージ )」に対応しています。

メッセージの各設定と実際に投稿されるメッセージとの関係は、以下の画像のようになっています(画像では Incoming Webhook 版ですが、Bots 版でも同様です)。

設定項目とメッセージとの関係

「Attachment の要約」はメッセージ本体には反映されず、「送信するテキスト」が空の場合のみ通知に使用されます。

Attachment については、Slack の公式ドキュメントもご覧下さい。

どちらを使うか

Incoming Webhook 版と Bots 版のどちらを使うかについてですが、 Slack 側の事情でどちらか一方しか使えない場合はそちらを使いましょう。どちらも使える場合、他にも Bot を使ってすることがあるのなら Bots 版 を、メッセージを送る以外にすることはないなら Incoming Webhook 版を使うとよいでしょう。

Slack の設定

使用するには、Slack で Incoming Webhook あるいは Bots の設定をする必要があります。次に示す手順で設定してください。

まず、Slack のワークスペースの設定画面を開きます。左のメニューから「App 管理」をクリックし、開いたページで「カスタムインテグレーション」をクリックします。

Incoming Webhook の場合

「Incoming Webhook」をクリックし、開いたページで「設定を追加」をクリックします。

まず、投稿先のチャンネルを指定します。チャンネルのほか、個人にダイレクトメッセージを送信することもできます。

Incoming Webhook の投稿先チャンネル設定画面

次のページで、各種設定をします。

項目名説明
チャンネルへの投稿 投稿先のチャンネルを設定します。先ほど設定したものから変更したい場合、ここで変更します。
Webhook URL 送信先となる Webhook URL です。Questetra 側の設定で使いますので、「Copy URL」を押してコピーしておきましょう。
説明ラベル Slack 上で表示される Incoming Webhook の説明を変更できます。必要に応じて入力しましょう。
名前をカスタマイズ 投稿する際に使用される名前を変更できます。標準では「incoming-webhook」です。わかりやすい名前に変更しておきましょう。
アイコンをカスタマイズする 投稿する際に使用されるアイコンを変更できます。わかりやすいアイコンに変更しておきましょう。 「 デフォルトのアイコンを使用する」をクリックすれば標準のアイコンに戻せます。
メッセージをプレビューする 実際の投稿の見た目を確認できます。

実際に設定してみると、以下のようになります。

Incoming Webhook 設定の例

「設定を保存する」をクリックすればSlack側の設定は完了です。

Bots の場合

「Bots」をクリックし、開いたページで「設定を追加」をクリックします。

まず、Bot のユーザー名を設定します。

Bot の名前設定画面

Bot のユーザー名には「21字以内で、使用できるのは小文字のアルファベット・数字・ピリオド・ハイフン・アンダーバー、最初の文字はアルファベットか数字」という制限があります。

次のページで各種設定をします。

項目名説明
API トークン この Bot を使うためのトークンです。 Questetra 側の設定で使いますので、コピーしておきましょう。
名前をカスタマイズ Bot のユーザー名です。 変更したい場合はここで設定します。
アイコンをカスタマイズする 投稿する際に使用されるアイコンを変更できます。わかりやすいアイコンに変更しておきましょう。
メッセージをプレビューする 実際の投稿の見た目を確認できます。
氏名 Slack 上で表示される名前を変更できます。標準ではユーザー名と同じになっています。
このボットの機能 Bot の用途を他のユーザーに説明する欄です。
チャンネル この Bot が Join しているチャンネルの一覧です。
API トークンの使用を制限する この Bot のトークンを使って Slack にアクセスすることのできる IP アドレスの範囲を設定できます。
ユーザー ID を移動する グローバル ID をローカル ID に変換して使うかどうか設定できます。今回の用途には関係ありません。

「インテグレーションの保存」をクリックすればこの画面での設定は完了です。

最後に、Slack の投稿したいチャンネルに作成した Bot を Invite します。投稿したいチャンネルで「/invite @[Bot の氏名]」と投稿すると invite できます。 なお、何らかの理由で Bot をチャンネルから除きたい場合は、「/remove @[Bot の氏名]」で除くことができます。

これで、設定は全て完了です。


サンプルアプリ

これらの自動工程の使い方として、例えば以下のようなものが挙げられます。

  • プロセスの終了を Slack で通知する
  • エラー発生時にその旨を Slack で通知する
  • 担当者以外にも報告されるべき事柄を自動的に Slack で報告する

ここでは基本形となるシンプルなサンプルアプリを紹介します。実際の使用時には用途に合わせて他のアプリに組み込むなどして使用してください。

サンプルアプリのワークフロー図

あらかじめセットしたテキストや Attachment を投稿するサンプルアプリです。 どのように Slack に投稿されるかを確かめるために使えます。「Slack 投稿(1)」では Attachment 付きで投稿し、「Slack 投稿(2)」 ではテキストのみを投稿することで、2つの違いを確かめられます。

データ項目は以下のようになっています。

データ項目
タイプ 必須 「件名入力」工程 説明
件名
編集可 プロセスの件名です。

まずは、「件名入力」工程 を完了します。このとき、件名を入力するようにしましょう。

次に、「Slack 投稿(1)」でメッセージを投稿します。こちらでは、Incoming Webhook 版を使います。以下のように設定しましょう。

項目名
設定内容
C1: Incoming Webhook の URLhttps://hooks.slack.com/services/xxxx/xxxx/xxxx」(設定した Incoming Webhook の URL 。xxxxの部分は設定ごとに異なります)
C2: 送信するテキストプロセスを開始しました。
C3: Attachment の要約 (送信テキストが空の場合に、通知で使用される)今回は「C3: 送信するテキスト」があるのでこれは設定しても表示されません。空にしておきます。
C4: Attachment の色#00FF00」(黄緑色になります)
C5: Attachment のタイトル#{processInstanceTitle}」(投稿時に送信元のプロセスの件名になります)
C6: Attachment のタイトルリンク 「${var[applicationRoot]}OR/ProcessInstance/listView?processInstanceId=#{processInstanceId} 」(投稿時に送信元のプロセスの詳細の URL になります )
C7: Attachment のテキスト開始ユーザ:#{processInstanceInitQuserName}
開始日時:#{processInstanceStartDatetime}
」(投稿時に前者は送信元のプロセスの開始ユーザ、後者はプロセスの開始日時になります)

次に、「Slack 投稿(2)」でメッセージを投稿します。こちらは Bots 版を使います。 URL の設定の仕方で見え方がどう変わるか確かめるため、テキストにプロセスの詳細のURLを入れます。

項目名設定内容
C1: Slack Bot のトークンxoxb-xxxx-xxxx-xxxx」 (設定した Bot のトークン 。xxxxの部分は設定ごとに異なります)
C2: 投稿するチャンネルの名前
使用したいチャンネルの名前を入力してください。
C3: 送信するテキストプロセス「#{processInstanceTitle}」が終了しました。
${var[applicationRoot]}OR/ProcessInstance/listView?processInstanceId=#{processInstanceId}
C4 ~ C8全て空にしておきます。

これで終了です。

実際に実行すると、以下のようになります。

サンプルアプリで投稿されるメッセージの例

Incoming Webhook で投稿されたメッセージにある「サンプル」は、Bot で投稿されたものにもある URL へのリンクになっています。


Slack 投稿を使えば重要な確認も忘れないようにできますので、様々な場面で活用してみてください。今回は以上です。