タスクワールド(Taskworld)ブログ

とにかく使いやすい!実際の業務で重宝する機能が満載!

〜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

〜Chatwork(チャットワーク) と Microsoft Flow でタスクを登録してみましょう!〜

API


Microsoft Flow 連携 第四弾!

Chatwork から Flow 経由でタスクワールドにタスクを登録しましょう。

Chatwork にはメンションや会話を通知する Webhook という機能があります。今回はこれを利用して、Chatwork のチャットルームに投稿されたメッセージを Flow で受信し、タスクワールドにタスクとして登録する処理を作成します。

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


事前準備

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

・アクセストークン
・スペース ID
・プロジェクト ID
・タスクリスト ID

それと今回は Flow と Chatwork のアカウントを使用します。それぞれログイン確認を行っておいてください。


カスタムコネクタの作成

フローを作成する前に、Flow からタスクワールドにタスクを登録するためのカスタムコネクタを作成します。

Postman で taskcreate のクエリを作成し、クエリのテンプレートをエクスポートします。このテンプレートを Flow にインポートして、カスタムコネクタを作成しましょう。詳しい手順は第2回を参考にして下さい。過去に作成したカスタムコネクタがある場合はそのまま使用できます。


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

それではフローを作成しましょう。まずは Microsoft Flow 管理画面にログインし、左メニューの「マイフロー」から「+新規」「一から作成」を選択します。

01_flow101_new


「コネクタとトリガーの検索画面」が開いたら検索バーに「要求」と入力し、表示された候補から「HTTP 要求の受信時」を選択します。Chatwork の Webhook から送信するリクエストをこのアクションで受信するように、これから設定していきます。

02_flow102_トリガー検索


アクションを選択すると HTTP 受信設定のフォームが表示されます。ここから「サンプルのペイロードを使用してスキーマを生成する」をクリックして、サンプルの JSON を入力するフォームを開きましょう。

03_flow103_HTTP要求受信


ペイロードとはデータの意味で、HTTP リクエストでは一般的にリクエストのボディ部を指します。ここでは JSON でリクエストボディのデータ型を設定したいので、Chatwork の API ドキュメントから webhook の「リクエストボディのサンプル」を丸ごとコピーして入力欄に貼り付けましょう。

04_flow104_sampleJSON


完了ボタンを押すと元のフォームにサンプル JSON が設定されます。この時「Content-Type ヘッダーを要求に忘れずに含めてください」などのメッセージが出る場合がありますが、今回は無視して大丈夫です。あとは「詳細オプションを表示する」をクリックして method「POST」を選択しましょう。

Chatwork からのリクエスト受信設定はこれで完了です。

05_flow105_新しいステップ



フローの作成 ②Taskworld タスク登録アクション

続けて「新しいステップ」をクリックして、タスクワールドにタスクを登録するアクションを作成してください。

アクション選択フォームが開いたら検索バーに「task.create」と入力し、あらかじめ作成したタスク登録 API のカスタムコネクタを選択します。

06_flow201_TW選択


access_token 以下、リクエストのパラメータを設定します。title(登録するタスク名)は Chatwork に入力したメッセージを設定したいので「動的なコンテンツの追加」から「body」を選択しましょう。

07_flow202_taskcreate設定


ここまで入力したら保存ボタンでフローを保存します。

保存後に「HTTP 要求の受信時」をクリックして再度開くと「HTTP POST の URL」欄に URL が設定されているのが確認できますね。

08_flow203_アクション保存


次にこの URL を Chatwork の Webhook に設定しましょう。


Chatwork の Webhook 送信設定

ブラウザで Chatwork の画面を開き、右上のアイコンから「API 設定」を開きます。

11_cw01_api設定


左側のメニューで「Webhook」を開いて「新規作成」ボタンをクリックし、Webhook 作成画面を開きます。

