Web APIで繋がる Questetra / Trello / Slack 連携

記事タイトルとURLをコピーする

logo

こんちちは、技術1課の千葉です。

サーバーワークスでは業務フローの見える化を目的に、クラウド型ワークフローサービスの Questetra BPM Suite(http://www.questetra.com/) を導入しています。

簡単なところでは、当ブログのアカウント申請や、SSL証明書の更新申請をしたり、重いものでは法律事務所さんも含めた契約関係書類のレビューにも Questetra BPM Suite を利用しています。 (以下、Questetra)

また、ワークフローとは別に、社内のタスクの見える化を目的に、クラウド型タスク管理サービスの Trello(https://trello.com/) を導入しています。

Trelloは、ひとつのボードに Todo、Doing、Done 等のリストを設けて、そこにタスクを記載したカードを作成し、優先順位を設定することが可能です。

例えば、マネージャ陣からのアイデアは『課長・役員ボード』と呼ばれるボードにある『アイデア』リストにカードを作成します。

スマホアプリからも簡単にカードが作成できるので、食事しているときなんかに思いついたアイデアをサクッとカードにしておくことが可能です。
おかげで、日々多くのカードが『アイデア』リストに追加され、役員により『次回の会議の議題』『実行中』のリストだったり、『却下』『永遠のテーマ』といったリストへと送られています。

さて、前置きが長くなってしまいました。

プロジェクトを進めていくなかで、お客さまより頂いたご質問の回答に、当ブログの記事をご案内することがあるのですが、たまに当ブログでご紹介していない内容のご質問をいただくことがあります。

ブログに書き起こしている余裕があれば良いのですが、そうではない場合は、別途資料を作成するなどして対応しています。
しかし、これではナレッジが個人に残ってしまう為、別のメンバーが同様のご質問を頂いた際にも資料を作成してしまう。なんてことが起きてしまいます。

この問題は仕組みで解決できるハズだと考え、今回の環境を構築してみました。
イメージは↓こんな感じです。

outline

  1. 依頼者は、ブログに書き起こして欲しい内容を Questetra から依頼する
  2. Questetraは、依頼内容のTrelloカードを作成する
  3. Questetraは、依頼内容をSlackに通知する
  4. 執筆者は、Slackの通知を確認する
  5. 執筆者は、Trelloカードを『未着手』リストから『執筆中』リストへ移動する

Questetra のワークフロープロセス図は↓こちらです。

processQuestetra のプロセスデータの項目は以下のとおりです。

Questetra
Data No
項目
- 件名 文字:単一行
1 依頼事項 文字:複数行
2 Trelloへの送信メッセージ 文字:複数行
3 Trelloへの送信URL 文字:単一行
4 Slackへの通知メッセージ 文字:複数行

依頼者が入力するのは『件名』『依頼事項』の2点のみで、それ以外の3項目は Trello API / Slack API に値を値を格納する為の変数として利用します。

それでは、各ワークフローのプロパティを設定していきましょう。

1. 依頼

イベントは ヒューマンタスク を利用しています。

『件名』『記事に対する依頼事項』のみを 編集可 として、他は 表示なし とします。

step-1

2. Trelloへの送信URL作成

イベントは サービスタスク (データ設定) を利用しています。

Ttrelloのカードの『Link』に登録するURLを作成します。
『値もしくは〜』に Trelloへの送信URL を選択、値には以下の内容を登録してください。

https://xxxxxxxx.questetra.net/OR/ProcessInstance/viewPrint?forManager=false&processInstanceId=#{processInstanceId}

xxxxxxxx の部分は、ご利用しているQuestetraのURLをご確認ください。
#{processInstanceId} は、QuestetraのワークフローIDを指しています。

step-2

3. Trelloへの送信メッセージ作成

イベントは サービスタスク (データ設定) を利用しています。

Ttrelloのカードの『Description』に登録する値を作成します。
『値もしくは〜』に Trelloへの送信メッセージ を選択、値には以下の内容を登録してください。

#{data['1']}


-----

#{processInstanceInitQuserName}

data['1'] は、の数字はプロセスデータの Questetra Data No を指しており、ここでは1を設定しているので依頼事項の値を取得します。
#{processInstanceInitQuserName} は、Questetraのワークフロー作成者の名前を指しています。

step-3

4. Trelloのカード作成APIを実行

イベントは メッセージの開始イベント (HTTP) を利用しています。

まず、通信設定タブの『アクセスURL』に https://trello.com/1/cards を入力して、
『HTTP Method』に POST(multipart/from-data) を選択します。

step-4-1

つぎに、送信パラメータタブをひらき、以下の項目を追加します。
Trello API Key、Tokenは https://trello.com/1/appKey/generate から発行できます。
リストのIDについては https://developers.trello.com/advanced-reference を参照ください。

パラメータ名
key Trello API Keyの値
token Trello API Tokenの値
idList カードを作成するリストのID
name 件名 (プルダウンから選択)
desc Trelloへの送信メッセージ (プルダウンから選択)
urlSource Trelloへの送信URL (プルダウンから選択)

step-4-2

5. Slackへの通知メッセージ作成

イベントは サービスタスク (データ設定) を利用しています。

Slackへの通知メッセージを作成します。
『値もしくは〜』に Slackへの通知メッセージ を選択、値には以下の内容を登録してください。

#{processInstanceInitQuserName} さんから技術ブログの執筆依頼がありました。


タイトル: #{processInstanceTitle}

https://trello.com/b/yyyyyy/techblog-requests

#{processInstanceInitQuserName} は、Questetraのワークフロー作成者の名前を指しています。
#{processInstanceTitle} は、Questetraのワークフローの件名を指しています。
yyyyyy は、ご利用しているTrelloのURLをご確認ください。
techblog-requests は、Trelloのボード名を指しています。

step-5

6. Slackへの通知APIを実行

イベントは メッセージの開始イベント (HTTP) を利用しています。

まず、通信設定タブの『アクセスURL』に https://slack.com/api/chat.postMessage を入力して、
『HTTP Method』に POST(multipart/from-data) を選択します。

step-6-1つぎに、送信パラメータタブをひらき、以下の項目を追加します。
Slack API Tokenは https://api.slack.com/web から発行できます。

パラメータ名
token Slack API Tokenの値
channel 通知を投稿するSlackチャンネル
text Slackへの通知メッセージ (プルダウンから選択)
icon_emoji 投稿時のアイコン絵文字 (省略可能)
username 投稿時のユーザー名 (省略可能)

step-6-2


以上で設定は完了しました。

早速動かしてみましょう。

動作確認-1. Questetraから依頼を実施

check-1

動作確認-2. Trelloの『未着手』リストにカードが作成される

check-2

動作確認-3. Slackの #blog チャンネルに通知される

check-3バッチリです!

ちなみに、Auroraの記事のリクエストは ↓ 多田さんが投稿してくれました。
Auroraの技術や機能ついてまとめてみる

サーバーワークスでは、課題や問題を 仕組み で解決することを善としています。
クラウドサービスを組み合わせた仕組み作りに興味をお持ちの方は、ぜひ↓こちらをクリック!!

wantedly