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トークンを取得
![suzukiスクリーンショット 2022-12-18 223153.png](/FrogTechLog/img/3634bc58b29e346618b0e860db73715bae8f3460.png)
チャットやチャネルにアダプティブカードを投稿する
![suzukiスクリーンショット 2022-12-18 224020.png](/FrogTechLog/img/eb9e20b381a395ebf16b7dc696c726345f493de7.png)
- 投稿者:メッセージの送信元のことです。フローボットもしくはユーザーを選択します。
- 投稿先:メッセージをどこに投稿したいかを選択します。チャット・グループチャット・チャネルのいずれかを選択します。
- 上記で選択した内容によって入力項目が変わります。チームIDやメールアドレス等適切なものを入力・選択してください。
- アダプティブカード:Adaptive Card Designerで作成したJsonを貼り付けます。
Jsonの一部を上記で取得した@mentionトークンと入れ替える
![suzukiスクリーンショット 2022-12-18 225349.png](/FrogTechLog/img/11dcc09d97dad1e99821562c7e32cac364db56d2.png)
![suzukiスクリーンショット 2022-12-18 225707.png](/FrogTechLog/img/a2775ec382e5d7c5b0e81d925da348071009de7b.png)
![suzukiスクリーンショット 2022-12-18 230033.png](/FrogTechLog/img/367b17fa9520437b8f50156c75ecf9a095f253e6.png)
![suzukiスクリーンショット 2022-12-19 223429.png](/FrogTechLog/img/ea4c19c3af81fc6d378655f26e70e13f356ad51b.png)
![suzukiスクリーンショット 2022-12-18 231240.png](/FrogTechLog/img/88bd5de1aac62d052bbcb0cc29532336eae6f65c.png)
メンションをつける相手が不特定多数の場合
チャットやチャネルにアダプティブカードを投稿する
![suzukiスクリーンショット 2022-12-18 224020.png](/FrogTechLog/img/eb9e20b381a395ebf16b7dc696c726345f493de7.png)
- 投稿者:メッセージの送信元のことです。フローボットもしくはユーザーを選択します。
- 投稿先:メッセージをどこに投稿したいかを選択します。チャット・グループチャット・チャネルのいずれかを選択します。
- 上記で選択した内容によって入力項目が変わります。チーム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": "【表示名】"
}
}
]
}
}
表示名の取得方法は?
![suzukiスクリーンショット 2022-12-19 225219.png](/FrogTechLog/img/5946719e16c50f630247eda423239d6f4c1fa810.png)
![suzukiスクリーンショット 2022-12-19 232039.png](/FrogTechLog/img/9a1f63de893e04a0f205b640a6c1d3af206c8ae0.png)
*枠外では変数の初期化とかをしています。
メンションつけたい人のメールアドレスを取得して、アダプティブカードに最終的に設置するために配列変数に追加していきます。
![suzukiスクリーンショット 2022-12-19 235353.png](/FrogTechLog/img/f3f71bb8cdfa4f3abaabf6ad68e7e1b22864fa53.png)
join(variables('メンション表示用の配列'),'、')
![suzukiスクリーンショット 2022-12-20 000616.png](/FrogTechLog/img/a65a3fe5dbfe1928d5208b7b70bef81d51535182.png)
join(variables('メンションプロパティ用の配列'),',')
![suzukiスクリーンショット 2022-12-20 000800.png](/FrogTechLog/img/baa058eb6d83fa3e67790dc32a82344318d11be5.png)
{
"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('メンションプロパティ文字列')}
]
}
}
![suzukiスクリーンショット 2022-12-20 001020.png](/FrogTechLog/img/3976f5a2127b8298d3e2b077adce50d4377b6080.png)
![suzukiスクリーンショット 2022-12-20 001359.png](/FrogTechLog/img/e8761cd3b47192a1ba559a49ee3a4c885f5ca5cf.png)
フォローしませんか?
お気軽にご依頼・ご相談ください