MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power AutomateからTeamsに@メンション入りメッセージを送る

はじめに

Power AutomateでTeams向けアクションに「ユーザーの@メンショントークンを取得する」が追加されたことに伴い、以前の方法よりも大幅に手軽に@メンション付きのメッセージを送ることができるようになりました。

f:id:mofumofu_dance:20200710225659p:plain

対象のアクションは以下の4種です。

  1. メッセージを投稿する (V3)
  2. メッセージをフロー ボットとしてチャンネルに投稿する
  3. 独自のアダプティブ カードをフロー ボットとしてチャンネルに投稿する
  4. アダプティブ カードを Teams チャネルに投稿して応答を待機

なお、あくまでも ユーザーの なので、チャンネルやチームへのメンションはできません。

1. メッセージを投稿する(V3)

フローの実行ユーザーからメッセージをチャンネルに投稿するアクションでは、単純に「ユーザーの@メンショントークンを取得する」で取得した結果 (<at>user@example.com</at>の形式)をメッセージ中に挿入するだけでメンションが追加されます。

f:id:mofumofu_dance:20200710230248p:plain

f:id:mofumofu_dance:20200710231026p:plain

2. メッセージをフロー ボットとしてチャンネルに投稿する

Flow botからメッセージを送る場合には、Markdown形式で装飾することができます。 メンションの挿入は 1.と同様に「ユーザーの@メンショントークンを取得する」で取得した結果を挿入するだけです。

f:id:mofumofu_dance:20200710230939p:plain

f:id:mofumofu_dance:20200710231131p:plain

3. 独自のアダプティブ カードをフロー ボットとしてチャンネルに投稿する

今回の仕様追加箇所で最も大きいのはこのアクションかと思います。

これまでは非常に面倒なスキーマを駆使して@メンションを実現していました。 

以前の仕様で書いた記事 (旧)Power AutomateからTeamsに@メンションを送る方法 - MoreBeerMorePower

このスキーマでも正しくメンションされますが、追加された「ユーザーの@メンショントークンを取得する」の結果だけでもメンション可能になります。

f:id:mofumofu_dance:20200710231538p:plain

f:id:mofumofu_dance:20200710231639p:plain

これが一番個人的には効きました。デザイナーで作ったカードのJSONに加える変更が、これなら最小ですみますね。

4. アダプティブ カードを Teams チャネルに投稿して応答を待機

アダプティブカードのアクションでもう一つ、応答を待機するアクションがあります。

これも@メンショントークンの取得結果だけでメンションできるようになっています。

@メンショントークと書いていますが、結局は <at>user@example.com</at>な文字列なので、部分的にサポートされているTemplatingが使えます。

アクションの入力にある 「メッセージ」には、Key:Valueを指定してデザイナー内でそのデータを呼び出すということができますが、メンションでも同様に「ユーザーの@メンショントークンを取得する」の結果を利用して、応答を待つカードの中にメンショントークンを追加することができます。

f:id:mofumofu_dance:20200710232251p:plain

f:id:mofumofu_dance:20200710232542p:plain

おわり

仕様追加にともない、非常に簡単にPower Automateから送信できるようになったTeamsの@メンション。 とにかく覚えておくことは、

「ユーザーの@メンショントークンを取得する」で取得した結果を挿入

チャンネルやチームへのメンションはできない

利用先のアクションは以下4種

  1. メッセージを投稿する (V3)
  2. メッセージをフロー ボットとしてチャンネルに投稿する
  3. 独自のアダプティブ カードをフロー ボットとしてチャンネルに投稿する
  4. アダプティブ カードを Teams チャネルに投稿して応答を待機