webMethods.io を使用して Webex Messaging の Bot を作成する(繰り返し処理)

「Webex for Developers」では「Webex Messaging」に追加可能な bot を作成することができます。

今回は iPaaS、webMethods.ioを使用してノーコード開発を行います。

繰り返し処理を使用して、1 日の予定を朝に通知してくれる Bot を作成します。


※注意※

本ブログではワークフロー作成部分から開始いたします。

webMethods.io の基本的な使用方法はブログ「webmethods.io を使用して Webex Messaging の bot を作成する」にて紹介しています。

 

今回作成するのは「毎朝8:30に当日のカレンダーを通知してくれる Bot」です。

Google Calendar から当日の予定を取得し、時間と予定タイトルをまとめて通知する Bot を作成します。

完成イメージは次のものです。

 

今回必要なアカウントは以下のものです。

・ Webex

・ webMethods.io

・ google

・ googleAPI キー

 

Google Calendar から予定を取得するには「Google Cloud Platform」から「API キー」を作成する必要があります。

「API キー」の作成は行ったことがある方も少ないと思いますので、本ブログでは以下の手順で進めます。

※google アカウントは取得されている前提で進めます

1. Google Calendar API キー作成

2. トリガー作成

3. Google Calendar 設定

4. 日付データ変換処理作成

5. 条件分岐作成

6. 配列情報データ変換処理作成

7. 繰り返し処理作成


手順からもわかる通り、繰り返し処理のワークフローは作業量が多く、複数設定が必要であるため、難易度は高めです。

ブログでは細かく解説しているので長くなっていますが、是非お時間を作ってチャレンジしていただきたいと思います。

 

1. Google Calendar API キー作成

API キーの作成は Google Cloud Platform から行います。

Google Cloud Platform へは google アカウントでログインします。

※初回ログイン時は同意確認が必要です。画面の説明を確認して進めてください。

 

メニューから「API とサービス」→「ライブラリ」を選択します。

 

「API ライブラリへようこそ」の画面が表示されるため、画面をスクロールして「Google Calendar API」を選択します。

 

「有効にする」を選択します。

 

「Google Calendar API」の概要画面が表示されたことを確認してください。

 

メニューから「API とサービス」→「認証情報」を選択します。

 

認証情報画面が表示されるため、「認証情報を作成」→「API キー」を選択します。

 

これで API キーの作成が完了しました。

※webMethods.io では直接 API キーの入力は不要です。

 

2. トリガー作成

ここからはワークフローの作成を行っていきます。

最初にトリガーを設定します。

【参考】
今回の Bot は最終的に日時指定をトリガーとします。
Bot 作成中は動作確認を行う目的で、トリガーを一度「Bot へのメッセージ送信」に設定して、最後にトリガーを日時指定に変更する方法で進めることもできます。

 

「▶」アイコンをダブルクリック、もしくは歯車アイコンをクリックして編集画面を開きます。

 

「Clock」を選択して「Next」を選択します。

 

Clock の内容を設定していきます。

・ Trigger Type:「Weekly」を選択します。

・ Timezone:「Asia/Tokyo」を選択します。

・ Days:起動する曜日を設定するので、月~金にチェックを入れます。

・ Start Time、End Time:「08:30」を設定します。

※「Start Time」「End Time」が同じであるため、繰り返し処理は行われません。

「End Time」以下の項目は適当な内容で問題ありません。

設定が完了したら「Done」で進みます。

 

トリガーに「Clock」が設定されました。

 

3. Google Calendar 設定

Google Calendar から本日の予定を取得します。

「Google Calendar」を検索して、ドラッグアンドドロップで設定します。

追加した「Google Calendar」をダブルクリック、もしくは歯車アイコンをクリックして編集画面を開きます。

 

当日の予定一覧を取得したいため、「Select Action」には「Get List of Events」を選択します。

「Authorize Google Calendar」には API キーを作成済の Google アカウントを設定していきます。

「+」から設定します。「Add Account」画面から「Add」を選択すると、Google アカウントにログインする画面に進みます。(※ログイン手順は以下に記載)

アカウントが追加できたら「Next」で進みます。

 

※Google アカウント設定手順

最初に認証確認が表示されます。内容を確認して「ALLOW」を選択します。

 

Google アカウントでログインします。

今回は参照権限があればよいので、参照ができる権限を選択して「Continue」を選択すれば完了です。

 

画面右側の「Action Configure」へ設定値を入力していきます。

・ Calendar ID:「Authorize Google Calendar」に設定した Google アカウントのメールアドレスを設定します。

