このページの本文へ

前へ 1 2 3 次へ

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

別途送られてくる通知メールからAIがパスワードを抽出、zipファイルを復号してOneDriveに保存

メールで届く添付ファイルの暗号化を自動解除するLogic Appsを作ろう

2020年10月06日 08時00分更新

文● 松本典子 編集● 大塚/TECH.ASCII.jp

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

4-3. ZIPFileRelease(添付ファイルのパスワードを解除)

ZIPFileReleaseの全体図

 続いて、もう1つのZIPFileReleaseワークフローを作成します。これは、後続の通知メールで届くパスワードを使って、添付ファイルのzipパスワードを解除する処理を行うものです。全体図は上の画像のような形です。

4-3-1. Azure Logic Appsのトリガーの作成

トリガーの作成

 このワークフローのトリガーには、「Office 365 outlook」コネクタの「新しいメールが届いたとき(V3)」を選択します。先ほどのZIPFilemaillistとは反対に、添付ファイルが「付いていない」メールのみを処理するよう設定します。

4-3-2. Excelコネクタの設定

Excelコネクタの作成

 続いて、OneDriveにあるExcelファイル(zip-mail-list.xlsx)から、前出のZIPFilemaillistによってOneDriveに添付ファイルが保存されているメールの情報を取得します。

 新しいアクションで「Excel Online (Business)」コネクタの「行の取得」アクションを選択したうえで、メールの差出人の情報を取得します。具体的な設定は上図を参考にしてください。

4-3-3. 条件コネクタの設定

条件コネクタの設定

 パスワード通知メールは、暗号化zipファイルが添付されたメールと同じ送信者から届くはずです。そこで、ここでは条件コネクタを使い、Excelファイルの「送信者」とOutlookメールの「差出人」が一致する(true)場合にのみ、処理を継続するようにします。なお、この条件に当てはまらない場合(false)は、何も処理を行いません。

4-3-4. OneDriveコネクタの設定

OneDrive for Businessコネクタの設定

 上記の条件が「true」の場合には、次のように添付ファイルのパスワード解除処理を続けます。

 まずは、新しいアクションとしてOneDrive for Businessコネクタの「パスによるファイルコンテンツの取得」を追加します。上図のように設定し、Excelに書き込まれた添付ファイル名を使って、OneDriveに保存されているパスワード付きのzipファイルを取得します。

4-3-5. LUISコネクタの設定

LUISコネクタの設定

 続いて、LUISを使ってパスワード通知メールからパスワードの文字列を抽出します。

 まず、新しいアクションの検索で「LUIS」と検索し、LUISコネクタの「Get prediction」アクションを追加します。なお、ここでLUISに接続するための「API Key」を入力する必要がありますが、これはLUISポータルの右上にある「ユーザー設定」→「設定」で表示される「オーサリング リソース」の「Primary Key」をコピー&ペーストします。

LUISコネクタの設定(API Keyの入力)

 LUISに接続できると、「App Id」のプルダウンメニューに、LUISポータルの「マイアプリ」で表示されるアプリ名が表示されます。そこで、今回利用したいテキストを学習させた「マイアプリ名」を選択します。

 また、「Add new parameter」をクリックして「Desired Intent」のチェックを入れると、登録済みの「意図」がプルダウンメニューで表示されます。今回利用したいテキストを学習させている「意図」を選択します。

4-3-6. For Eachコネクタの設定

For Eachコネクタの設定

 次のアクションではFor Eachコネクタを選択し、出力の選択ではLUISの動的コンテンツから「Entities Array」を指定します。

4-3-7. 作成コネクタの設定

作成コネクタの設定

 LUISが文字列を抽出する際には、本来は存在しない半角スペースが含まれてしまうことが多くあります。そのため、これを取り除かないと本来のパスワードとは一致せず、使えないことになってしまいます。そこで半角スペースを削除する処理を行います。

 新しいアクションで「データ操作」と検索し、「作成」アクションを選択します。「式」をクリックして、次の内容を入力します(以下のテキストをコピー&ペーストしてください)。

replace(items('For_each')?['entity'], ' ', '')

4-3-8. Cloudmersiveコネクタの設定

Cloudmersiveコネクタの設定

 続いて、Cloudmersiveサービスを使ってzipファイルのパスワードを解除します。「Cloudmersive」と検索し、「Cloudmersive File Processing」コネクタ(紫色のアイコン)で「Decrypt and remove password reotection on zip file」アクションを選択します。

4-3-9. OneDriveコネクタの設定

OneDriveコネクタの設定

 パスワードを解除した添付ファイルは、OneDriveのzipfileフォルダにzipファイルとして保存します。「OneDrive for Business」コネクタの「ファイルの作成」アクションを選択し、元の添付ファイル名を付けて保存するよう設定します。

4-3-10. Excelコネクタの設定

Excelコネクタの設定

 パスワード解除処理が済んだところで、処理対象の添付ファイル/メール情報を一時記録していたExcelのリストから情報を削除します。この処理をすることで、同じ送信者からまた別の添付ファイル付きメールが届いても対応できるようにします。

 「Excel Online (Business)」コネクタの「行の削除」アクションを選択し、添付ファイル名をキーとして行を削除します。なお、処理対象とする「テーブル」は間違えないようにしてください(筆者の場合は「テーブル1」)。

4-3-11. 並列分岐の追加

 最後に、同じExcelファイルの別のシート(テーブル2)に、送信者の情報やパスワードを記録します。こちらの記録は処理が終わっても削除せず、保存しておくものです(不要であれば、以下は作成しなくても構いません)。

並列分岐の追加

 上述したExcelコネクタのアクション(4-3-10)に続けてもよいのですが、ここでは「並列分岐の追加」を利用してみましょう。

 先ほど作成したCloudmersiveコネクタ(4-3-8)の下にある矢印にマウスを合わせると、上図のような表示が出ますので「並列分岐の追加」を選択します。これにより、上述したOneDriveコネクタやExcelコネクタのアクション(4-3-9、4-3-10)と同時に、以下のアクションも並行して処理されます。お互いに独立した(依存関係のない)アクションであれば、並行分岐で処理したほうが早く終わります。

Excelコネクタの設定

 新しいアクションとして、「Excel Online (Business)」コネクタの「表に行を追加」を選択します。そのうえで、受信日時、送信者、メール件名、ファイル名、パスワードの情報を記録します。前述したとおり、先ほどとは別のテーブル(テーブル2)に情報を書き込むものなので、その点は間違えないようにしてください。

最後に

 以上、今回はLUISやCloudmersiveのサービスを組み合わせて、やや複雑な処理を自動化するワークフローを作成しました。冒頭でも触れたとおり、今回作成したワークフローは添付ファイルがすべてzip暗号化されていることを前提としています。もしもこのワークフローを実用的に使いたい場合は、添付ファイルがzipファイルかどうかを判定し、処理を条件分岐するステップなどを組み込む必要があるでしょう。

 また最後のステップ、メール情報とパスワードをExcelに記録する部分は不要のようにも見えますが、パスワード付きzipファイルを受信してから日数が経つと、添付ファイルを解凍するためにパスワードの通知メールを探す手間が発生しがちですので、これはこれで役に立つのではないかと考えています。皆さんの業務環境に合わせて、今回の仕組みをうまく活用いただければ幸いです。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事