「Webhook URL」に先ほど作成した Flow の HTTP 要求アクションの URL を設定します。「イベント」は特定のチャットルームにメッセージが投稿された時に実行したいので「ルームイベント」を選択し、「メッセージ作成」をチェックします。「ルームID」は今回使用するチャットルームの URL を確認して URL の「#!rid」に続く数字を ID として設定しましょう。

12_cw02_webhook_new


以上で Chatwork との連携フロー設定は終了です。Chatwork でメッセージを投稿して、タスクワールドの同じ名前のタスクが登録されれば成功です!

13_cw03_create1


14_cw03-2_create1_tw



コマンドを制御する

ここからはおまけです。上記の設定だと投稿したメッセージがすべてタスク登録されてしまうため、使い勝手が良くありません。そこで、特定の文から始まるメッセージだけタスク登録するようにフローを改善してみましょう。

21_flow301_制御追加


Flow 管理画面の左側メニュー「マイフロー」から先ほど作成したフローを編集します。

まずはアクションを追加します。「HTTP 要求の受信時」の次に「変数を初期化する」と「条件」の2つのアクションを追加してください。

「変数を初期化する」の設定は上図を参考に設定してください。値は後から書き換えるので、空欄のままで大丈夫です。

「条件」はタスクを登録する場合のメッセージのパターンを設定します。 今回は body(Chatwork のメッセージ)が「○○」で始まる場合を設定します。「○○」は任意の文言で構いません。ここでは「tw task create 」としました。

「条件」の下、「はいの場合」は、条件に一致する場合つまりタスクワールドにタスクを登録する場合の追加処理を設定します。メッセージから「tw task create 」の部分を取り除いてタスク登録したいので、該当部分を空の文字列に置換しましょう。「はいの場合」アクションの追加から「変数の設定」を追加し、初期化済みの変数「タスク名」を選択し、動的なコンテンツの追加から「式」を選択して以下の関数を設定します。

replace(triggerBody()?['webhook_event']?['body'],'tw task create ','')

「いいえの場合」はタスクを登録せずにフローを終了させたいので、アクションの追加で「終了」を追加します。これは異常終了ではないので、状態は「成功」を設定してください。

以上を設定したらフローを保存して動作確認してみましょう。特定の文から始まるメッセージだけがタスク登録できれば成功です!

22_cw04_create2


23_cw04-2_create2_tw



まとめ

いかがでしたでしょうか?Chatwork はビジネスで外部とのコミュニケーションによく利用されるツールなので、タスクワールドと連携させれば、組織をまたいだ情報連携が柔軟に行えるようになりますね。

Microsoft Flow の変数や制御は、ノンプログラマの方には少し難易度が高いですが、使いこなせば様々なデータ処理が実現できます。興味がある方はぜひいろいろな使い方を試してみてください。

次回は Chatwork からタスクワールドを参照する bot を作成します。お楽しみに!

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

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

twbanner_700x230_ja

1-cR7Xny-Rt1dGa1JGiexWBw

1-LXIE6IOdez6aMNcva6C6Bg

〜Microsoft Flow のカスタムコネクタで新着タスクをSlack(スラック)に通知!〜

API


Microsoft Flow 連携 第三弾!

今回は定期的に新着タスクをチェックして Slack に通知するフローを作成しましょう。

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

事前準備

フローを作成する前に、パラメータで使用するタスクワールドのデータを確認しましょう。第1回を参考にしてタスクワールドのアクセストークンと、スペースおよびプロジェクトの ID を取得してください。それと今回は特定のタスクリストを監視して新着タスクをチェックするので、対象にするタスクリストをひとつ選んで、タスクリストの ID を確認しておきましょう。

そして今回は Flow と Slack のアカウントを使用しますので、それぞれログイン確認を行っておいてください。

カスタムコネクタの作成

Flow からタスクワールド API を呼ぶためのカスタムコネクタを作成します。

Postman で tasklist.get-all のクエリを作成し、クエリのテンプレートをエクスポートします。このテンプレートを Flow にインポートして、カスタムコネクタを作成しましょう。詳しい手順は第2回を参考にしてください。

