Power AutomateでAdaptive CardsにメンションをつけてTeamsに投稿してみる
こんにちは!
フロッグポッドの鈴木です。
今回はタイトルにあるようにアダプティブカードを使ってTeamsにメンション付きで投稿しようとおもいます。
はじめにアダプティブカードの概要ですが、下記が公式にのっている概要の一部を引用したものです。
アダプティブ カードは、ボットまたはメッセージの拡張機能を介してスレッドに追加できる、アクション可能なコンテンツのスニペットです。 これらのカードは、テキスト、グラフィック、ボタンを使用して、対象ユーザーにリッチなコミュニケーションを提供します。
引用元:アプリのアダプティブ カードのデザイン - Teams | Microsoft Learn
ざっくりとした説明にはなってしまいますがAutomateでチャットや通知を送信する際にアダプティブカードを使用することで、カードタイプのメッセージを自作してTeamsに投稿できるのですが、その中に画像を挿入したり、文字だけでなくテキストボックスやボタン等のコントロールを使用して入力フォームのようなものを作成したりお洒落なメッセージを作成したり...といったことがアダプティブカードを使用することで可能になります。
ということで、さっそく本題のアダプティブカードにメンションをつけて送信してみたいと思います。
まず初めに、以下のパターンがあると思います。
- メンションをつけたい相手が決まっていて固定な場合
- メンションをつける相手が不特定多数の場合
不特定多数の場合はちょっと手順が増えるので、まずは固定の場合を説明させていただきます。
メンションをつけたい相手が決まっていて固定な場合
アダプティブカードを作成します。
Adaptive Card DesignerというGUIベースでアダプティブカードを作成できるサイトがあり、そちらを使用して作成しました。
下記が作成したアダプティブカードとJsonです。
アダプティブカード
Json
{"type": "AdaptiveCard","$schema": "http://adaptivecards.io/schemas/adaptive-card.json","version": "1.4","body": [{"type": "TextBlock","text": "ここにメンションをいれる","wrap": true},{"type": "TextBlock","text": "【業務連絡】メンション送信用テストです。","wrap": true}]}
いろいろとコントロールを追加するとごちゃごちゃしてしまうので、シンプルイズベストなものを作成しました。
ユーザーの@mentionトークンを取得
チャットやチャネルにアダプティブカードを投稿する
- 投稿者:メッセージの送信元のことです。フローボットもしくはユーザーを選択します。
- 投稿先:メッセージをどこに投稿したいかを選択します。チャット・グループチャット・チャネルのいずれかを選択します。
- 上記で選択した内容によって入力項目が変わります。チームIDやメールアドレス等適切なものを入力・選択してください。
- アダプティブカード:Adaptive Card Designerで作成したJsonを貼り付けます。
Jsonの一部を上記で取得した@mentionトークンと入れ替える
メンションをつける相手が不特定多数の場合
チャットやチャネルにアダプティブカードを投稿する
- 投稿者:メッセージの送信元のことです。フローボットもしくはユーザーを選択します。
- 投稿先:メッセージをどこに投稿したいかを選択します。チャット・グループチャット・チャネルのいずれかを選択します。
- 上記で選択した内容によって入力項目が変わります。チームIDやメールアドレス等適切なものを入力・選択してください。
- アダプティブカード:Adaptive Card Designerで作成したJsonを貼り付けます。
Jsonの一部を下記の情報に置き換える
固定メンバーの時に@mentionの項目を置いた場所に<at>表示名</at>の形でJsonの中身を変更します。
"body"の後ろに"msteams"の項目も追加します!
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "<at>【表示名】</at>",
"wrap": true
},
{
"type": "TextBlock",
"text": "【業務連絡】メンション送信用テストです。",
"wrap": true
}
],
"msteams": {
"entities": [
{
"type": "mention",
"text": "<at>【表示名】</at>",
"mentioned": {
"id": "【メールアドレス】",
"name": "【表示名】"
}
}
]
}
}
表示名の取得方法は?
*枠外では変数の初期化とかをしています。
メンションつけたい人のメールアドレスを取得して、アダプティブカードに最終的に設置するために配列変数に追加していきます。
join(variables('メンション表示用の配列'),'、')
join(variables('メンションプロパティ用の配列'),',')
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "@{variables('メンション表示用文字列')}",
"wrap": true
},
{
"type": "TextBlock",
"text": "【業務連絡】メンション送信用テストです。",
"wrap": true
}
],
"msteams": {
"entities": [
@{variables('メンションプロパティ文字列')}
]
}
}
フォローしませんか?
お気軽にご依頼・ご相談ください