アダプティブカードでポチっと報告できるようにしてみた

デアダプティブカードでポチっと報告できるようにしてみた Power Automate
デアダプティブカードでポチっと報告できるようにしてみた
この記事は、Microsoft Power Automate Advent Calendar 2022 カレンダー3 6日目(2022/12/6 担当分)の記事です。

気ままに勉強会 #21#22Miyakeさんによる「Adaptive Cardsについて-基本編、応用編」の回でアダプティブカードと仲良くなれたので、会社でアダプティブカード投げてドヤりたいと思い、使いどころはないかなと考えていました。

Miyakeさんの登壇資料はこちら
Power AutomateでのAdaptive Cards – Speaker Deck

私の周りは基本テレワーク勤務です。最近、チーム編成が変わりました。新しいチームでは勤務状況把握の目的もかねて、テレワーク終了時にTeamsに「終わったよー」と書き込むルールがあります。
最初に書く人がスレッドを作り、そのスレッドに返信する形で報告しています。

コレだ!毎日定時にスレッドを誰かが作るなら、スケジュール実行すればよいじゃないか。報告する内容も同じなんだから、ボタンクリックだったら簡単になるんじゃないか?
と思いついたので試してみました。

現在の報告方法

現在は下記のように最初に業務終了するひとがスレッドを作ります。
作成されたスレッドに対して、ほかのひとが返信していきます。
手間としては大したことはないんですけど、なんかスマートじゃないですよね。

毎日定時にアダプティブカードを投げつける

まずは毎日定時にアダプティブカードを投げつけるフローを作ります。

思ったとおり動作するか確かめるためにも、最初は「手動でフローをトリガーします」のトリガーを使って作ります。

こんな感じにアダプティブカードにしてみました。

アダプティブカードの作り方は以下の資料を参考にして作成しました。
Power AutomateでのAdaptive Cards – Speaker Deck

アダプティブカードのボタンをクリックしたら返信する

次は、投げつけられたアダプティブカードの[退勤]ボタンをクリックしたら、返信するフローを作ります。

「誰かがアダプティブ カードに応答した場合」を選ぶと「When someone responds to an adaptive card」という名前になりました。(罠ですね。。。

[退勤]ボタンをクリックしたら、今までと同じように返信したいので、「チャネル内のメッセージで応答します」アクションを利用します。[投稿者]は「User」にします。

[退勤]ボタンを押してみる

さっそくテストしてみます。

なんと!誰がボタンをクリックしても、作ったユーザーが返信しています。

確認してみると、プッシュトリガーではないの

「コードのプレビュー」では、「”kind: “ApiConnection”」の記載がありました。

「実行のみのユーザー」の設定は「実行専用のユーザーによって提供されました」になっています。

あれれ?不思議ちゃんですね。トリガーの出力に「反応したユーザーのID」があったので、反応したユーザーが誰かを確認してみます。

「When someone responds to an adaptive card」トリガの未加工出力の表示を確認すると、ボタンをクリックした「田中ぱんだ子」さんになっています。

Miyakeさんの資料と参照もとになっているHiroさんのブログを確認してみました。
制限事項に「フローボットでのみのトリガー可能」「送信フローをオーナーが実行した場合のみトリガー可能」と記載がありました。これに該当しそうです。

<Miyakeさんの資料>

<Hiroさんのブログ>

Adaptive cardを利用したフローの設計パターンを変える新トリガーのご紹介 “When someone responds to an adaptive card” – MoreBeerMorePower (hatenablog.com)

プッシュトリガーを使ったフローは実行したユーザーの接続で動くことがほとんどですが、中にはこのように、どうやらプッシュトリガーでも制限で動作が変わってくるものあるようです。
検証って大事ですね。

返信方法を変更する

気を取り直して、フローを修正します。
[退勤]ボタンをクリックした人を表示する必要があるため、「ユーザー プロファイルの取得」アクションにトリガーの出力から拾える「反応したユーザーのID」を指定してユーザー情報を取得します。

返信は「チャネル内でアダプティブカードを使用して返信する」で行うことにしました。
「投稿者」は「Flow bot」ですね。

ひとまずこんな感じになりました。

やりたいことは実現できたかなと思います。

さいごに

ひとまず最低限の実現したいことはできました。
[退勤]ボタンをクリックしたひとを返信内の本文に名前を記載することで実現しました。
また、投稿時間も表示されないため、フロー内で現在の時刻を取得し、時刻も記載しました。

今回、アダプティブカードで返信しようと思ったのは、やはりプロファイルの画像が出た方が視認性がよいかなと思ったからです。

単純にプロファイルの画像を持ってくるアクションを利用しても、認証の関係で取得できなくて、画像を表示するには、認証なしでアクセスできる場所に画像がある必要があります。
いまは同じ画像に設定していますが、ユーザーに合わせた画像を表示させるような仕組みに改善していきたいと思います。

なお、まだこのフローは運用していません。近いうちに社内で導入したいと思います。

コメント