・ Start Date & Time:当日の 0 時を設定します。

・ End Date & Time:翌日の 0 時を設定します。

※「Start Date & Time」「End Date & Time」はデータ変換が必要となるため、まずはカレンダーから当日、翌日をそれぞれ選択します。

設定が完了したら「Next」で進みます。

 

「Test」を実施して「OUTPUT」を確認すると、「item」に登録された予定が配列として取得できる事が確認できます。

「Done」で進むと設定完了です。

 

続いて「Start Date & Time」「End Date & Time」の値を再設定します。

現在の設定だと日付が直接設定されているため、「当日の 0 時」「翌日の 0 時」を汎用的に設定できるようにします。

この設定を行うために、「変換処理」が必要になります。

 

4. 日付データ変換処理作成

「Start Date & Time」「End Date & Time」に「当日の 0 時」「翌日の 0 時」を設定するため、「変換処理」を行います。

再度「Google Calendar 」の編集画面を開きます。

「Google Calendar」編集画面の「Incoming Data」から、「Transform」→「Add New」を選択します。

 

「Transform Name」には「本日」と設定し、「Transform Data」には当日の日時を取得可能な「Get Current Date String」を選択します。

「Get Current Date String」に必要な入力情報が「Action Configure」に展開されます。

 

「Action Configure」を設定します。

・ Pattern:表示形式を入力します。

「Google Calendar」の「Start Date & Time」をカレンダーから入力した際の形式が「YYYY-MM-DDT00:00:00.000Z」であったため、「YYYY-MM-DDT00:00:00.000」に変換します。

・ Locale:「en」を入力します。

・ Timezone:「Asia/Tokyo」と入力します。

入力したら「Done」を選択します。

 

「Transform」に「本日」が追加されました。

続いて「翌日 0 時」を追加したいので、再度「Add New」を選択します。

 

「翌日」のデータは「本日」のデータに1日追加する方針で作成します。

「Transform Name」には「翌日」と設定し、「Transform Data」には日付の加算操作が可能な「Increment Date」を選択します。

 

「Action Configure」を設定します。

・ Date:作成した「本日」の「value」をドラッグアンドドロップで設定します。

・ Input Pattern:「本日」設定した「Pattern」の形式を指定します。

「本日」の「Pattern」は「YYYY-MM-DDT00:00:00.000」で設定したため、「YYYY-MM-DDTHH:mm:ss.SSS」を設定します。

・ Add xxxx:日付のみ 1 日追加するため、「Add Days」にのみ「1」を設定して他「0」を設定します。

・ Locale:「en」を入力します。

・ Timezone:「Asia/Tokyo」と入力します。

・ Output Pattern:「本日」の「Pattern」と同様の「YYYY-MM-DDT00:00:00.000」を設定します。

・ Output Locale:「en」を入力します。

入力したら「Done」を選択します。

 

「Transform」に「翌日」が追加されました。

 

作成した「本日」「翌日」を「Google Calendar」に設定します。

「Start Date & Time」へは「本日」の「value」を、「End Date & Time」へは「翌日」の「value」を設定します。

また、「本日」「翌日」共に形式は「YYYY-MM-DDT00:00:00.000」であり、「Google Calendar」の入力形式は「YYYY-MM-DDT00:00:00.000Z」であるため、「本日」「翌日」の値の後ろに「Z」を追加します。

設定が完了したら「Next」→「Done」で完了します。

 

「Transform」が設定されたアイテムには「変換」アイコンが表示され、オンマウスで設定内容の要約を確認できます。

 

5. 条件分岐作成

「Switch」を追加して、予定があった場合となかった場合の分岐を作成します。

※webMethods.io の条件分岐の使用方法はブログ「webmethods.io を使用して Webex Messaging の bot を作成する(条件分岐)」にて紹介しています。

「Switch」をドラッグアンドドロップで設定します。

 

Bot 応答の冒頭アナウンスを作成します。

「Cisco Webex Teams Bot」をドラッグアンドドロップで設定します。

「Cisco Webex Teams Bot」をダブルクリック、もしくは「歯車アイコン」を選択して編集画面を開きます。

 

「Select Action」は「Send Private Message」に設定します。

「Name」は「予定あり」とします。

「Connect to Cisco Webex Teams Bot」には「+」から発信を行う Bot を設定してください。

設定が完了したら「Next」で進みます。

 

今回は別のブログで作成してきたワークフローと異なり、発言する Bot 以前に Bot に対するインプットが存在しないため、「User Email ID」を「Incoming Data」から取得する事ができません。

