Slack への投稿でプロセスを開始する

Slack にメッセージを投稿する」では、Questetra のワークフローアプリをビジネス向けのチャットツール Slack と連携させて、ワークフローから Slack に自動投稿する仕組みについて説明しました。

本記事では、Slack 内部の投稿をきっかけに、Questetra のワークフローアプリを起動させるという逆向きの連携設定について説明します。

Questetra の自動工程

開始: Slack: メッセージ受信時

開始: Slack: メッセージ受信時

Slack からの HTTP リクエストを待ち受け、受信するとプロセスが開始されます。Slack に専用アプリを作成し、連携させて利用します。

Slack: メッセージ送信 (Block Kit 対応)

Slack: メッセージ送信 (Block Kit 対応)

Slack にメッセージを投稿する」で使用したアイテムです。今回は「チャンネル ID」 や「スレッド ID」を設定して、Slack の元スレッドに返信メッセージを投稿します。

Slack アプリの作成と Questetra との連携設定

Questetra と Slack の連携は、Questetra のワークフローアプリに設置された自動工程と、Slack のワークスペース(Slack の利用基盤)にインストールされた Slack アプリによって行われます。Slack App ディレクトリには Slack 社やサードパーティによって作成、配布されているアプリが用意されています。また、利用者自身が独自のアプリを作成、インストールして利用することもできます。

Slack にメッセージを投稿する」では、あらかじめ Questetra 社によって Slack に用意されている Slack アプリ(Bot)が利用されています。ワークスペースへのインストールは、連携設定の手順の間に自動的に行われます。

本記事で使用するアイテム[開始: Slack: メッセージ受信時]は、ワークフローアプリに工程として設置されたときに固有の起動 URL が割り当てられます。Slack アプリがこの URL に HTTP リクエストを送信して Questetra のプロセスが開始されます。起動 URL が登録された Slack アプリは、利用者自身が作成、インストールして利用します。

開始: Slack: メッセージ受信時]工程のヘルプページを参考に、以下の手順で Slack アプリを作成します。

1. Slack アプリの作成とインストール

1. [Slack アプリの作成とインストール] Slack のアプリ一覧ページ を開き、新しい Slack アプリを作成します
  ・“From an app manifest” を選択し、このページの Appendix にあるマニフェストを貼り付けてください
  ・作成した Slack アプリをワークスペースにインストールするのを忘れないようにしてください

[開始: Slack: メッセージ受信時]のヘルプページ

ご利用の Slack にログインしているブラウザで Slack のアプリ一覧ページhttps://api.slack.com/apps/)を開きます(Fig 1)。[Create New App]をクリックし、開く画面(Fig 2)で“From an app manifest” を選択するとワークスペースを指定する画面へと移ります(Fig 3)。

ワークスペースを選択して[Next]すると manifest の登録画面(Fig 4)となります。Slack での manifest とは、Slack アプリの各設定項目に一括で設定を行えるよう YAML または JSON 形式でまとめたものです。[開始: Slack: メッセージ受信時]工程ヘルプページの「Appendix」に 2 種類の manifest が用意されていますので、いずれかをコピー&ペーストします。ここでは「ダイレクトメッセージに反応する Bot」を使用します(Fig 5)。

確認画面(Fig 6)を経て、Slack アプリが作成されます。まだ設定が必要な項目がいくつかありますが、[Install your app] からインストールしておきましょう。

作成された Slack アプリの名称や Bot ユーザ名は、 manifest に記載されている「Questetra Bot (Direct Messages)」となっています。作成後に以下の方法で任意の名称に変更できます。
・アプリ名:Slack アプリ詳細ページ > [Basic Information]>[Display Information]
・Bot ユーザ名:[ホーム]>(対象アプリ)>[ワークスペース情報]>[設定]

2. Questetra ワークフローアプリの作成とリリース

2. [Questetra ワークフローアプリの作成とリリース] Questetra BPM Suite で「開始: Slack: メッセージ受信時」を使用したワークフローアプリを作成し、リリースします
  ・C1 に設定する Signing Secret は、手順 1 で作成した Slack アプリの Basic Information に表示されます

[開始: Slack: メッセージ受信時]ヘルプページ

