PowerAutomateのインスタントクラウドフローは、フローの所有者のほかに「実行のみユーザー」という権限でほかのユーザーに共有できます。この機能を使って、フローを実行するユーザーAから別のユーザーBへTeamsチャットでメッセージを送信することを考えます。
Teamsコネクタのアクションを調べていくと、チャットまたはチャネルでメッセージを投稿するを使用すればチャットのメッセージを送れるような気がします。ところが、チームのチャネルに投稿する方法とグループチャットに投稿する方法はわかりやすいわりに、普通のチャットすなわち個人から個人へチャットする場合はどうしたら良いかぱっと見でわかりません。そこで、このページでは個人から個人へチャットを送る方法を2つ紹介します。
フローの例
フローの例を下図に示します。分岐の右側のフローが方法1、左側が方法2です。
方法1: グループチャットの宛先に1人だけ入れる
それアリ?という感じがしますが、これが最もそれらしい振る舞いをします。
まず、チャットの作成アクションで追加するメンバーに宛先となるメールアドレスを入力します。ここで、宛先のメールアドレスがひとつだけの場合、フロー実行者と宛先の2者間のチャットを指定する会話IDが返ります。グループチャットのタイトルを指定する欄がありますが、タイトルを何にしようと影響はなく、常に2者間の通常のチャットを指定する会話IDが返ります。
こうして得られた会話IDを使って、チャットまたはチャネルでメッセージを投稿するアクションを動作させます。投稿者をユーザーとすればフローの実行者がチャットを送信することになります。投稿先をグループチャット、グループチャットには先ほどの会話IDを入れます。メッセージの記入欄が表示されるので、そこに動的なコンテンツを含むメッセージ本文を記入します。リンクを張りたい場合などは、ボタンを押してHTMLを記述します。
チャットの作成アクションの宛先について注意が必要な点として、実行ユーザー自身を指定できません。もしチャットの宛先にフローの実行者が入る可能性がある場合は、後述する方法2を使用します。
チャットの作成アクションは、宛先が複数のときと今回試したような宛先が1つのときで挙動が違うのに注意してください。宛先が複数あるとき、すなわちグループチャットを作成する場合にはグループチャットの構成メンバーとタイトルが同一であろうとチャットの作成アクションが動作するごとに異なる会話IDが生成されます。
方法2: フローボットとのチャット
チャットまたはチャネルでメッセージを投稿するアクションで、投稿者を「フローボット」、投稿先を「フローボットとチャットをする」に設定します。
宛先の指定は、Recipientに受信者のメールアドレスを指定するだけで十分です。
メッセージの記入欄が表示されるので、そこに動的なコンテンツを含むメッセージ本文を記入します。リンクを張りたい場合などは、ボタンを押してHTMLを記述します。
番外編: チャット相手を指定してTeamsクライアントを立ち上げる
URIスキーマを使うと、宛先を指定した状態でTeamsクライアントのチャット画面を開かせることができます。
宛先のメールアドレスがexample@onmicrosoft.comのとき
https://teams.microsoft.com/l/chat/0/0?users=example@onmicrosoft.com
のように書きます。
PowerAppsのLaunch関数でこのようなURIスキーマを開かせることで、通常のTeamsクライアントでチャットを送る動作をとれます。
番外編: Power AppsからTeamsコネクタを使ってメッセージを送る
Power AppsのSharePointコネクタでリストを読み込んだり、Outlookコネクタでメールを送信したりするのと同様に、Teamsコネクタでメッセージを送信できます。私はやり方がわからなかったのでAutomateで処理しましたが、Power AppsからTeamsのグループチャットに直接メッセージを送る方法を真似すればできそうな気がします。
Power Apps上で処理が完結できると、エラー処理を含めてユーザーにフィードバックを与えながら処理をできるので、全体としてUXが向上すると期待できます。
「Power Automateの実行ユーザーから特定の個人へTeamsチャットのメッセージ送信」についての記事、参考になりました。ありがとうございます。
余力があれば、実行後の画面があると有難いです。
ご存じかもしれませんが、ユーザーにすると後から当該メッセージを削除できるそうです。