フローの作成

カスタムコネクタを作成したら、フローを作成します。今回はタイマーで定期的にフローを起動してタスクワールド API を実行します。タスクリストを取得し、1時間以内に作成されたタスクがあれば、タスクの名前を Slack に送信します。

まず Microsoft Flow 管理画面にログインし、左メニューの「マイフロー」から「+新規」の「一から作成」を選択します。

01_new_flow

「多数のコネクタやトリガーを検索する」をクリックしてコネクタの選択画面を開き、検索欄に「繰り返し」と入力して、トリガー欄に表示された「繰り返し」のアイコンを選択します。

02_select_loop_timer

「繰り返し」の設定フォームが開くので、起動間隔を1時間に設定します。

03_set_timer

入力したら「+新しいステップ」をクリックして、今度は先ほど作成した tasklist.get-all のカスタムクエリを選択します。

04_sel_cutom_query

tasklist.get-all のリクエストパラメータを入力します。

05_set_cutom_query

次のステップでは、タスクワールド API のレスポンス JSON を解析して、タスクリストから新しいタスクを抽出する処理を設定します。

「+新しいステップ」をクリックして検索欄に「フィルター」と入力し、「配列のフィルター処理」を選択します。

06_sel_array_filter

フィルター設定の「差出人」(フィルターを適用する配列)をクリックすると右側に入力補助のフォームが表示されるので、「動的なコンテンツ」タブから tasklist.get-all の「tasks」を選択します。

07_set_array_filter_1

次に、左下の「詳細設定モードで編集」をクリックし、条件欄に以下のように入力します。

@greater(convertToUtc(item()?['created'], 'UTC', 'yyyy-MM-dd HH:mm'),formatDateTime(addhours(utcnow(),-1),'yyyy-MM-dd HH:mm'))
この条件でタスクの作成日時を判定し、現在より1時間以内に作成されたタスク情報だけを抽出して、後続の処理で使用できるようにします。

08_set_array_filter_2

次が最後のアクションになります。「+新しいステップ」をクリックして「slack」で検索し、「投稿メッセージ」を選択します。

09_sel_slack

設定フォームでメッセージを投稿したいチャネルを選択します。「メッセージテキスト」は動的コンテンツから「配列のフィルター処理」の「title」を選択しましょう。メッセージは動的コンテンツの他に任意の文字も入力できます。

10_set_slack

フィルターのコンテンツを選択するとアクションが自動的に「Apply to each」でラップされて、配列の繰り返し処理を行うようになります。この状態で「保存」をクリックしてフローを保存しましょう。これでフロー作成は完了です!

11_save_flow


フローの動作確認

画面右上の「テスト」をクリックしてフローの動作確認をしてみましょう。「トリガーアクションを実行する」を選択して「保存&テスト」をクリックし、続けて表示される確認ウインドウでは「フローの実行」「完了」と進みます。

処理結果の画面で「ご利用のフローが正常に実行されました。」と表示されればOKです。もし失敗した場合は、赤いチェックが付いたステップをクリックしてエラー情報を確認しましょう。

13_result

フローが正常に動作できたら、Slack への投稿処理も確認をしてみましょう。タスクワールドに新規タスクを登録してからフローのテストを実行して Slack にタスク名が投稿されれば成功です!

14_tw_add_new_task


15_slack_message


まとめ

いかがでしたでしょうか?このように Flow ではメジャーなサービスへのコネクタが揃っているので、Slack 以外にも様々なサービスをタスクワールドと連携させられます。また、より複雑な分岐や条件を盛り込むことで、高度にカスタマイズした通知も可能になります。

皆さんもぜひ Flow との連携にチャレンジしてみてください!

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

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

twbanner_700x230_ja

1-cR7Xny-Rt1dGa1JGiexWBw

1-LXIE6IOdez6aMNcva6C6Bg

↑このページのトップヘ