続きを書こうと思いましたが、Qiitaに書くことにしました。
今後も詳細についてはQiitaに書きますが、こちらにも概要を書いていきたいと思います。
Power Automateによる「検温報告」の仕組み(1)
当社で行っている取り組みについて、ご紹介していきたいと思います。
さまざまな取り組みを行っていますが、DXの取り組みとして、Microsoft Power Platformの製品の一つである、Power Automateを活用しています。
Power Automate - Microsoft
1回目は、Power Automateによる「検温報告」を取り上げます。
(プレミアムコネクタ使用のため、有料プランが必要です。)
概要
コロナ対策で、毎日の検温を義務付けている会社さんも多いのではないでしょうか。
当社では、LINE WORKSで毎日の検温を報告する仕組みを取っており、その仕組みを実現するために、Power Automateを活用しています。
毎日、決まった時間にBotが検温報告を促し、その結果をSharePointに保存したExcelファイルに自動で記録します。
また、37.5℃以上の発熱がある場合や、ほかの体調不良が報告された場合は、私のところにLINE WORKSで通知が来るようにしています。
フローの概要
この仕組みは2つのフローで実現しています。
- 検温報告を求めるフロー
(毎日20時にスケジュール実行) - 検温報告を受けるフロー
(Callbackを受け取ったら実行)
1の「求めるフロー」は、決まった時間になったら、LINE WORKSからユーザーのリストを取得して、各ユーザーに検温報告Botが検温報告を促すメッセージを投稿します。
2の「受けるフロー」は、ユーザーが検温報告を行ったら、Botが返すCallbackを受け取って、Excelシートに記録したり、次の質問を投稿したり、体調異常があった場合に管理者に投稿したりします。
「検温報告を求めるフロー」
大まかな流れは右の図の通りです。
LINE WORKのAPI IDは、Azure Key Vaultに格納していて、それを取り出しています。
(各アクションの設定で、「セキュリティで保護された出力」をオンにしておくとよいと思います)
見たらわかると思いますが、LINE WORKSの新APIにはまだ対応していません。(そのうち、直します)
その後の変数の初期化や、JSONの解析は、LINE WORKSのシークレットをJSONにして、解析しているだけです(参照しやすくするためだけの処理)。
ユーザーリストの取得
ユーザーリストを取得するAPIを叩きます。
旧APIでは、最大のページサイズが100名ぶんとなっているため、それ以上のユーザーがいる場合は、ループを回してアレイ変数に格納するとよいです。
当社では、100名までいくことは当分なさそうなので、1回叩いて終わりにしています。
ユーザーごとの処理
条件アクションの中身です。
ユーザーリストが正常に取得で来たら、Apply to Eachでユーザーごとにループを回します。
なお、ユーザーから報告が来た際にExcelのリストと照合するためのキー列として利用するため、現在時刻を文字列としてIDに利用しています。
Botによるメッセージ投稿
メッセージをJSONでちまちま書いていきます。
quickReply で回答してもらうようにしています。
LINE WORKS Developers - トーク共通プロパティ
Callbackを受け取ったときに、紐づけできるよう、postbackに現在時刻から生成したIDをJSONで書いています。(要エンコード)
回答があったときに記録するように、Excelにあらかじめ行を作っておいて、このフローはおしまいです。
検温結果や咳などの列は、「検温報告を受けるフロー」で記入していくため、ここでは空欄のままです。
まとめ
長くなるので、「検温報告を受けるフロー」は別記事にまとめます。
特段難しいことはないかと思いますが、APIを叩いたことがない方は、HTTPアクションが難しく感じるかもしれません。
プレミアムコネクタなので、Microsoft 365に付属のライセンスだけでは利用できないため、別途料金がかかりますが、Power Automateを使い込むには必須だと思っています。
直接APIを叩くと、さまざまなクラウドサービスの利用の幅が一気に広がるので、ぜひ挑戦してみてはいかがでしょうか。
コメントをお書きください