
「Slack にメッセージを投稿する」では、Questetra のワークフローアプリをビジネス向けのチャットツール Slack と連携させて、ワークフローから Slack に自動投稿する仕組みについて説明しました。
本記事では、Slack 内部の投稿をきっかけに、Questetra のワークフローアプリを起動させるという逆向きの連携設定について説明します。
Questetra の自動工程
開始: Slack: メッセージ受信時
Slack からの HTTP リクエストを待ち受け、受信するとプロセスが開始されます。Slack に専用アプリを作成し、連携させて利用します。
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 アプリを作成します
[開始: Slack: メッセージ受信時]のヘルプページ
・“From an app manifest” を選択し、このページの Appendix にあるマニフェストを貼り付けてください
・作成した 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: メッセージ受信時」を使用したワークフローアプリを作成し、リリースします
[開始: Slack: メッセージ受信時]ヘルプページ
・C1 に設定する Signing Secret は、手順 1 で作成した Slack アプリの Basic Information に表示されます
[開始: Slack: メッセージ受信時]工程の起動 URL を確定させるために、ワークフローアプリを作成して稼働状態にしておきます。次の設定のみを行った必要最低限のアプリを準備し、[リリース]します。
- [開始: Slack: メッセージ受信時]
- [ヒューマンタスク]
- [終了イベント]
- 必須データ項目「メッセージ」(文字型複数行)
[開始: Slack: メッセージ受信時]工程の必須設定項目[C1: Signing Secret を設定した認証設定 ]を設定します。[設定はこちらから]で HTTP 認証設定画面を開き、[アプリ固有の設定]に追加します。[トークン]に入力する値は、作成した Slack アプリページ左の[Basic Information]で表示される[App Credentials]に記載されている [Signing Secret] の文字列です。[Show]ボタンで表示させてからコピーしてください。[名前]に任意の名前をつけて保存します。

アプリ編集画面に戻り、[C1: Signing Secret を設定した認証設定 ]で今作成した設定名を選択します。設定が表示されない場合は、ブラウザでページを再読み込みして下さい。[C2: メッセージを保存するデータ項目]でデータ項目「メッセージ」を指定すると、アプリ定義エラーが解消されて[リリース]ができるようになります。
3. イベント URL の変更
[開始: Slack: メッセージ受信時]ヘルプページ
- [イベント URL の変更] 「開始: Slack: メッセージ受信時」に表示されている URL をコピーし、手順 1 で作成した Slack アプリの Event Subscriptions に表示されている Request URL を、その URL で更新します
- Request URL が verified ステータスになっていることを確認し、”Save Changes” をクリックします
Slack アプリのページサイドメニューから[Event Subscriptions]を開きます。[Request URL]には登録した manifest に記載されている
https://example.questetra.net/System/Event/Start/が表示されています。これは仮の URL で存在しないものなので、エラーになっています。[開始: Slack: メッセージ受信時]工程の設定画面に表示されているURL で上書きすると、Slack は自動的に URL に対してテストアクセスを試みます。上部の表示が「Verified✓」に変わったら、最下部の[Save Changes]で変更を保存します。

なお、「メンションされたメッセージに反応する 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_ID | – | Slack のユーザ ID | |
| チャンネル ID | 文字型(単数行) | q_Channel_ID | – | Slack のチャンネル ID | |
| スレッド ID | 文字型(単数行) | q_Thread_ID | – | Slack のスレッド 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 (下図参照) |
| 承認通知 | 申請が承認されました。 |
| 却下通知 | 申請は却下されました。 |

受信タスク (フォーム)
「申請フォーム」工程を設定します。
| [編集の可否]タブ | |
| データ項目名 | データ編集許可 |
| 件名 | |
| メッセージ | |
| Slack ユーザ ID | |
| チャンネル ID | |
| スレッド ID | |
| 氏名 | |
| 休暇開始日 | |
| 休暇終了日 | |
| 日数 | |
| 理由 | |
| [全般]タブ | |
| API キー | データ項目「Slack ユーザ ID」を指定します |
(タイマー中間イベント)
申請用の公開フォームが発行されるまで Slack への返信を待機させます。以下の式を設定します。
#now.addMinutes(1)
(データ更新)
[
「件名セット」工程を設定します。
| データ項目 | 値または式 |
| 件名 | 【休暇申請】#{#q_Start_Date}-#{#q_Name} |
申請用フォームの入力内容を利用して、プロセスの件名を自動入力します。
詳しくは「「件名」を自動設定しよう」を参照してください。
動作確認
ワークフローアプリを[リリース]してから、動作確認します。
今回は、Slack のモバイルアプリから投稿します。アイコンから「新しいメッセージ」を開いて「Questetra Bot (Direct Messages)」をチェックすると、投稿画面に移動します。適当なメッセージを投稿してしばらく待つと、返信が来ます。返信メッセージのリンクをタップすると、入力フォームが開きます。必要事項を入力して[送信]します。
Questetra の[マイタスク]に新規案件として届いているタスクを処理します。[承認][却下]いずれかの処理結果に基づいたメッセージが Slack のスレッドに返信されます。