「User Email ID」には Bot の通知を受け取りたいユーザーの Webex アカウントに登録されているメールアドレスを直接入力します。

・ User Email ID:Bot の通知を受信するユーザーの Webex アカウントに登録されているメールアドレスを設定します。

・ Plain Text Message:「★本日の予定★」と入力します。

設定が完了したら「Next」→「Done」の順に選択して進みます。

 

予定ありの場合の通知が作成完了しました。

続いて予定なしの Bot 通知を作成するっため、Bot 処理を「コピー用紙」アイコンをクリックして複製します。

 

追加した「Cisco Webex Teams Bot」を「Switch」と接続します。

Bot の処理を編集するため、コピーした「Cisco Webex Teams Bot」をダブルクリック、もしくは「歯車アイコン」を選択します。

 

「Name」を「予定なし」に修正し、「Next」で進みます。

 

「Plain Text Message」のみ「★本日の予定はありません★」と変更し、「Next」→「Done」の順に選択して進みます。

 

予定なしの通知 Bot は後続処理が存在しないため、終点「■」とフローをつなぎます。

 

続いて条件分岐の設定をします。

「case1」は Google Calendar で予定が 1 件以上取得できた場合に、それ以外は「予定なし」に振り分けます。

 

先に「case2」の条件を「Default」に変更します。

「case2」を選択して「歯車アイコン」から編集画面を開きます。

 

「Select Case」は「Default」を選択して「Done」で進みます。

 

「case2」が「default」に変更された事が確認できました。

続いて「Case1」の条件を設定します。

「case1」を選択して「歯車アイコン」から編集画面を開きます。

 

分岐の条件を設定する前に、取得したカレンダーの情報を変換する必要があります。

「カレンダーから取得した予定の件数」を条件に使用したいため、この件数を使用できるようデータ変換を作成します。

 

6. 配列情報データ変換処理作成

「case1」の編集画面の「Incoming Data」スペースから「Transform」を選択して、「Add New」を選択します。

 

「Transform Data」には「Size」を選択します。

「Size」は「Array」と「Object」の2種類あります。

今回は「Google Calendar」の API で取得した予定の数、すなわち「item」配列の数を使用したいため、「Array」の「Size」を選択します。

 

「Action Configure」の「Array」に「Google Calendar」の「item」を設定して「Done」で進みます。

 

変換処理が作成できたため、条件分岐の設定に戻ります。

・ Input:先ほど作成した「本日の予定数」の「size」を設定します。

・ Condition:数値比較である「(Number)」の項目から「Greater Than」を設定します。

・ Expected:「0」を設定することで、「Condition」と合わせて「本日の予定数が 0 より大きい場合」となります。

設定が完了したら「Done」で進みます。

 

7. 繰り返し処理作成

最後に、取得した予定の内容を Bot が通知する処理を作成します。

取得した予定数繰り返し処理を行い、すべての予定を通知するようにします。

ここで「Loop」を使用します。

 

「Loop」を検索してドラッグアンドドロップで設定します。

「Loop」をダブルクリック、もしくは「歯車アイコン」を選択することで「Loop」の編集画面を開きます。

 

「Loop」の編集画面はワークフローになっています。

「Loop」の条件を設定するため、「歯車アイコン」を選択します。

 

「Number of Times」に Loop の繰り返し回数を設定します。

「取得した予定数」繰り返すため、変換処理済みの「本日の予定数」の「value」を設定します。

「Next」→「Done」の順に選択して進みます。

 

続いて繰り返す処理を作成します。

「Cisco Webex Teams Bot」をドラッグアンドドロップで設定します。

「Cisco Webex Teams Bot」をダブルクリック、もしくは「歯車アイコン」を選択して編集画面を開きます。

 

「Select Action」は「Send Private Message」に設定します。

「Name」は「予定内容」とします。

「Connect to Cisco Webex Teams Bot」には発信を行う Bot を設定してください。

設定が完了したら「Next」で進みます。

 

ここで、作成したい Bot の発言内容を確認します。

 

「09:30-10:30:打合せ」のように、「【開始時刻】-【終了時刻】:【予定タイトル】」で形成します。

「Google Calendar」が使用している日時の仕様は「YYYY-MM-DDTHH:mm:ss.SSSZ」であるため、「開始時刻」と「終了時刻」は「Transform」による変換が必要です。

また、情報を取得する「item」は「Array」です。「Array」は「0」から指定する必要があります。