[開始: Slack: メッセージ受信時]工程の起動 URL を確定させるために、ワークフローアプリを作成して稼働状態にしておきます。次の設定のみを行った必要最低限のアプリを準備し、[リリース]します。

  • [開始: Slack: メッセージ受信時]
  • [ヒューマンタスク]
  • [終了イベント]
  • 必須データ項目「メッセージ」(文字型複数行)

[開始: Slack: メッセージ受信時]工程の必須設定項目[C1: Signing Secret を設定した認証設定 ]を設定します。[設定はこちらから]で HTTP 認証設定画面を開き、[アプリ固有の設定]に追加します。[トークン]に入力する値は、作成した Slack アプリページ左の[Basic Information]で表示される[App Credentials]に記載されている [Signing Secret] の文字列です。[Show]ボタンで表示させてからコピーしてください。[名前]に任意の名前をつけて保存します。

Slack アプリ詳細画面

アプリ編集画面に戻り、[C1: Signing Secret を設定した認証設定 ]で今作成した設定名を選択します。設定が表示されない場合は、ブラウザでページを再読み込みして下さい。[C2: メッセージを保存するデータ項目]でデータ項目「メッセージ」を指定すると、アプリ定義エラーが解消されて[リリース]ができるようになります。

3. イベント URL の変更

  1. [イベント URL の変更] 「開始: Slack: メッセージ受信時」に表示されている URL をコピーし、手順 1 で作成した Slack アプリの Event Subscriptions に表示されている Request URL を、その URL で更新します
    • Request URL が verified ステータスになっていることを確認し、”Save Changes” をクリックします
[開始: Slack: メッセージ受信時]ヘルプページ

Slack アプリのページサイドメニューから[Event Subscriptions]を開きます。[Request URL]には登録した manifest に記載されている

https://example.questetra.net/System/Event/Start/
が表示されています。これは仮の URL で存在しないものなので、エラーになっています。[開始: Slack: メッセージ受信時]工程の設定画面に表示されているURL で上書きすると、Slack は自動的に URL に対してテストアクセスを試みます。上部の表示が「Verified✓」に変わったら、最下部の[Save Changes]で変更を保存します。

起動 URL の認証

なお、「メンションされたメッセージに反応する Bot」を作成した場合は、さらに「Bot のチャンネルへの招待」が必要となります。

ここまでできれば[開始: Slack: メッセージ受信時]工程との連携設定は完了です。

では、作成したアプリの Bot にメッセージを送ってみましょう。Slack の[ホーム]の[App]から「Questetra Bot (Direct Messages)」を選び、何かメッセージを書いて送信しましょう。受信できていれば、Questetra のワークフローの[マイタスク]にタスクが届いています。

サンプルアプリ

上記で Slack との連携確認した[リリース]済のワークフローアプリを編集して、「外部からの申請受付フロー」を作成します。Questetra のアカウントを持たない Slack ユーザが Slack にメッセージを投稿すると、Questetra のプロセスが開始される仕組みになります。

受信タスク(フォーム)]で入力用フォームが Web 上に作成され、その URL が Slack のメッセージスレッドに通知されます。フォームへの入力内容が送信されると、その入力用フォームは外部からアクセスできなくなります。

なお、ここでは「休暇申請」を想定してデータ項目を設定しています。承認後の工程は省略し、結果通知だけになっています。

データ項目

データ項目名タイプフィールド名必須「承認する」工程説明
件名プロセスの件名
メッセージ文字型(複数行)q_Message投稿の内容
Slack ユーザ ID文字型(単数行)q_User_IDSlack のユーザ ID
チャンネル ID文字型(単数行)q_Channel_IDSlack のチャンネル ID
スレッド ID文字型(単数行)q_Thread_IDSlack のスレッド ID
氏名文字型(単数行)q_Nameフォームに入力された氏名
休暇開始日日付型(YMD)q_Start_dateフォームに入力された開始日
休暇終了日日付型(YMD)q_Until_dateフォームに入力された終了日
日数数値型q_Daysフォームに入力された休暇日数
理由文字型(複数行)q_Reasonフォームに入力された休暇理由

開始: Slack: メッセージ受信時

「Slack 開始」工程を設定します。

