松本典子の「Azure Logic Apps」超入門 ~AI編~ 第3回
Azure Logic Appsから自然言語処理AI「LUIS」を使う
自分用メモ的にLINE送信した予定をAIで読み取ってGoogleカレンダーに自動登録しよう
2018年11月13日 13時00分更新
3-3-3.結果の「Entities」を変数コネクタに設定
LUISの結果は、このようなJSONで出力されます。
{"query":"10/1の14:00から藤崎さんと博多で打ち合わせ","topScoringIntent":{"intent":"Plans","score":0.990802169},"intents":[{"intent":"Plans","score":0.990802169},{"intent":"None","score":0.009833375}],"entities":[{"entity":"打ち合わせ","type":"action","startIndex":20,"endIndex":24,"score":0.9307871},{"entity":"10/1","type":"date","startIndex":0,"endIndex":3,"score":0.8842769},{"entity":"博多","type":"location","startIndex":17,"endIndex":18,"score":0.891659141},{"entity":"藤崎","type":"name","startIndex":12,"endIndex":13,"score":0.9227258},{"entity":"14:00","type":"time","startIndex":5,"endIndex":9,"score":0.9319584}]}
この結果を「date:10/1」、「time:14:00」という形で後続の処理で利用できるようにします。「アクションの追加」をクリック後、検索窓に「制御」と入れて検索し「For each」をクリックします。
「以前の手順から出力を選択」には、「動的なコンテンツ」一覧から「Entites Array」を選択します。
- 右端の「・・・」をクリックしメニューを表示させます
- 「設定」をクリック
Logic Appsの「For each」はデフォルト設定が並列処理数は20アクションになっています。このあとの処理は「1アクションずつEntitiesを変数コネクタに設定したい」ので、順次処理になるよう変更します。
図を参考に、「規定値のオーバーライド:オン」、「並列処理の次数:1」に変更し、完了をクリックします。
「アクションの追加」をクリック後、検索窓に「制御」と入れて検索し「スイッチ」をクリックします。
制御構文の「スイッチ(条件多分岐)」を利用して、「変数の初期化」で作成した変数に値を入れていきます。例として、Entites「date(日付)」を変数に設定してみます。
- 動的なコンテンツの「Entities Array Entity Type」を選択
- Entites「date」と入力
- 「変数」コネクタの中から「変数を設定」をクリック。名前に「date」と入力
- 動的なコンテンツの「Entities Array Entity Value」を選択
- 「ケース」を増やす場合クリックします
この方法を元に、初期化した5つの変数(date、time、name、location、action)のケースを作成します。「2」と「3」の部分をそれぞれの名前で変更します。デフォルトで作成されている「既定」は何も入力しません。
ここまでの処理で、LUISの結果で出力されるJSONの内容から必要な値が「動的なコンテンツ」で選択できるようになりました。
3-3-4.Googleカレンダーに登録するための処理
「アクションの追加」をクリック後、検索窓に「データ操作」と入れて検索し「作成」をクリックします。
LUISで解析した「date」をカレンダー登録に利用できる日付形式に変換する必要があります。今回はLogic Apps の「式」で利用できる「formatDateTime」を使って文字列を日付形式にします。
- フォーム内でクリックして右のメニューを表示させる
- 「式」をクリック
- 日時タイトルの右にある「もっと見る」をクリックすると表示される「formatDateTime」をクリック
- 「date」と入力、更新をクリック
この処理で、例えば「10/1」や「10月1日」が「2018-10-01T00:00:00.0000000」という表記に変わり、Googleスケジュールで利用できる形になります。
「アクションの追加」をクリック後、検索窓に「Google」と入れて検索し「Googleカレンダー」>「イベントの作成」をクリックします。結果的に、図の表示になるよう「動的なコンテンツ」を入れていきます。
- date:日付(9/1 や 9月1日 の形式)
- time:時間(12:00 や 12時 の形式)
- name:人名
- location:場所(博多、小倉、本社など場所を表す単語)
- action:スケジュールの内容(打ち合わせ、ミーティング)
変数に入っている値は上記の内容です。今回はスケジュールのタイトルが以下の形になるようにしています。
[14時]打ち合わせ(博多)
- カレンダーID:複数ある場合はスケジュールを入力したいものを選択
- 開始(終了)時刻:動的なコンテンツの「作成」>出力を選択。Googleカレンダー入力はこの部分に工夫が必要で「タイムゾーンの設定」が必須になります。今回は「2018-10-01T00:00:00.0000000」にタイムゾーンを表す「+9:00」を直に入力して追記することで対処しました。
- 説明:「スケジュールの内容(人名)」の表記になるよう、動的なコンテンツを選択
- 場所:動的なコンテンツ「location」を選択
- タイトル:「[時間]スケジュール内容(場所)」の表記になるよう、動的なコンテンツを選択
今回は簡易入力なので、時間は「00:00:00」で入力されます。
3-3-5. 登録できたことをLINEで返信する処理
「HTTP」コネクタを利用して、スケジュール登録が完了したら「スケジュール登録しました!」とメッセージを返信する処理を入れます。
詳しい入力方法は「ノンコーディングで質問に自動回答するLINE BOTを作ってみよう」に記載していますので参考にされてください。
実行結果
最後に、実行結果を確認してみます。
「10月2日の14:00から藤崎さんと博多で打ち合わせ」というスケジュールを送信し、「スケジュール登録しました!」と返信があっています。
スケジュールとしてGoogleカレンダーに入力されています。時間は「00:00~00:00」になっており、時間登録は手動になってしまいますが、タイトルに時間が入るようにすればわかりやすくなるのではないでしょうか。
また、スケジュールがうまく登録されない場合は、「For each」の制御が「順次処理」になっているかを確認してみてください。
最後に
今回は、ノンコーディングでLINEからGoogleカレンダーに簡易スケジュール登録を行う方法を紹介しました。今回の方法では、スケジュールの時間登録は対応できていませんが、「とりあえず打ち合わせがある日をすぐに入力しておきたい!」場合に活用いただければと。
Logic Apps には制御構文や変数などプログラム的な要素や、Excelの関数のようなイメージで利用できる「式(変数)」があり、それらを組み合わせるとできることの幅も広がります。ぜひ便利な使い方を工夫してみてください!
この連載の記事
-
第11回
TECH
AI+ノーコードで動画の字幕を自動生成するツールを作ろう -
第10回
TECH
メールで届く添付ファイルの暗号化を自動解除するLogic Appsを作ろう -
第9回
TECH
人物写真の顔をAIが検出し、ぼかしてツイートするLogic Appsを作ろう -
第8回
TECH
Power AutomateのRPA「UIフロー」でPhotoshopの操作を自動化してみよう -
第7回
TECH
「指定した場所に近づくとスマホに買い物リストを通知する」仕組みを作ろう -
第6回
TECH
文字入り画像を送るとテキストに書き起こすLINEボットを作ろう -
第5回
TECH
現在地から目的地までの道案内をするLINEチャットボットを作ろう -
第4回
TECH
音声認識AIを使ってLINEのボイスメッセージをテキスト変換してみよう -
第2回
TECH
AIで「alt属性」文章を自動生成しよう!もちろんノンコーディングで -
第1回
TECH
ノンコーディングで質問に自動回答するLINE BOTを作ってみよう - この連載の一覧へ