~Chatwork と Power Automate で タスク一覧を取得する bot を作ってみましょう!~

API


Microsoft Power Automate 連携 第五弾!

Chatwork で対応中タスク一覧を取得する bot を作成しましょう。
Chatworkで特定のコマンドを入力すると Power Automate で指定プロジェクトのタスク情報を取得し、タスク名の一覧を作成して Chatwork に投稿します。
フローの全体は下図のようになります。

flow01_全体


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

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


事前準備

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

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

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

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


カスタムコネクタの作成

Power Automate にタスクワールド 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」と入力されていたら処理を実行するように設定します。
10_flow04_command_name


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

flow05_コマント゛判定_NO


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

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

flow06_コマント゛判定_YES


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

10_flow08_tasklists


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

flow08_tasklists



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

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

10_flow09_taskget


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

10_flow10_taskget


条件に合致したタスクのタスク名をレスポンス文字列に追記します。「はいの場合」に「文字列変数に追加」アクションを追加して、初期化済み変数「レスポンス」の「値」に以下の式を設定してください。

concat('[',outputs('task.get')?['body/task/title'],'] ')

10_flow11_add_tasktolist


フローの作成 ⑥処理結果のメッセージを 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を活用して、いろいろな使い方を試してみてください。

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

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

twbanner_700x230_ja

1-cR7Xny-Rt1dGa1JGiexWBw

1-LXIE6IOdez6aMNcva6C6Bg