松本典子の「Azure Logic Apps」超入門 ~AI編~ 第10回
別途送られてくる通知メールからAIがパスワードを抽出、zipファイルを復号してOneDriveに保存
メールで届く添付ファイルの暗号化を自動解除するLogic Appsを作ろう
2020年10月06日 08時00分更新
4-3. ZIPFileRelease(添付ファイルのパスワードを解除)
続いて、もう1つのZIPFileReleaseワークフローを作成します。これは、後続の通知メールで届くパスワードを使って、添付ファイルのzipパスワードを解除する処理を行うものです。全体図は上の画像のような形です。
4-3-1. Azure Logic Appsのトリガーの作成
このワークフローのトリガーには、「Office 365 outlook」コネクタの「新しいメールが届いたとき(V3)」を選択します。先ほどのZIPFilemaillistとは反対に、添付ファイルが「付いていない」メールのみを処理するよう設定します。
4-3-2. Excelコネクタの設定
続いて、OneDriveにあるExcelファイル(zip-mail-list.xlsx)から、前出のZIPFilemaillistによってOneDriveに添付ファイルが保存されているメールの情報を取得します。
新しいアクションで「Excel Online (Business)」コネクタの「行の取得」アクションを選択したうえで、メールの差出人の情報を取得します。具体的な設定は上図を参考にしてください。
4-3-3. 条件コネクタの設定
パスワード通知メールは、暗号化zipファイルが添付されたメールと同じ送信者から届くはずです。そこで、ここでは条件コネクタを使い、Excelファイルの「送信者」とOutlookメールの「差出人」が一致する(true)場合にのみ、処理を継続するようにします。なお、この条件に当てはまらない場合(false)は、何も処理を行いません。
4-3-4. OneDriveコネクタの設定
上記の条件が「true」の場合には、次のように添付ファイルのパスワード解除処理を続けます。
まずは、新しいアクションとしてOneDrive for Businessコネクタの「パスによるファイルコンテンツの取得」を追加します。上図のように設定し、Excelに書き込まれた添付ファイル名を使って、OneDriveに保存されているパスワード付きのzipファイルを取得します。
4-3-5. LUISコネクタの設定
続いて、LUISを使ってパスワード通知メールからパスワードの文字列を抽出します。
まず、新しいアクションの検索で「LUIS」と検索し、LUISコネクタの「Get prediction」アクションを追加します。なお、ここでLUISに接続するための「API Key」を入力する必要がありますが、これはLUISポータルの右上にある「ユーザー設定」→「設定」で表示される「オーサリング リソース」の「Primary Key」をコピー&ペーストします。
LUISに接続できると、「App Id」のプルダウンメニューに、LUISポータルの「マイアプリ」で表示されるアプリ名が表示されます。そこで、今回利用したいテキストを学習させた「マイアプリ名」を選択します。
また、「Add new parameter」をクリックして「Desired Intent」のチェックを入れると、登録済みの「意図」がプルダウンメニューで表示されます。今回利用したいテキストを学習させている「意図」を選択します。
4-3-6. For Eachコネクタの設定
次のアクションではFor Eachコネクタを選択し、出力の選択ではLUISの動的コンテンツから「Entities Array」を指定します。
4-3-7. 作成コネクタの設定
LUISが文字列を抽出する際には、本来は存在しない半角スペースが含まれてしまうことが多くあります。そのため、これを取り除かないと本来のパスワードとは一致せず、使えないことになってしまいます。そこで半角スペースを削除する処理を行います。
新しいアクションで「データ操作」と検索し、「作成」アクションを選択します。「式」をクリックして、次の内容を入力します(以下のテキストをコピー&ペーストしてください)。
replace(items('For_each')?['entity'], ' ', '')
4-3-8. Cloudmersiveコネクタの設定
続いて、Cloudmersiveサービスを使ってzipファイルのパスワードを解除します。「Cloudmersive」と検索し、「Cloudmersive File Processing」コネクタ(紫色のアイコン)で「Decrypt and remove password reotection on zip file」アクションを選択します。
4-3-9. OneDriveコネクタの設定
パスワードを解除した添付ファイルは、OneDriveのzipfileフォルダにzipファイルとして保存します。「OneDrive for Business」コネクタの「ファイルの作成」アクションを選択し、元の添付ファイル名を付けて保存するよう設定します。
4-3-10. 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 Online (Business)」コネクタの「表に行を追加」を選択します。そのうえで、受信日時、送信者、メール件名、ファイル名、パスワードの情報を記録します。前述したとおり、先ほどとは別のテーブル(テーブル2)に情報を書き込むものなので、その点は間違えないようにしてください。
最後に
以上、今回はLUISやCloudmersiveのサービスを組み合わせて、やや複雑な処理を自動化するワークフローを作成しました。冒頭でも触れたとおり、今回作成したワークフローは添付ファイルがすべてzip暗号化されていることを前提としています。もしもこのワークフローを実用的に使いたい場合は、添付ファイルがzipファイルかどうかを判定し、処理を条件分岐するステップなどを組み込む必要があるでしょう。
また最後のステップ、メール情報とパスワードをExcelに記録する部分は不要のようにも見えますが、パスワード付きzipファイルを受信してから日数が経つと、添付ファイルを解凍するためにパスワードの通知メールを探す手間が発生しがちですので、これはこれで役に立つのではないかと考えています。皆さんの業務環境に合わせて、今回の仕組みをうまく活用いただければ幸いです。
この連載の記事
-
第11回
TECH
AI+ノーコードで動画の字幕を自動生成するツールを作ろう -
第9回
TECH
人物写真の顔をAIが検出し、ぼかしてツイートするLogic Appsを作ろう -
第8回
TECH
Power AutomateのRPA「UIフロー」でPhotoshopの操作を自動化してみよう -
第7回
TECH
「指定した場所に近づくとスマホに買い物リストを通知する」仕組みを作ろう -
第6回
TECH
文字入り画像を送るとテキストに書き起こすLINEボットを作ろう -
第5回
TECH
現在地から目的地までの道案内をするLINEチャットボットを作ろう -
第4回
TECH
音声認識AIを使ってLINEのボイスメッセージをテキスト変換してみよう -
第3回
TECH
自分用メモ的にLINE送信した予定をAIで読み取ってGoogleカレンダーに自動登録しよう -
第2回
TECH
AIで「alt属性」文章を自動生成しよう!もちろんノンコーディングで -
第1回
TECH
ノンコーディングで質問に自動回答するLINE BOTを作ってみよう - この連載の一覧へ