〜Chatwork と Microsoft Flow で タスク一覧を取得する bot を作ってみましょう!〜

API


Microsoft Flow 連携 第五弾!

Chatwork で対応中タスク一覧を取得する bot を作成しましょう。

今回作成するフローの全体は下図のようになります。配列処理や分岐が重なるため複雑そうに見えますね。全体の流れとしては、Chatworkで特定のコマンドを入力すると Microsoft Flow で特定のプロジェクトのタスク情報を取得し、タスク名の一覧を作成して Chatwork に投稿するというものです。

①~⑥の処理はそれぞれ以下のようになります。

①Chatwork の webhook から HTTP 要求を受信(トリガー)
②フロー処理で使用する変数を初期化
③Chatwork に入力されたコマンドを判定
④タスクワールドの API でタスクリストを取得
⑤④のタスクIDからタスクを1件ずつ API で取得し、対応中タスクのリストを作成
⑥処理結果のメッセージを Chatwork に投稿。

flow01_全体


※本稿に掲載されているインターフェース画像は記事がリリースされた時点のものであり、現在のものとは完全に一致しない場合があります。


事前準備

タスクワールドの API パラメータで使用するデータを確認しておきましょう。第1回を参考にして、タスクワールドの以下のデータを取得してください。

・アクセストークン
・ユーザー ID
・スペース ID
・プロジェクト ID

Chatwork は以下2つのデータを用意しておいてください。今回はwebhookの他に API でメッセージの投稿も行うため、Chatwork のトークンが必要になります。

・ルームID(チャットルームURLの「#!rid」以降のID。今回はマイチャットを使用すると良いでしょう)
・API Token(チャット画面右上のプロフィールから「API設定」を開いて発行)


カスタムコネクタの作成

Microsoft Flow にタスクワールド API のカスタムコネクタを登録します。第2回の手順を参考にして以下の API を登録して下さい。過去に作成したカスタムコネクタがある場合はそのまま使用できます。

・tasklist.get-all(タスクリスト取得)
・task.get(タスク取得)


フローの作成 ①Chatwork Webhook 受信トリガー

それではフローを作成しましょう。今回はステップ追加や条件分岐など基本的な操作についての説明を省略しますので、操作に迷ったら前回記事を参考にしてください。

最初に Chatwork の webhook からメッセージを受信するトリガーを作成します。作成手順は前回記事の「フローの作成①」を参考にして下さい。フローを一度保存すると HTTP POST の URL が設定されるので、URL を ChatworkのWebhook に設定しましょう。

flow02_トリガー



フローの作成 ②変数の初期化

フロー処理で使用する変数を初期化します。レスポンスで送信するタスク名一覧と、処理中にタスク ID を格納する配列を初期化しておきます。

flow03_変数初期化



フローの作成 ③Chatwork に入力されたコマンドを判定

条件分岐のステップを追加し、①で受信したリクエストの body で Chatwork に入力されたコマンドを確認します。今回はChatworkで「tw task list」と入力されていたら処理を実行するように設定しています。

flow04_コマンド判定


条件分岐「いいえの場合」は以降の処理を行わないので、アクション「終了」でフロー処理を終了させてください。この場合でも正常終了なので状態(ステータス)は「成功」にしましょう。

flow05_コマンド判定_NO


フローの作成 ④タスクワールドの API でタスクリストを取得

条件分岐「はいの場合」の中に後続処理を追加します。タスクワールドのカスタムコネクタ「tasklist.get-all」を追加して、リクエストパラメータに各 ID の値を設定しましょう。

flow06_コマンド判定_YES


次に繰り返し処理(「制御-Apply to each」アクション)を追加し、API レスポンスの「tasklists」からタスクリスト1件分ずつ処理を繰り返すように設定します。

flow07_tasklists判定


タスクリストはそれぞれ「is_deleted」という削除フラグを持っているので、これをチェックして削除済みかどうか判定し、未削除の場合は「tasks」のタスク ID を配列変数に格納します。

flow08_tasklists



フローの作成 ⑤タスクを1件ずつ取得して、対応中のタスクのリストを作成

「変数の設定」アクションの下に繰り返し処理を追加し、④で作成した「タスクID」配列の一件分ずつループしてタスク情報を取得するようにカスタムコネクタの「task.get」を設定します。

flow09_taskget


「task.get」の下にさらに繰り返し処理と分岐を追加します。繰り返し処理でタスクのメンバーリストをチェックし、自分自身(user_id)が担当にアサインされているか(is_assignee)を確認します。また、タスク自体が削除(is_deleted)または完了(completed_date)していないかも判定しましょう。


flow10_taskget判定


条件に合致したタスクのタスク名をレスポンス文字列に追記します。「はいの場合」に「文字列変数に追加」アクションを追加して、初期化済み変数「レスポンス」の「値」に以下の式を設定してください。
concat(' [',body('taskworld_task.get')?['task']?['title'],'] ')

flow11_タスクをリストに追加



フローの作成 ⑥処理結果のメッセージを Chatwork に投稿

最後に、⑤で作成した対応中タスクの一覧を Chatwork に投稿します。「HTTP」アクションを追加して以下のように設定してください。

・方法:POST
・URI:https://api.chatwork.com/v2/rooms/{ルームID}/messages
・ヘッダー「X-ChatWorkToken」:Chatwork の API Token
・ヘッダー「Content-type」:application/x-www-form-urlencoded
・本文:式「concat('body=',encodeUriComponent(variables('レスポンス')))」

flow12_Chatworkに送信


以上で Chatwork との連携フロー設定は終了です。Chatwork で「tw task list」と入力して、タスクワールドの対応中タスク一覧が表示されれば成功です!

flow13_動作確認



まとめ

いかがでしたでしょうか?分岐や配列の処理が増えるとフロー構成が複雑になりますが、その分応用範囲もぐっと広がりますね。タスク判定を拡張すれば、期限切れタスクを確認したり、Chatwork にタスクをコピーしたりできるようになります。みなさんもAPIを活用して、いろいろな使い方を試してみてください。

--------------

タスクワールドは、15日間無料でトライアル利用が可能です。
トライアル期間中は、アナリティクス機能を含む、そのすべての機能を無制限で使えます。
日本語によるサポートもバッチリなので、ぜひ気軽にトライアルスタートを!

twbanner_700x230_ja

1-cR7Xny-Rt1dGa1JGiexWBw

1-LXIE6IOdez6aMNcva6C6Bg