このページの本文へ

前へ 1 2 3 4 次へ

松本典子の「Azure Logic Apps」超入門 ~AI編~ 第3回

Azure Logic Appsから自然言語処理AI「LUIS」を使う

自分用メモ的にLINE送信した予定をAIで読み取ってGoogleカレンダーに自動登録しよう

2018年11月13日 13時00分更新

文● 松本典子 編集 ● 羽野/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

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」をクリックします。

For eachの設定

 「以前の手順から出力を選択」には、「動的なコンテンツ」一覧から「Entites Array」を選択します。

  1. 右端の「・・・」をクリックしメニューを表示させます
  2. 「設定」をクリック

順次処理に設定を変更する

 Logic Appsの「For each」はデフォルト設定が並列処理数は20アクションになっています。このあとの処理は「1アクションずつEntitiesを変数コネクタに設定したい」ので、順次処理になるよう変更します。

 図を参考に、「規定値のオーバーライド:オン」、「並列処理の次数:1」に変更し、完了をクリックします。

制御構文の「スイッチ(条件多分岐)」を利用する

 「アクションの追加」をクリック後、検索窓に「制御」と入れて検索し「スイッチ」をクリックします。

制御構文の「スイッチ(条件多分岐)」を利用する

 制御構文の「スイッチ(条件多分岐)」を利用して、「変数の初期化」で作成した変数に値を入れていきます。例として、Entites「date(日付)」を変数に設定してみます。

  1. 動的なコンテンツの「Entities Array Entity Type」を選択
  2. Entites「date」と入力
  3. 「変数」コネクタの中から「変数を設定」をクリック。名前に「date」と入力
  4. 動的なコンテンツの「Entities Array Entity Value」を選択
  5. 「ケース」を増やす場合クリックします

 この方法を元に、初期化した5つの変数(date、time、name、location、action)のケースを作成します。「2」と「3」の部分をそれぞれの名前で変更します。デフォルトで作成されている「既定」は何も入力しません。

動的なコンテンツで選択できる形

 ここまでの処理で、LUISの結果で出力されるJSONの内容から必要な値が「動的なコンテンツ」で選択できるようになりました。

3-3-4.Googleカレンダーに登録するための処理

データ操作コネクタ

 「アクションの追加」をクリック後、検索窓に「データ操作」と入れて検索し「作成」をクリックします。

文字列を日付形式に変更

 LUISで解析した「date」をカレンダー登録に利用できる日付形式に変換する必要があります。今回はLogic Apps の「式」で利用できる「formatDateTime」を使って文字列を日付形式にします。

  1. フォーム内でクリックして右のメニューを表示させる
  2. 「式」をクリック
  3. 日時タイトルの右にある「もっと見る」をクリックすると表示される「formatDateTime」をクリック
  4. 「date」と入力、更新をクリック

 この処理で、例えば「10/1」や「10月1日」が「2018-10-01T00:00:00.0000000」という表記に変わり、Googleスケジュールで利用できる形になります。

Googleカレンダーの設定

 「アクションの追加」をクリック後、検索窓に「Google」と入れて検索し「Googleカレンダー」>「イベントの作成」をクリックします。結果的に、図の表示になるよう「動的なコンテンツ」を入れていきます。

  • date:日付(9/1 や 9月1日 の形式)
  • time:時間(12:00 や 12時 の形式)
  • name:人名
  • location:場所(博多、小倉、本社など場所を表す単語)
  • action:スケジュールの内容(打ち合わせ、ミーティング)

 変数に入っている値は上記の内容です。今回はスケジュールのタイトルが以下の形になるようにしています。


[14時]打ち合わせ(博多)
  1. カレンダーID:複数ある場合はスケジュールを入力したいものを選択
  2. 開始(終了)時刻:動的なコンテンツの「作成」>出力を選択。Googleカレンダー入力はこの部分に工夫が必要で「タイムゾーンの設定」が必須になります。今回は「2018-10-01T00:00:00.0000000」にタイムゾーンを表す「+9:00」を直に入力して追記することで対処しました。
  3. 説明:「スケジュールの内容(人名)」の表記になるよう、動的なコンテンツを選択
  4. 場所:動的なコンテンツ「location」を選択
  5. タイトル:「[時間]スケジュール内容(場所)」の表記になるよう、動的なコンテンツを選択

 今回は簡易入力なので、時間は「00:00:00」で入力されます。

3-3-5. 登録できたことをLINEで返信する処理

HTTPコネクタの設定

 「HTTP」コネクタを利用して、スケジュール登録が完了したら「スケジュール登録しました!」とメッセージを返信する処理を入れます。

 詳しい入力方法は「ノンコーディングで質問に自動回答するLINE BOTを作ってみよう」に記載していますので参考にされてください。

実行結果

 最後に、実行結果を確認してみます。

LINE画面

 「10月2日の14:00から藤崎さんと博多で打ち合わせ」というスケジュールを送信し、「スケジュール登録しました!」と返信があっています。

Googleカレンダー

 スケジュールとしてGoogleカレンダーに入力されています。時間は「00:00~00:00」になっており、時間登録は手動になってしまいますが、タイトルに時間が入るようにすればわかりやすくなるのではないでしょうか。

 また、スケジュールがうまく登録されない場合は、「For each」の制御が「順次処理」になっているかを確認してみてください。

最後に

 今回は、ノンコーディングでLINEからGoogleカレンダーに簡易スケジュール登録を行う方法を紹介しました。今回の方法では、スケジュールの時間登録は対応できていませんが、「とりあえず打ち合わせがある日をすぐに入力しておきたい!」場合に活用いただければと。

 Logic Apps には制御構文や変数などプログラム的な要素や、Excelの関数のようなイメージで利用できる「式(変数)」があり、それらを組み合わせるとできることの幅も広がります。ぜひ便利な使い方を工夫してみてください!

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事