現在何番目の配列の処理を行っているかは、「Loop」アイテムの「currentindex」から取得できますが、「currentindex」は「1」から開始しています。

よって「currentindex」を直接「item」の配列の指定に使用できないため、「Transform」による変換が必要になります。

 

まずは「Index」のずれを調整します。

「Transform」を選択し、「Add New」を選択します。

 

「Transform Name」には「index」と設定し、「Transform Data」は数値の差を計算する「Substract」を選択します。

展開された「Action Configure」を設定します。

「1回目」の処理でindex「0」を指定する必要があるため、「currentindex」から「1」引く必要があります。

・ Number1:引かれる数を設定するので、Loop の「currentindex」を設定します。

・ Number2:引く数を設定するので、「1」を設定します。

設定したら「Done」で進みます。

 

次に「予定開始時刻」を変換します。

「Transform」を選択し、「Add New」を選択します。

 

「Google Calendar」の日時の戻り値は GMT になっているため、日本時間に調整します。

「Transform Name」には「予定開始時刻」と設定し、「Transform Data」には時刻を加算する「Increment Date」を選択します。

「Increment Date」の計算結果の出力形式を指定することで、「HH:mm」型に変換も行います。

 

値を設定していきます。

「Google Calendar」の「item」→「start」→「date time」が開始時刻に該当するので、「Date」に設定します。

設定した後、カーソンを合わせて編集モードにすると、index 指定が「0」固定になっている事が確認できます。

 

「現在処理している予定の開始時刻」を設定する必要があるため、「0」ではなく「index」で指定する必要があります。

先ほど変換して作成した「index」を配列部分に設定すれば、ループ処理中の予定の配列情報を使用する事ができます。

 

「Action Configure」を設定します。

・ Date:上記の通り、「item」→「start」→「date time」の index を「0」→「index」にして設定します。

・ Input Pattern:「Google Calendar」の形式「YYYY-MM-DDTHH:mm:ss.SSS」を設定します。

・ Add xxxx:日本時間に調整します。「Add Hours」に「9」を設定して、他「0」を設定します。

・ Locale:「en」を入力します。

・ Timezone:「Asia/Tokyo」と入力します。

・ Output Pattern:「HH:mm」を設定します。

・ Output Locale:「en」を入力します。

入力が完了したら「Done」を選択します。

 

最後に「予定終了時刻」を変換します。

「Transform」を選択し、「Add New」を選択します。

設定内容は「予定開始時刻」とほとんど同じであるため、説明は省略します。

終了時刻は「Google Calendar」の「item」→「end」→「date time」に設定されているため、「Date」の値設定のみ注意してください。

入力が完了したら「Done」を選択します。

 

これで必要情報の変換が完了しました。

Bot 完成まであと一息です!

 

変換した情報を使用して Bot が発言するテキストを作成します。

「【開始時刻】-【終了時刻】:【予定タイトル【ループ index】】」の情報を「Plain Text Message」に設定します。

画面では見づらいですが、テキストでは以下のようになっています。

{{$transform.t5.value}}-{{$transform.t6.value}}:{{$a0.items[{{$transform.t4.value}}].summary}}

入力が完了したら「Next」→「Done」の順に選択し進みます。

 

Loop 内の終点までフローを繋げれば Loop 処理が完成です。

「X」アイコンから Loop 処理の編集を終了します。

 

メインフローの画面に戻ってきました。

Loop の作成が完了したため、最後に Loop と終点をフローでつなげて完成です。

 

画面右上が「On」になっている事を確認して、「Save」を選択します。

 

これで Bot が完成しました。

毎日「8:30」に、「Google Calendar」に登録された予定を通知してくれます。

トリガー作成時に補足した通り、作成中はトリガーを時刻ではなく Bot  にして、Bot に話しかける事で応答の確認をすることができるので、トリガーを Bot にしている場合は Bot にメッセージを送信して応答を確認してみてください。

 

いかがだったでしょうか。

冒頭にも記載した通り、Loop 処理には数値変換も必要であり、作成難易度は高かったと思います。

しかし、今回の Bot 作成で条件分岐や繰り返し処理、変換といった頻繁に使用する処理を一通り体験いただけたと思います。

当記事もご参考いただき、WebexAPI を活用して Bot や便利ツールをノーコード開発してみませんか?

 

大野真由

"コラボレーション担当のテクニカルソリューションズスペシャリスト。シスコシステムズに2021年入社。前職はシステムインテグレーターのシステムエンジニアで、Webexを使用していた観点からWebexのAPI、SDKの活用をご紹介します。"