項目名必須説明
C1: Signing Secret を設定した認証設定「Slack アプリの作成と Questetra との連携設定」で設定済みです。
C2: メッセージを保存するデータ項目Slack での投稿文を保存するデータ項目を指定します。「Slack アプリの作成と Questetra との連携設定」で設定済みです。
C3: Slack ユーザ ID を保存するデータ項目Slack で投稿したユーザの ID を指定します。今回は「Slack ユーザ゙ID」を指定します。
C4: チャンネル ID を保存するデータ項目Slack で投稿が行われたチャンネルの ID を保存するデータ項目を指定します。今回は「チャンネル ID」を指定します。
C5: スレッド ID を保存するデータ項目Slack で行われた投稿のスレッドの ID を保存するデータ項目を指定します。今回は「スレッド ID」を指定します。

Slack: メッセージ送信 (Block Kit 対応)

「フォーム URL 通知」「承認通知」「却下通知」の各工程を設定します。

項目名必須説明
C1-a: HTTP 認証設定 (Questetra が登録済みの Bot を使用する場合)今回は使用しません。
C1-b: HTTP 認証設定HTTP 認証設定を追加して、設定名を指定します*
C2: チャンネル ID (名前も可) 開始イベントでチャンネル ID が保存されるデータ項目を指定します。今回は「チャンネル ID」を指定します。
C3: スレッド ID開始イベントでチャンネル ID が保存されるデータ項目を指定します。今回は「スレッド ID」を指定します。
C4: 返信をチャンネル全体にブロードキャストする今回は使用しません。
C5: メッセージ(Block Kit)今回は使用しません。
C6: メッセージ(Markdown)投稿する文章を設定します。(3つの工程でそれぞれ内容が異なります**)

* HTTP 認証設定を追加して、設定名を指定します

このサンプルアプリでは、上記で作成した Slack アプリと連携させます。同じ Slack アプリを対象としていても[Slack: メッセージ送信 (Block Kit 対応)]と[開始: Slack: メッセージ受信時]とは認証に用いるトークンが異なります。[設定はこちらから]でHTTP認証設定を追加して[トークン]に[Bot User OAuth Token]を指定します。[Bot User OAuth Token]は Slack アプリの設定ページの[OAuth & Permissions]を開くと表示されます。

[C1-a: HTTP 認証設定 (Questetra が登録済みの Bot を使用する場合) ]に「Slack にメッセージを投稿する」で行った設定をしても動作します。この場合、Slack ユーザがメッセージを送信したのとは別の Bot から返信が来ることになります。

** C6: メッセージ(Markdowm)の設定内容

工程名設定内容
フォーム URL 通知下記の Web フォームで詳細を入力してください。
${var[applicationRoot]}System/ReceiveTask/Form/#{processModelInfoId}/11/#{processInstanceId}/#{#q_User_ID}/view
(下図参照)
承認通知申請が承認されました。
却下通知申請は却下されました。
Web フォームの URL

受信タスク (フォーム)

「申請フォーム」工程を設定します。

[編集の可否]タブ
データ項目名データ編集許可
件名
メッセージ
Slack ユーザ ID
チャンネル ID
スレッド ID
氏名
休暇開始日
休暇終了日
日数
理由
[全般]タブ
API キーデータ項目「Slack ユーザ ID」を指定します

(タイマー中間イベント)

申請用の公開フォームが発行されるまで Slack への返信を待機させます。以下の式を設定します。

#now.addMinutes(1)

(データ更新)

[

「件名セット」工程を設定します。

データ項目値または式
件名【休暇申請】#{#q_Start_Date}-#{#q_Name}

申請用フォームの入力内容を利用して、プロセスの件名を自動入力します。
詳しくは「「件名」を自動設定しよう」を参照してください。

動作確認

ワークフローアプリを[リリース]してから、動作確認します。

今回は、Slack のモバイルアプリから投稿します。アイコンから「新しいメッセージ」を開いて「Questetra Bot (Direct Messages)」をチェックすると、投稿画面に移動します。適当なメッセージを投稿してしばらく待つと、返信が来ます。返信メッセージのリンクをタップすると、入力フォームが開きます。必要事項を入力して[送信]します。

Questetra の[マイタスク]に新規案件として届いているタスクを処理します。[承認][却下]いずれかの処理結果に基づいたメッセージが Slack のスレッドに返信されます。

上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む