〜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